2017-02-21 1 views
0

Ich möchte eine Liste von Datenbankergebnissen auf meiner Website erstellen. Die maximale Anzahl von Ergebnissen, die zurückkommen wird, ist 5, und ich möchte, dass der Benutzer in der Lage ist, die Reihenfolge zu wählen, in der sie angezeigt werden. Dazu habe ich in meiner Datenbanktabelle eine "Bestell" -Spalte, mit der die Bestellung auf 1, 2, 3, 4 oder 5 gesetzt werden kann. Wenn die Liste abgerufen wird, wird zuerst 1 usw. angezeigt.Datenbankreihenfolge einstellen

Nun, was ich versuche zu tun, ist es, wenn Sie die Spalte, die als "3" bestellt ist, löschen, dann werden die beiden bei 4 und 5 bestellten Spalten automatisch zu 3 und 4 geändert. Wenn der Benutzer dann eingibt neues Ergebnis in die Datenbank, es wird überprüft, wie viele Einträge dort sind und dann wissen, ob es 4 findet, der nächste muss als "5" bestellt werden. Oder wenn es 2 Ergebnisse gibt, muss der nächste als "3" bestellt werden.

Dieser letzte Teil ist einfach genug und ich kann das tun, was ich nicht tun kann, ist die Spalten anpassen, wo es keine Zahlen überspringt.

Momentan benutze ich den typischen Weg, um Spalten zu löschen ... Gibt es etwas, das ich hinzufügen könnte, das lösen könnte, was ich tun möchte?

$sql = $this->dbh->prepare("DELETE FROM ". $this->config['db']['table4'] ." WHERE ". $this->config["db"]["columns"]["id"] ."= '$shift'"); 

Antwort

2

Verwendung Zeilennummer anstelle der Spaltennummer, so dass Sie die Zahlen nicht verwalten müssen

SELECT 
    @i:[email protected]+1 AS iterator, 
    t.* 
FROM 
    tablename AS t, 
    (SELECT @i:=0) AS foo