IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

jQuery Discussion :

Drag and Drop sauvegardé en base


Sujet :

jQuery

  1. #1
    Nouveau membre du Club
    Inscrit en
    Avril 2008
    Messages
    54
    Détails du profil
    Informations forums :
    Inscription : Avril 2008
    Messages : 54
    Points : 26
    Points
    26
    Par défaut Drag and Drop sauvegardé en base
    Bonjour,

    Je fais des tests avec la librairie JQuery et je suis confronté à un problème.

    Le but étant de pouvoir bouger l'image et enregistrer automatiquement sa position dans une base de données MySql.

    Toute cette étape fonctionne excepté que lorsque je recharge ma page et donc positionne l'image au dernier enregistrement, il y a un gros décalage d'environ 20 pixels en haut comme à gauche.

    Voici le code :

    Index.php :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
     
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
         "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
    <html>
    	<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-15" />
    	<head>
    		<script type="text/javascript" src="js/jquery.js"></script>
    		<script type="text/javascript" src="js/jquery-ui-1.8.13.custom.min.js"></script>
    		<script type="text/javascript" src="js/draggable.js"></script>
    		<script type="text/javascript" src="js/position.js"></script>
    		<link rel="stylesheet" href="css/reset.css" type="text/css" />
    		<link rel="stylesheet" href="css/jquery-ui.css" type="text/css" />
    		<link rel="stylesheet" href="css/test.css" type="text/css" />
    		<title>Systeme documentaire</title>
    	</head>
    	<body>
    			<?php	
    				try
    					{
    						$connection = new PDO('mysql:host=localhost;dbname=test', 'root', '');
    						$connection->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
    						$statement = $connection->query("SELECT id_identifiant, id_outil, posX, posY FROM identifiants WHERE id_page IN (SELECT id_page FROM pages WHERE nom = 'cartographie')");  
    						$statement->setFetchMode(PDO::FETCH_ASSOC);
     
    							while($row = $statement->fetch()) 
    							{  
    								$id_outil = $row['id_outil'];
    								$id_identifiant = $row['id_identifiant'];
    								$posX = $row['posX'];
    								$posY = $row['posY'];
    								$statement2 = $connection->query("SELECT nom, ext FROM outils WHERE id_outil = '$id_outil'");
    								$statement2->setFetchMode(PDO::FETCH_ASSOC);
    								$row2 = $statement2->fetch();
    								$img = $row2['nom'].'.'.$row2['ext'];
    								?>
    								<img id="draggable" onclick="position('<?php echo $id_identifiant; ?>')" style="top: <?php echo $posY; ?>px; left:<?php echo $posX; ?>px" src="img/<?php echo $img; ?>">
    								<?php   
                                                            }
                                            }
                                    catch(Exception $e)
                                            {
                                                    die('Erreur : '.$e->getMessage());
                                            }
     
     
                            ?>
    	</body>
    </html>
    Fonction position :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
     
    function position(idIdentifiant)
    {
    	jQuery.fn.extend({
    	   findPos : function() {
    		   obj = jQuery(this).get(0);
    		   var curleft = obj.offsetLeft || 0;
    		   var curtop = obj.offsetTop || 0;
    		   while (obj = obj.offsetParent) {
    					curleft += obj.offsetLeft
    					curtop += obj.offsetTop
    		   }
    		   return {x:curleft,y:curtop};
    	   }
    	});
    	var myObj = document.getElementById("draggable");
    	pos = $(myObj).findPos();
    	var posX = pos.x;
    	var posY = pos.y;
    	if(idIdentifiant != "")
    	{
    	$.ajax({
    				type: "POST",
    				url: "http://localhost/fonctions_php/update_position.php",
    				data: "id_identifiant="+idIdentifiant+"&posX="+posX+"&posY="+posY,
    			});
    	}
    };
    Fonction draggable :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    $(function() {
    	$("#draggable").draggable();	
    });
    Update position :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
     
    if(isset($_POST['id_identifiant']) && isset($_POST['posX']) && isset($_POST['posY']))
    	{
    		try
    			{
    				$connection = new PDO('mysql:host=localhost;dbname=test', 'root', '');
    				$connection->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
    				$posX = $_POST['posX'];
    				$posY = $_POST['posY'];
    				$id_identifiant = $_POST['id_identifiant'];
    				$connection->query("UPDATE identifiants set posX = '$posX', posY = '$posY' WHERE id_identifiant = '$id_identifiant'"); 
    			}
    		catch(Exception $e)
    			{
    				die('Erreur : '.$e->getMessage());
    			}
     
    	}
    Je fais un reset.css avant tout que j'ai téléchargé sur le net.

    Je ne vois vraiment pas d'où viens ce décalage.

    Je vous joint l'archive avec la base et le code si vous voulez tester.

    Merci d'avance pour votre aide.

  2. #2
    Nouveau membre du Club
    Inscrit en
    Avril 2008
    Messages
    54
    Détails du profil
    Informations forums :
    Inscription : Avril 2008
    Messages : 54
    Points : 26
    Points
    26
    Par défaut résolu
    J'avai mis des echos des position sur l'index.php et du coup ça faisais un décalage. L’erreur du débutant.
    Désolé pour le post inutile.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [WD18] Drag And Drop Sauvegarde
    Par Rokitdev dans le forum WinDev
    Réponses: 0
    Dernier message: 04/02/2014, 19h37
  2. Sauvegarder Drag and Drop
    Par max-mag dans le forum Ext JS / Sencha
    Réponses: 3
    Dernier message: 29/03/2011, 14h56
  3. Sauvegarde des positions après un Drag and Drop
    Par enok37 dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 06/07/2007, 10h26
  4. Drag and drop et stockage base de données
    Par ms7 dans le forum Flash
    Réponses: 2
    Dernier message: 31/01/2007, 15h32
  5. Drag and drop sauvegarde?
    Par isa150183 dans le forum Général JavaScript
    Réponses: 4
    Dernier message: 07/09/2006, 17h19

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo