Ankündigung

Einklappen
Keine Ankündigung bisher.

jQuery sortable mit php+mysql

Einklappen

Neue Werbung 2019

Einklappen
X
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • jQuery sortable mit php+mysql

    Hallo,

    ich hab jetzt schon viel gesucht, gefunden und es nicht am laufen bekommen.
    ich habe hier folgendes script welches das update nicht in der datenbank durchführt.

    Code:
    <script type="text/javascript">
      $(document).ready(function() {
        $("#cat-list").sortable({
          handle : '.handle',
          update : function () {
    		  var order = $('#cat-list').sortable('serialize');
      		$("#info").load("content/admin/admin.portfolio.cats.update.php?"+order);
          }
        });
    });
    </script>
    PHP-Code:
    $sql "SELECT * FROM `portfolio_cats` ORDER BY id ASC";
    $abfrageergebnis mysql_query$sql ); 
    PHP-Code:
        <pre> 
            <div id="info"></div> 
        </pre> 
    <ul id="cat-list">
     <?php 
         
    while ($datensatz mysql_fetch_array$abfrageergebnis )) {    
        echo
    '
            <li id="catID_' 
    .htmlspecialchars$datensatz['id'] ). '">
            <img src="images/icons/drag_arrow.png" alt="move" width="16" height="16" class="handle" />
            <strong>' 
    .htmlspecialchars$datensatz['cat'] ). '</strong>
            <a class="del" href="?sub=admin.portfolio.cats&get=del.entry&id=' 
    .htmlspecialchars$datensatz['id'] ). '" onclick="return confirm(\'' .htmlspecialchars$datensatz['cat'] ). ': Löschen?\');"><img src="images/icons/close_mouse.png"></a></li>';
        }
    ?>
    </ul>
    Die admin.portfolio.cats.update.php:

    PHP-Code:
    include '../../_config/config.inc.php';
    include 
    '../../_config/funktions.inc.php';

    foreach (
    $_GET['catID'] as $position => $item) :
        
    $sql[] = "UPDATE portfolio_cats SET id = '$position' WHERE id = '$item'";
    endforeach;

    print_r($sql); 
    und das macht es, nur nicht in der datenbank. warum auch immer.
    PHP-Code:
    Array
    (
        [
    0] => UPDATE portfolio_cats SET id '0' WHERE id '1'
        
    [1] => UPDATE portfolio_cats SET id '1' WHERE id '2'
        
    [2] => UPDATE portfolio_cats SET id '2' WHERE id '0'
        
    [3] => UPDATE portfolio_cats SET id '3' WHERE id '3'
        
    [4] => UPDATE portfolio_cats SET id '4' WHERE id '4'
        
    [5] => UPDATE portfolio_cats SET id '5' WHERE id '7'


  • #2
    das ist aber nicht der komplette code oder? wo führst du denn den query des $sql arrays aus?

    ps: du solltest das $sql array auch vorher mit einem $sql = array(); erstellen - was aber nicht zu deinem fehler führen sollte. außerdem solltest du niemals variablen die von usern kommen direkt so verwenden.

    Kommentar


    • #3
      Zitat von jGeee Beitrag anzeigen
      das ist aber nicht der komplette code oder? wo führst du denn den query des $sql arrays aus?

      ps: du solltest das $sql array auch vorher mit einem $sql = array(); erstellen - was aber nicht zu deinem fehler führen sollte. außerdem solltest du niemals variablen die von usern kommen direkt so verwenden.
      natürlich ist es nicht der ganze code, alles wäre hier zu viel zu lesen
      wenn dir helfen sollte mir zu helfen schreib ich gerne die 160 zeilen hier rein
      zu den variablen die seite, und Änderungen kann man nur mit bestimmten rechten "admin" vornehmen.

      ich denke, der Fehler liegt irgendwo in der admin.portfolio.cats.update.php

      Kommentar


      • #4
        zeig wenigstens den code wo du die statements aus dem sql-array ausführst..

        Kommentar


        • #5
          Deine Frage ist zwar schon länger her, aber evtl. interessiert es andere:

          Dein Fehler lag in dem Update-Script.

          Schau mal was Dein Script da macht:
          PHP-Code:
          [0] => UPDATE portfolio_cats SET id '0' WHERE id '1' 
          ...
          [
          2] => UPDATE portfolio_cats SET id '2' WHERE id '0' 
          Schon haben wir zweimal die id '2'.

          OK, des Rätsels Lösung liegt einfach darin, dass Du die 'catID' als Zuordner für die Updates nutzt, denn $item ist nicht die vorherige Position, sondern die catID.

          update.php
          PHP-Code:
          ...
          foreach (
          $_GET['catID'] as $position => $item) :
              
          $sql[] = "UPDATE portfolio_cats SET id = '$position' WHERE [B]catID[/B] = '$item'";
          endforeach; 
          ... 
          Viel Spass damit!

          Kommentar

          Lädt...
          X