PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : [PHP] Checkboxen prüfen



freddymc
02.08.2005, 20:49
Hallo!

Ich habe ein Script geschrieben mit dem man sich per session Management einloggen kann, weitere Benutzer hinzufügen und eigene Daten ändern kann.
Das Ganze soll für ein späteres News-Script o.ä. als "Autorisierung" dienen...

So, jetzt will ich als Admin ja auch mal andere Nutzer rauswerfen :devil: .
Dazu lese ich zunächst einmal alle Benutzer aus und hänge hinter jeden ausgegebenen Benutzer eine Checkbox.
Unter die Auflistung kommt dann noch ein "Löschen"-Button mit dem der ausgewählte/die ausgewählten Benutzer gelöscht werden.

Der Code zur Auflistung:

<form action="<?php $PHP_SELF ?>" name="" method="post">
<?php
while ($row=mysql_fetch_row($result)) {
###### if um zu verhindern, dass man sich selbst zum löschen auswählen kann
if ($row[1] != $userinsession) {
print ('<input name="cb[]" type="checkbox" value="'.$row[0].'" class="check"><label for="username" class="labelcheck">'.$row[1].'</label>');
print ('<br><hr><br>');
}
else {
print ('<input name="disabled" type="checkbox" disabled="true" value="'.$row[0].'" class="check"><label for="username" class="labelcheck">'.$row[1].'</label>');
print ('<br><hr><br>');
}
}
?>
<input type="submit" value="L&ouml;schen">
</form>

Die Checkbox hat als Namen "cb[]", sodass daraus nach dem posten ein Array daraus wird. Nun will ich gucken welche Checkboxen "gecheckt" wurden, um die dann aus der Datenbank zu löschen. Ich nehme an, dass ich hier foreach() verwenden muss/sollte... Aber ich hab absolut keinen Blassen wie ich das machen soll :( :hilfe2:

Hinzuzufügen wäre noch, dass ich wohl unter der Kategorie "blutiger-php-Anfänger" bzw. "Gelegenheits-Gästebuch-Programmierer" falle und ihr mir es sagen solltet, wenn's auch irgendwie anders geht.

Vielen Dank schonmal!

Fred

tr0nix
03.08.2005, 10:38
Nene das frisst er nicht! Du musst einen Counter machen und dann den namen der Checkbox entsprechend cb[$counter].

Anschliessend kannst du
foreach( $_REQUEST[cb] as $counter => $value )
...

Gruss
Joel

freddymc
05.08.2005, 12:46
Danke für die Antwort!
Er scheint es doch zu fressen:
wenn der name der checkboxen 'cb[]' lautet, wird der Wert der ersten angekreuzte Checkbox in 'cb[0]' gespeichert. Der zweite in 'cb[1]', usw. Nicht angekreuzte werden nicht übertragen und nicht im Array gespeichert.

So kann ich jetzt jeden Wert mit
foreach ($_POST['cb'] as $value) rauslöschen :D

Ich freu mich so :D

//edit: Warum verwenden viele bei foreach() immer $_REQUEST und nicht $_POST? Funktioniert das nicht auch?

tr0nix
06.08.2005, 22:49
Huuuuh? Das geht echt? Geil! Haett ich mir nicht gedacht..

$_REQUEST akzeptiert form method=post wie auch method=get. Sprich wenn deine Applikation auch via Direktlinks mit get-Variablen (Beispiel: index.php?page=test -> page ist der Name der GET Variable) ansprechbar sein soll ist dies der beste Weg.