Rowland: Offene Aufträge in erledigte Aufträge

Beitrag lesen

Hey Batman,

ich habe eine Tabelle wo offene Aufträge drinnen sind, wie geht das dass ich die mittels Checkbox anklicken kann und diese dann in erledigte verschwinden?

Du brauchst für die Aufträge ja einen Kontrollparameter ob der Auftrag erledigt ist oder nicht. Du arbeitest sicher mit einer Datenbank wie MariaDB/MySQL (ich nehme das mal an), dann kannst du eine Spalte anhängen und für YES = Erledigt und für NO = Nicht erledigt nehmen - oder wie du möchtest. Standardmäßig sollte dann dieser Wert nach diesem Beispiel in der Tabelle NO eingestellt sein. In der Regel macht man das aber einfach mit den Zahlen 1 = YES und 0 = NO.

Wenn du die Datensätze danach anklickst und anschließend absendest, kannst du den Wert einfach auf YES, 1 oder wie auch immer updaten.

-> Suche nach SQL Update.

Wenn du das anders machst, folgt es dem gleichen Schema. Du musst irgendwo einen Wert haben der zu dem Datensatz gehört und markiert, dass er erledigt ist oder nicht.

Die Checkboxen versiehst du mit gleichem Namen und anschließend rechteckiger Klammern. Du solltest sie als array benutzen und dann prüfen, welcher Datensatz des arrays ausgewählt wurde. Jede Checkbox hat ja auch einen anderen value Wert, z.B. wird darin die ID des Datensatzes gespeichert, den du über die Datenbank ausgegeben hast - sonst weißt du ja nicht welcher Datensatz wem gehört.

z.B.

name='erledigt[]' value='ID_1'  
name='erledigt[]' value='ID_2'  
name='erledigt[]' value='ID_3'

Wenn du dann die Daten abschickst, "weiß" PHP ob du einen Datensatz markiert hast oder nicht. Zähl die Datensätze durch, die du hast. Dazu nutzt du eine for-schleife mit $ID<sizeof($_POST['erledigt']) und gehst jeden Datensatz durch.
In der Schleife prüfst du, ob der Datensatz markiert wurde. Das kannst du mit isset($_POST['erledigt'][$ID] prüfen. Wenn ja, dann kannst du den Datensatz updaten.

Meine Empfehlung ist, statt es direkt in der for-schleife zu machen und so jeden Datensatz einzeln zu updaten, die Datensätze zu sammeln und anschließend in einer einzelnen Abfrage zu updaten. Das macht die Sache schneller.

VE,
Rowland