2016-04-07 21 views
0

Ich erzeuge eine Tabelle aus einer SQL Select-Anweisung, aber auch ein Kontrollkästchen für jede Zeile, so dass Zeilen ausgewählt werden können, aber ich kann nicht herausfinden, wie Sie jede Zeile durchlaufen Diese generierte Tabelle, um zu sehen, ob das Kontrollkästchen aktiviert ist.Zugriff auf HTML-Tabellendaten in PHP

Ist das möglich?

Ich weiß, wie man die Tabelle erstellt, auffüllt und wie man die Schaltfläche überprüft. Ich kann einfach nicht herausfinden, wie man auf die Zelle zugreift, in der sich die Schaltfläche in jeder Zeile befindet.

Ich kann nicht jedes Kontrollkästchen erstellen individuell, wie sie zusammen mit der Tabelle erstellt werden, wenn durch die Reihen von meinem SQL SELECT

+0

Und was hast du probiert? –

+1

Das hängt davon ab, wie die Daten angeordnet sind. Optionsfelder sind so konzipiert, dass der Benutzer nur einen auswählen kann. Suchen Sie einfach nach dem ausgewählten. Wenn Sie mehrere Auswahlmöglichkeiten haben möchten, können Sie die Kontrollkästchen verwenden, um sie als Array miteinander zu verbinden, indem Sie '[]' am Ende des Namens und den Wert als ID hinzufügen und dann durch den '$ _POST ['checkbox_name']'. –

Antwort

0

Looping Wenn Sie die Eingaben zusammen verwenden mögen verknüpfen eine Radio Taste mit einem Array durch Hinzufügen [] nach dem Namen. d. h. <input type="radio" name="foo[]" /> Sie können dann mit einer foreach-Schleife auf das Array zugreifen.

Wenn Sie eine Prüfung verwenden möchten -Box sie alle den gleichen Namen auch in einem Array mit [] geben, und die jeweils eine unterschiedliche value Attribut. Sie können auf die Werte mit einer foreach-Schleife zugreifen.

(In beiden Fällen müssen Sie einen Standardwert in einem versteckten Eingang vor jedem Optionsfeld. Andernfalls wird Ihr Array unmöglich ist, nur zu verwenden, wie PHP-Radio-Buttons ausgewählt liest.)

+0

Sieht so aus, als müsste ich eine Checkbox benutzen, ich habe vergessen, dass man nur einen Radio Button auswählen kann. Das Problem, das ich habe, ist die Tabelle wird nur generiert, während die Zeilen durch meine SELECT-Anweisung durchlaufen, so dass ich die Kontrollkästchen nicht individuell erstellen kann. – DSTL

+0

Sie könnten einen Zähler hinzufügen, der bei jeder Iteration 1 hinzufügt. Oder verwenden Sie einen Wert aus Ihrer SQL-Zeile als Wert. – MartijnICU

+0

Das macht Sinn, ich kann eine Variable jedes Mal erhöhen, wenn es fortfährt, eine neue Zeile zu generieren. Ich bin mir nicht sicher, wie ich eine foreach-Schleife verwenden könnte, um auf die Werte zuzugreifen? – DSTL

0

Erstens, ich werde diese isn zugeben Das ist der beste Weg, um das zu erreichen, aber es wird dein Problem gelöst haben.
Zweitens, ich schlage vor, Sie ändern das HTML-Eingabeelement zu type="checkbox". Um der Lage sein, zu wissen, welche überprüft wurden, müssen Sie Ihren Code anzupassen, etwas sehen aus wie folgt:

<!-- HTML part --> 
<form action="" method="post"> 
    <!-- we need the form as the parent to the table so content can be posted to the server --> 
    <table ....> 
     <thead> 
      <tr> 
       <th>&nbsp</th> <!-- we'll put our checkboxes in this column of the table --> 
       ... 
      </tr> 
     </thead> 
     <tbody> 
      <?php 
       foreach ($rows as $row) { 
      ?> 
      <tr> 
       <td><input type="checkbox" name="chkSelect[]" value="<?php echo $row['id']; ?>" /></td> 
       .... 
      </tr> 
      <?php 
       } 
      ?> 
     </tbody> 
    </table> 
    <button type="submit" name="btnDelete" value="">Delete</button> <!-- This is assuming we're trying to delete the selected items --> 
</form> 
<!-- HTML end --> 

An diesem Punkt haben wir unser Formular bereit; Beachten Sie, dass der Checkbox-Name die [] hinter sich hat, dies erlaubt es, als ein Array auf der PHP-Seite verarbeitet zu werden.
Auf der PHP-Seite, müssen Sie einfach wie so Ihre normale Form der Verarbeitung tun:

if (filter_has_var(INPUT_POST, 'btnDelete')) { 
    $checkedIds = filter_input(INPUT_POST, 'chkSelect', FILTER_DEFAULT, FILTER_REQUIRE_ARRAY); 
    // if we loop through the array, we can see the selected item ids 
    var_dump($checkedIds); 
} 

Hope this beantwortet Ihre Frage, glücklich Codierung! ;)

+0

Danke, das hat einige meiner Fragen geklärt.Ich bin ein bisschen nicht vertraut mit wie Sie Ihre Formularverarbeitung machen. Soweit mir bekannt ist filter_has_var ist ähnlich wie isset? Was macht der filter_input? Danke :) – DSTL

+0

@fesil 'filter_has_var' überprüft, ob es eine Variable [wirklich ein Array-Schlüssel] mit diesem Namen in der angegebenen Superglobal gibt. 'filter_input' ist der bevorzugte Weg, um jetzt auf Superglobale zuzugreifen, anstatt' $ checkedIds = $ _POST ['chkSelect']; '. Die anderen Parameter, die ich an "filter_input" übergeben habe, waren so, dass ich den Wert als ein Array im Gegensatz zu einem einfachen Typ erhalten konnte. Sie können mehr über 'filter_input' hier lesen - http://php.net/manual/en/function.filter-input.php –

+0

Ich bin gerade zurück zu diesem Thema. Okay, ich verstehe das alles, aber ich bin mir nicht sicher, wohin ich von hier gehe. Sobald ich die Tabelle durchlaufen habe, möchte ich die IDs hinzufügen, die zu einem Array ausgewählt sind, die ich dann in einer Datenbank speichern kann. ist $ checkedIds ein Array hier? – DSTL