enregistrement bdd position drag

Pour toutes les discussions javascript, jQuery et autres frameworks
Répondre
anti91
Messages : 3
Enregistré le : 13 juin 2019, 11:35

enregistrement bdd position drag

Message par anti91 » 13 juin 2019, 11:40

bonjour à tous ,

étant débutant en ajax, je tente d'enregistrer dans ma base les positions de mes images , mais cela ne fonctionne pas ....

j'ai fais plusieurs tentative , mais je n'arrive pas à résoudre se problème du à ma méconnaissance ....

ce petit fichier permet d'afficher des photos et de pouvoir les déplacer en drag dans l'ordre que l'on souhaite .

voilà ce que j'ai essayé de faire mais sans succès merci d'avance pour votre aide :-) )

formulaire :

Code : Tout sélectionner

<!doctype html>
<html>
<head>
<meta charset="utf-8">
<title>Document sans titre</title>
<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>
 
 
<!-- Styles de votre liste -->        
<style type="text/css" media="all">
 
     li{
  display: inline-block;
  margin-left: 10px;
  width: 10%;
}
</style>
 
</head>
 
<body>
<ul id="sortable" > 
<?php
include('connect.php');
$Id_bien = ('14');
 
$resultat=$pdo->query("SELECT * FROM photo_bien WHERE Id_bien = '".$Id_bien."'");
$resultat->setFetchMode(PDO::FETCH_OBJ);
while($result_bien = $resultat->fetch() )
{
 
?>
 
    <li  id="<?php echo $result_bien->Id_photo; ?>"><img width="150" src="<?php echo $result_bien->photo_bien; ?>"></li>
 <?php
}
?>
 
</ul>
<script type="text/javascript">
$(document).ready(function () {
    $('#sortable').sortable({
        axis: 'x',
        stop: function (event, ui) {
                var data = $(this).sortable('serialize');
            $.ajax({
                data: data,
                type: 'POST',
                url: 'set_position.php'
            });
        }
    });
});
</script>  
 
</body>
</html>
et le fichier de traitement :

Code : Tout sélectionner

<?
	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
webmaster
Administrateur du site
Messages : 609
Enregistré le : 28 févr. 2017, 15:19

Re: enregistrement bdd position drag

Message par webmaster » 14 juin 2019, 14:15

Bonjour,

Il faut d'abord identifier où est le blocage.
Je dirai que c'est dans la partie JS. La ligne var data = $(this).sortable('serialize'); ne retourne rien
Je la remplace par :
var data = $(this).position().left+"."+$(this).position().top;

Reste ensuite à gérer l'envoi par ajax
TJS : 25 ans et mon livre Tout JavaScript chez Dunod
https://www.toutjavascript.com/livre/index.php

Répondre