transmettre variable enfant ul en post

Eléphanteau du PHP | 18 Messages

14 juin 2019, 11:20

voilà , j'ai une page ou j'affiche des photos issu de ma base , avec une fonction sortable jquery .

tout fonctionne parfaitement .

dans la balise li on retrouve l'id de la photo , je souhaiterais récupérer l'id ainsi que la position de la photo .

mon problème c'est que je ne sais pas comment faire pour envoyer en post les infos de ma balise li ( enfant ul ) en js , j'ai bien chercher , mais

cela ne fonctionne pas .

je vous montre ce que j'ai essayer de faire , mais sans succès ...merci pour votre aide

Code : Tout sélectionner

<!doctype html> <html lang="en"> <head> <meta charset="utf-8"> <meta name="viewport" content="width=device-width, initial-scale=1"> <title>jQuery UI Sortable - Display as grid</title> <link rel="stylesheet" href="//code.jquery.com/ui/1.12.1/themes/base/jquery-ui.css"> <link rel="stylesheet" href="/resources/demos/style.css"> <style> #sortable { list-style-type: none; margin: 0; padding: 0; width: 800px; } #sortable li { margin: 3px ; padding: 1px; float: left; width: 150px; height: 150px; font-size: 4em; text-align: center; } </style> <script src="https://code.jquery.com/jquery-1.12.4.js"></script> <script src="https://code.jquery.com/ui/1.12.1/jquery-ui.js"></script> <script> $(document).ready(function () { $('#sortable').sortable({ onchange : function ( sorted ) { serial = $.SortSerialize ( 'sortable' ); // requète Ajax pour l'enregistrement des positions $.ajax ( { url : "position.php", type : "post", data : serial.hash, }); } }); }); </script> </head> <body> <ul id="sortable"> <?php include('connect.php'); $resultat=$pdo->query("SELECT * FROM photo_bien WHERE Id_bien = 14"); $resultat->setFetchMode(PDO::FETCH_OBJ); while($result = $resultat->fetch() ) { $dossier = $result->photo; $file = $result->photo_bien; $Id_bien = $result->Id_bien; $Id_photo = $result->Id_photo; ?> <li id="<?php echo $Id_photo; ?>" class="ui-state-default" ><img width="150" height="150" src="<?php echo $file; ?>"></li> <?php } ?> </ul> </body> </html>
et la page position.php

Code : Tout sélectionner

<?php include('connect.php'); $sortable = $_POST['sortable']; for ($i = 0; $i < count($sortable); $i++) { // SQL : $pdo->exec("update photo_bien set position ='".($i + 1)."' where Id_photo = '".$sortable[$i]."'"); } ?>

Avatar du membre
Mammouth du PHP | 976 Messages

14 juin 2019, 16:51

Salut, un
data: $('#sortable').serialize()
?
http://api.jqueryui.com/sortable/#method-serialize

Si je lis bien la doc, l'attribut id doit être de la forme
id="order_<?php echo $Id_photo ?>"
ainsi tu auras un tableau dans
$_POST['order']
avec les id dans l'ordre.
J'édite souvent mon message après avoir répondu pour le corriger où y apporter des informations complémentaires alors n'hésitez pas à y jeter un nouveau coup d'oeil ^^