Probleme mit Sortierung von News

Duxias

Mitglied
Hallo zusammen,

ich habe folgenden Code, um die Reihenfolge meiner Newsartikel zu verändern:
PHP:
function edit_sort($id, $move) {
      $id = (int)$id;
      $sql = "SELECT
                sortID
              FROM
                content
              WHERE
                ID = '".$id."'";
      $result = $this->_db->query($sql);
      $row = $this->_db->fetch_assoc($result);
      $old_sortid = $row['sortID'];
      if($move == 'up') {
        $new_sortid = $old_sortid - 1;
      } else {
        $new_sortid = $old_sortid + 1;
      }
      $sql = "UPDATE
               content";
      if($new_sortid < $old_sortid) {
        $sql .= "
              SET
                sortID = sortID + 1
              WHERE
                sortID >= '".$this->_db->escape($new_sortid)."'";
      } else {
        $sql .= "
              SET
                sortID = sortID - 1
              WHERE
                sortID > '".$this->_db->escape($old_sortid)."'
              AND
                sortID <= '".$this->_db->escape($new_sortid)."'";
      }
      $this->_db->query($sql);
      $sql = "UPDATE
                content
              SET
                sortID = '".$new_sortid."'
              WHERE
                ID = '".$id."'";
      $this->_db->query($sql);
      return true;
    }
Die Funktion erfüllt auch soweit ihren Zweck.
Doch wenn jetzt z.B. durch Löschen eines Beitrags, eine Lücke in der Reihenfolge der sortID´s entsteht (1,2,5,6) und ich versuche, den Beitrag mit der Nummer 5 nach vorne zu schieben, kriegt er ja nur die sortID 4, und nicht die 2, wie es sinnvoll wäre. Leider finde ich keinen Lösungsansatz, wie ich herausfinden kann, ob eine Lücke vorhanden ist, oder nicht. Ich hoffe ihr könnt mir helfen!

vielen Dank im Vorraus
Duxias
 
Warum benutzt du nicht ORDER BY in deinem SQL-Statement? SQL kann schon sortieren, warum dafür Rechenzeit in PHP verschwenden?
 
Ich verstehe deine Antwort nicht ganz. An welcher Stelle und mit welchem Sinn sollte ich deiner Meinung nach die ORDER BY Klausel einfügen?
Der Code den ich oben gepostet habe, verwende ich ja nur, um in meinem Adminmenü um die Reihenfolge zu ändern. Die Ausgabe erfolgt mit einer anderen SQL-Abfrage, in der ich die News dann natürlcih auch mit ORDER BY sortID sortiere!
 
Zuletzt bearbeitet:
Ja, genau das war es! Vielen Dank für den Link! Hab zwar gesucht, doch den entscheidenen natürlich nicht gefunden ;)
 
Zurück