Avatar billede kaktus Nybegynder
04. maj 2012 - 17:47 Der er 9 kommentarer

jquery drag and drop

Er det mugligt at få dette
http://papermashup.com/drag-drop-with-php-jquery/
drag and drop system til at virke med alm. html tabeller?

altså bruge
<table><tr><td>indhold</td></tr></table>
i stedet for
<ul><li>indhold</li></ul>

Bemærk at filen 'updateList.php' der opdatèr db, også skal virke med ændringen.
Avatar billede benzon Praktikant
04. maj 2012 - 17:50 #1
Tja når jeg går der ind, så bliver min antivirus ret hissig.

noget med lolotrololo.ddns.info som prøver og til tvinge sig adgang til computeren.
Avatar billede kaktus Nybegynder
04. maj 2012 - 18:11 #2
Ups ikke så godt....
Sker det samme på deres demo side???
http://papermashup.com/demos/jquery-drag-drop/
ellers må jeg paiste kode her og forsøge at få overblik via den vej...
Avatar billede kaktus Nybegynder
04. maj 2012 - 18:59 #3
Nedenstående skulle give en ide om hvad jeg mener......
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<title>jquery drag and drop</title>
</head>

<body>
<p>In this tutorial we're going to be looking at 2 main PHP pages. the index.php page which contains the contents and functionality to perform the drag and drop and the updateList.php file which is a simple piece of code to update the listOrder column in the database using PHP and MySQL. Additionally you will need to add your database details to the connect.php file in the download package.</p>
<pre>$(document).ready(function(){
      function slideout(){
  setTimeout(function(){
  $("#response").slideUp("slow", function () {
      });

}, 2000);}

    $("#response").hide();
    $(function() {
    $("#list ul").sortable({ opacity: 0.8, cursor: 'move', update: function() {

            var order = $(this).sortable("serialize") + '&update=update';
            $.post("updateList.php", order, function(theResponse){
                $("#response").html(theResponse);
                $("#response").slideDown('slow');
                slideout();
            });
        }
        });
    });

});
</pre>
<p>Here's a summary of whats going on in the code above.</p>
<ol>
  <li>To start with we have a simple function that will slide up the ‘response' div which contains the message once the data is saved in the database.</li>
  <li>We then move to the section that enables us to drag and drop the boxes. we then set the variable ‘order' which contains the data to be posted via ajax to our database update script.</li>
  <li>Once the ajax request has been executed we then display the response in the div #response</li>
</ol>
<p>This is the section in the index.php page that retrieves the results from the database in the correct order.</p>
<pre><div id="list">

  <div id="response"> </div>
  <ul>
    <?php
              include("connect.php");
              $query  = "SELECT id, text FROM dragdrop ORDER BY listorder ASC";
              $result = mysql_query($query);
              while($row = mysql_fetch_array($result, MYSQL_ASSOC))
              {

              $id = stripslashes($row['id']);
              $text = stripslashes($row['text']);

              ?>
    <li id="arrayorder_<?php echo $id;?>"><?php echo $id;?> <?php echo $text;?>
      <div class="clear"></div>
    </li>
    <?php } ?>
  </ul>
</div></pre>
<p>Below is the code from the ‘updateList.php' file. Its pretty self explanatory, we have a MySQL update script wrapped with a foreach loop which adds the list order number in the database and echo's the response. </p>
<pre><?php
  include("connect.php");
  $array  = $_POST['arrayorder'];
  if ($_POST['update'] == "update"){
  $count = 1;
  foreach ($array as $idval) {
  $query = "UPDATE dragdrop SET listorder = " . $count . " WHERE id = " . $idval;
  mysql_query($query) or die('Error, insert query failed');
  $count ++;
  }
  echo 'All saved! refresh the page to see the changes';
  }
  ?></pre>
  <p>And finally the sql for your database structure</p>
  <pre>
  SET NAMES latin1;
SET FOREIGN_KEY_CHECKS = 0;

CREATE TABLE `dragdrop` (
  `id` int(11) NOT NULL auto_increment,
  `text` varchar(255) default NULL,
  `listorder` int(11) default NULL,
  PRIMARY KEY  (`id`)
) ENGINE=MyISAM AUTO_INCREMENT=8 DEFAULT CHARSET=latin1;

insert into `dragdrop` values('1','Go Shopping','1'),
('2','Take the dog for a walk','2'),
('3','Go swimming','3'),
('4','Go to the Gym','4'),
('5','Pick up the wife from work','5'),
('6','Wash the car','6'),
('7','Take the kids to school','7');

SET FOREIGN_KEY_CHECKS = 1;
</pre>
</body>
</html>
Avatar billede mireigi Novice
04. maj 2012 - 21:19 #4
Jeg tror at du kan finde, hvad du søger her:
http://www.eksperten.dk/spm/961943#reply_7937994

Det er godt nok med divs i stedet for tabeller, men det er også mere Web 2.0.
Avatar billede kaktus Nybegynder
04. maj 2012 - 22:03 #5
TAK for link
Jeg har det hele til at virke med div`s og med ul`s (dog ikke på samme side)
OG ja div`s er mere moderne og web2 o.s.v.
MEN
tabeller har èn (måske kun en) fordel frem for div`s
output fra db er lettere at sætte pænt op i celler og rækker der udvider sig dynamisk samtidig. (står altid nydeligt under hinanden)
DETTE
kræver større css indsigt at lave med div`s og jeg er ikke en haj til dette.

ps. det der med tabeller vs. div`s kan starte en hel krig på meninger... :-)
Avatar billede olsensweb.dk Ekspert
05. maj 2012 - 12:33 #6
#5 ps. det der med tabeller vs. div`s kan starte en hel krig på meninger... :-)
der er ikke nogle grund til at starte en krig :)
førhen misbrugte man tabeller til design (nogle gør det stadig), tabeller er kun til tabulærer data.
så kommer dit output fra feks en db og du vil vise det som man ville se det i et regneark, ja så kunne tabeller være det rette, da det netop er tabulære data
Avatar billede mireigi Novice
05. maj 2012 - 13:22 #7
@ronols (#5):
Enig, men det er nemt at lave i DIVs, så længe der ikke er flettede celler :)

At IE så stadig ikke understøtter alle CSS display: table(-???) varianter er en anden sag :)
Avatar billede kaktus Nybegynder
05. maj 2012 - 14:42 #8
Hej og TAK for debat...
Jeg har faktisk fået det til at virke med div`s CSS display:table også i IE9 (nyeste) Tjaa somme tider er der da noget der virker i IE :-)

.table {
  display: table;
  width: 100%;
}
.tr {
  display: table-row;
  border: #666 1px solid;
  width:100%;
}
.td {
  display:table-cell;
  padding-right:5px;
  padding-left:5px;
  border-bottom:#666 1px solid;
}
Avatar billede mireigi Novice
05. maj 2012 - 16:01 #9
Ok, har ikke kigget på IE længe. Udvikler primært til FF/Chrome og bruger kun de ting jeg ved virker i andre browsere :)

Hvis du gerne vil undgå dobbelt-streger i din div tabel, kan du bruge dette:

.table {
  display: table;
  width: 100%;
}
.tr {
  display: table-row;
  width:100%;
}
.tr:first-child .td {
  border-top: 1px solid #666;
}
.tr .td:first-child {
  border-left: 1px solid #666;
}
.td {
  display:table-cell;
  padding: 0 5px;
  border-right: 1px solid #666;
  border-bottom: 1px solid #666;
}
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester