2017-09-10 1 views
1

J'essaie de créer une liste triable qui se met à jour par PDO (PHP Data Objects). J'ai essayé de mettre au point quelque chose, bien qu'il semble ne pas vouloir mettre à jour, et je ne sais pas où je me suis trompé. Drag fonctionne très bien, les données semblent fonctionner correctement. Juste ne le met pas à jour à la base de données.Ordre de mise à jour de PDO Jquery triable

fichier principal avec JQuery

<ul id="sortable"> 
<?php 
    $sql = "SELECT * FROM ".$prefix."question WHERE enabled = 1 ORDER BY sortby ASC"; 
    $stm = $dbh->prepare($sql); 
    $stm->execute(); 
    $u = $stm->fetchAll(); 

    $count = 0; 

    foreach ($u as $sup) {      
?> 
    <li id="item-<?php echo $sup['id']; ?>"><?php echo $sup['title']; ?></li> 
<?php } ?> 
</ul> 

<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> 
    $('#sortable').sortable({ 
    axis: 'y', 
    update: function (event, ui) { 
     var data = $(this).sortable('serialize'); 

     // POST to server using $.post or $.ajax 
     $.ajax({ 
      data: data, 
      type: 'POST', 
      url: 'order.php' 
     }); 
    } 
}); 
</script> 

fichier PHP [order.php] (La connexion à la base de données est très bien et fonctionne correctement)

<?php 
ob_start(); 
session_start(); 
$admin = true; 
require "inc/config.php"; 

$i = 0; 

foreach ($_POST['item'] as $value) { 
    // Execute statement: 
    // UPDATE [Table] SET [Position] = $i WHERE [EntityId] = $value 
    $sql = $dbh->prepare("UPDATE ".$prefix."question SET sortby='".$i."' WHERE id=1"); 
    $sql->execute(); 

    $i++; 
} 

?> 

Si quelqu'un pouvait voir ce que mon problème est, je Je l'apprécie vraiment.

+0

Vous souhaitez mettre à jour le contenu html par ajax? Est-ce que c'est ce que tu veux ? –

+0

Hm. Je veux avoir une liste triable JQUERY, que je peux faire glisser les listes dans l'ordre. Ce qui est fait. Ensuite, je veux que ces données soient mises à jour à la base de données, que j'utiliserai ajax à –

Répondre

0

A été en mesure de résoudre ce problème. Était en fait un problème avec la façon dont j'obtenais le config.php pour la base de données.

Le reste du code fonctionne.

0

Depuis que vous appelez fichiers sur ajax vous ne serez pas en mesure de voir des erreurs dans le order.php, et pour ce faire, vous devez changer votre appel ajax à ce qui suit:

$.ajax({ 
     data: data, 
     type: 'POST', 
     url: 'order.php', 
     success: function(data){ 
      alert(data); // for testing 
     } 
    }); 

Maintenant, je pense que votre problème est d'utiliser une instruction pdo prepare sans fournir de données pour l'instruction, vous devez fournir des données à la méthode execute, utiliser la liaison ou utiliser la méthode query à la place.

$sql = $dbh->prepare("UPDATE ".$prefix."question SET sortby= ? WHERE id=?"); 
$sql->execute([$i,1]); 

Vous pouvez également utiliser l'instruction de requête si vous avez d'autres moyens de désinfection de vos données:

$sql = $dbh->query("UPDATE ".$prefix."question SET sortby='".$i."' WHERE id=1"); 
+0

Salut merci pour votre réponse. J'ai fini par le résoudre. Le problème était en fait le config.php. Était en train de provoquer une erreur 501 sur la page order.php –

+0

Je suis content que vous l'ayez compris. :) –