2017-09-10 5 views
1

Ich versuche, eine sortierbare Liste zu erstellen, die von PDO (PHP Data Objects) aktualisiert wird. Ich habe versucht, etwas auszuarbeiten, obwohl es scheint, dass es nicht aktualisiert werden will, und ich bin unsicher, wo ich falsch gelaufen bin. Drag funktioniert gut, Daten scheinen korrekt zu funktionieren. Aktualisiert es einfach nicht in der Datenbank.Jquery sortierbare PDO Update-Reihenfolge

Hauptdatei mit 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> 

PHP-Datei [order.php] (Verbindung zur Datenbank ist in Ordnung und funktioniert einwandfrei)

<?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++; 
} 

?> 

Wenn jemand sehen kann, was mein Problem ist, ich Ich schätze es wirklich.

+0

Sie möchten die HTML-Inhalte über AJAX aktualisieren? ist es das was du willst ? –

+0

Hm. Ich möchte eine sortierbare JQUERY-Liste haben, die ich die Listen in der Reihenfolge ziehen kann. Was ist getan. Dann möchte ich, dass diese Daten auf die Datenbank aktualisiert werden, die ich Ajax verwenden werde, um –

Antwort

0

Konnte dies beheben. War eigentlich ein Problem damit, wie ich die config.php für die Datenbank bekommen habe.

Rest des Codes funktioniert.

0

Da Sie Dateien über Ajax-Aufruf Sie werden zu sehen, der Lage sein, Fehler in der order.php nicht, und zu tun, dass Sie Ihre Ajax-Aufruf an die folgende ändern müssen:

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

Jetzt das Problem, das ich denke, dass Sie eine PDO Prepared-Anweisung verwenden, ohne Daten für die Anweisung zu liefern, müssen Sie Daten an die Execute-Methode liefern, verwenden Sie Bindung oder verwenden Sie stattdessen die Abfrage-Methode.

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

Oder Sie können die Abfrage-Anweisung verwenden, wenn Sie andere Mittel haben Ihre Daten von Hygienisierung:

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

Hallo Danke für Ihre Antwort. Ich habe es gelöst. Das Problem war eigentlich die config.php. War tatsächlich ein 501 Fehler auf der Seite order.php –

+0

Ich bin froh, dass Sie es herausgefunden haben. :) –