Ich habe 1 Formular mit mehreren Kontrollkästchen (jedes mit dem Code):
<input type="checkbox" name="check_list" value="<? echo $row['Report ID'] ?>">
Wo $row['Report ID']
ist ein Primärschlüssel in einer Datenbank - also ist jeder Wert anders.
Wie kann ich feststellen, welche Kontrollkästchen aktiviert wurden? (Vielleicht mehrere)
Dies ist für ein Posteingangssystem und ich habe eine Schaltfläche darunter, mit der ich (wenn ich darauf klicke) alle Nachrichten (IDs von :) löschen möchte, bei $row['Report ID']
denen das Kontrollkästchen aktiviert ist.
$check
gleich iston
.if($_POST)
- nutzlos,$_POST
wird immer wahr sein. Sie sollten überprüfen, ob!empty($_POST['check_list'])
stattdessen.array_key_exists('check_list', $_POST) && !empty($_POST['check_list'])
empty()
verursacht diesen Fehler nicht. Aus dem Handbuch:empty() does not generate a warning if the variable does not exist.
Bearbeiten Um zu reflektieren, was @Marc im Kommentar unten gesagt hat.
Sie können alle angegebenen Werte durchlaufen.
HTML:
PHP:
quelle
[]
Syntax in der Felddefinition verwenden, wodurch PHP diesen $ _POST-Wert als Array erstellt. Andernfalls handelt es sich um einen einzelnen Nicht-Array-Wert, wodurch die foreach () -Schleife explodiert.Sie müssen Ihre Kontrollkästchen entsprechend benennen:
Sie können dann mit auf alle aktivierten Kontrollkästchen zugreifen
ps. Stellen Sie sicher, dass Sie Ihrer Ausgabe ordnungsgemäß entkommen (
htmlspecialchars()
)quelle
Und nach dem Beitrag können Sie sie durchlaufen:
Oder erhalten Sie einen bestimmten Wert von der vorherigen Seite:
quelle
Sorry, altes Thema, aber dies ist ein wichtiger Punkt, den ich erwähnen sollte, mit dem @JamesRattray und andere Probleme hatten.
Schließen Sie das
input
Tag NICHT selbst (mit/>
), wenn Sie versuchen, mehrere Werte im PHP-Skript zu veröffentlichen. Wenn Sie das Tag selbst schließen, wird die Array-Definition beendet und bei der Übermittlung wird nur ein einziger Wert in Ihr Skript geschrieben. Tatsächlich funktioniert die Antwort von @Scone möglicherweise erst, wenn die/>
geändert wird.Dies verursacht
Warning: Invalid argument supplied for foreach() in /home1/...
in diesem Fall den PHP-Fehler.EDIT: Wie in den Kommentaren unten erwähnt, deuten weitere Untersuchungen darauf hin, dass dies von DOCTYPE abhängt. Wenn Sie DOCTYPE für XHTML festgelegt haben, muss das Eingabe-Tag geschlossen sein. Wenn Sie DOCTYPE für HTML5 festgelegt haben, muss das Eingabe-Tag nicht geschlossen werden. Es besteht auch die Möglichkeit, dass dies davon abhängt, in welchem Browser der Benutzer die Seite anzeigt und wie gut sie dem im Code angegebenen DOCTYPE folgt.
quelle
Es ist ziemlich einfach. Achten Sie darauf und Sie werden es sofort bekommen! :) :)
Sie erstellen ein HTML-Array, das dann an das PHP-Array gesendet wird. Ihr HTML-Code sieht folgendermaßen aus:
Wo
[1] [2] [3]
sind dieID
s Ihrer Nachrichten, was bedeutet, dass Sieecho
Ihre$row['Report ID']
an ihrer Stelle werden.Wenn Sie dann das Formular senden, sieht Ihr PHP-Array folgendermaßen aus:
print_r($check_list)
[1] => checked [3] => checked
Je nachdem welche überprüft wurden und welche nicht.
Ich bin sicher, dass Sie von diesem Punkt an fortfahren können.
quelle
check_list[]
würdecheck_list[0]
eher mit als beginnencheck_list[1]
.En mi caso necesito que venga en un sólo tapfer, por lo tanto no me vale una matriz.
Con esto me aseguro que los valores sean 1 y separados por coma. Así en MySQL puedo hacer la Consulta, venga en matriz o no:
quelle