Bonjour !
J'ai trouvé quelques tutos sur le net pour créer une liste classabe qui mets à jour automatiquement la base de donnée.
Ça fonctionne bien sauf que à chaque mise à jour des positions de la liste, l'ordre est inversé systématiquement !
C'est dû au fait que je classe mes éléments de liste par ordre DESC et non pas ASC (si je classe en ASC, ça marche impec, pas de soucis).
J'ai vu quelque part qu'on pouvait inverser l'array contenant le nouvel ordre mais je ne sais pas comment faire ! Pourriez-vous m'aider ?
(j'ai suivi le tuto http://www.wil-linssen.com/extending-the-jquery-sortable-with-ajax-mysql/ )
Voici mes codes :
J'affiche ma liste à classer comme suit :
Je traite par :
(les codes SQL sont cracra, je sais, je les modifierai une fois que j'aurais réglé ce petit soucis
)
Merci d'avance !
Modifié par Sebastien_91 (20 Aug 2009 - 22:45)
J'ai trouvé quelques tutos sur le net pour créer une liste classabe qui mets à jour automatiquement la base de donnée.
Ça fonctionne bien sauf que à chaque mise à jour des positions de la liste, l'ordre est inversé systématiquement !
C'est dû au fait que je classe mes éléments de liste par ordre DESC et non pas ASC (si je classe en ASC, ça marche impec, pas de soucis).
J'ai vu quelque part qu'on pouvait inverser l'array contenant le nouvel ordre mais je ne sais pas comment faire ! Pourriez-vous m'aider ?
(j'ai suivi le tuto http://www.wil-linssen.com/extending-the-jquery-sortable-with-ajax-mysql/ )
Voici mes codes :
J'affiche ma liste à classer comme suit :
<?php require_once('Connections/SQL1000GP.php');
mysql_select_db($database_SQL1000GP, $SQL1000GP);
$sql = "SELECT * FROM novart_tableaux ORDER BY `ordre` DESC";
$result = mysql_query($sql)or die(mysql_error());
$number = mysql_num_rows($result);
$list = '';
for($x=1;$x<=$number;$x++){
$row = mysql_fetch_array($result);
$list.= '<div class="handle" id="listItem_' . $row{'id'} . '"><img src="'.$row['img_p'].'" class="handle" alt="" /></div>';
}
?>
<!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=utf-8" />
<title>Liste classable</title>
<link href="css/skin.css" rel="stylesheet" type="text/css" />
<script src="javascript/j/jquery.js" type="text/javascript"></script>
<script src="javascript/j/jquery-ui-1.7.2.custom.min.js" type="text/javascript"></script>
<script type="text/javascript">
// When the document is ready set up our sortable with it's inherant function(s)
$(document).ready(function() {
$("#imageFloatContainer").sortable({
handle : '.handle',
update : function () {
var order = $('#imageFloatContainer').sortable('serialize');
$("#imageFloatContainer").load("adm_traitement_classement.php?"+order);
}
});
});
</script>
</head>
<body>
<div id="imageFloatContainer">
<?php
echo $list;
?>
</div>
</body>
</html>
Je traite par :
<?php
require_once('Connections/SQL1000GP.php');
$sortme = $_POST['imageFloatContainer'];
// Connect to the database as necessary
$dbh = mysql_connect($hostname_SQL1000GP,$username_SQL1000GP,$password_SQL1000GP)
or die ("Unable to connnect to MySQL");
$selected = mysql_select_db($database_SQL1000GP,$dbh)
or die("Could not select sort_test");
/* This is where you would inject your sql into the database
but we're just going to format it and send it back
*/
foreach ($_GET['listItem'] as $position => $item) {
mysql_query("UPDATE novart_tableaux SET ordre = $position WHERE `id` = $item");
}
mysql_close($dbh);
?>
(les codes SQL sont cracra, je sais, je les modifierai une fois que j'aurais réglé ce petit soucis

Merci d'avance !
Modifié par Sebastien_91 (20 Aug 2009 - 22:45)