"checked" in SQL Abfrage

Registrierer

Erfahrenes Mitglied
Hallo Wissende ;-)
ich hab eine Abfrage die funktioniert,
PHP:
echo "<form method=\"post\" action=\"\">";
$abfragex="SELECT * FROM users WHERE UserID NOT LIKE $user";
$benutzer = mysql_query($abfragex);
while($row = mysql_fetch_array($benutzer))
{echo "<input type=\"checkbox\" name=\"Benutzer1[]\" value=\"".$row['UserID']."\"> ".$row['UserName']."<br>\n";}
echo "</form>";
auch das auslesen des Arrays bzw. deren Werte funktioniert und ich kann sie in die Datenbank schreiben.
PHP:
if (isset($_REQUEST['Benutzer1'])) {reset($_REQUEST['Benutzer1']); foreach ($_REQUEST['Benutzer1'] as $check) {print $check.'<br>';}}
Was ich aber nicht hinbekomme ist, wenn das Formular abgeschickt wird die vorher bereits aktivierten Checkboxen auch aktiviert bleiben.
Mit
PHP:
$array1 = array ($_REQUEST['Benutzer1']);
print_r($array1);
bekomme ich zwar die Werte, aber wie ordne ich sie zu, so dass "checked" im richtigen Datensatz steht?
 
PHP:
echo "<form method=\"post\" action=\"\">";
$abfragex="SELECT * FROM users WHERE UserID NOT LIKE $user";
$benutzer = mysql_query($abfragex);
while($row = mysql_fetch_array($benutzer))
{
echo "<input type=\"checkbox\" name=\"Benutzer1[]\" value=\"".$row['UserID']." \"> ".$row['UserName']."<br>\n";
}
echo "</form>";

versuch es mal so:
PHP:
echo "<input type=\"checkbox\" name=\"Benutzer1[]\" value=\"".$row['UserID'];
if(isset($_POST['Benutzer1'])) echo " checked=\"checked\" ";
echo "\"> ".$row['UserName']."<br>\n";
 
Hi,

verstehe ich das richtig, dass die Checkboxen im HTML-Formular angekreuzt bleiben sollen?

PHP:
echo "<input type=\"checkbox\" name=\"Benutzer1[]\" value=\"".$row['UserID']."\"";
if(! empty($_POST['Benutzer1']) && in_array($row['UserID'], $_POST['Benutzer1'])) {
   echo ' checked';
}
echo '>';

LG
 
Danke, aber dann sind entweder alle oder keiner ausgewählt.
Das funktioniert leider nicht in einem Array oder einer Abfrage...
 
Hi,
verstehe ich das richtig, dass die Checkboxen im HTML-Formular angekreuzt bleiben sollen?
@kuddeldaddeldu

Ja genau, es werden natürlich noch mehr Parameter abgefragt und wenn diese nicht erfüllt sind wird das Formular wieder angezeigt und die Checkboxen sind jedesmal alle leer.
Mit
PHP:
if(isset($_POST['Benutzer1'])) echo " checked=\"checked\" ";
geht das ja leider nur in separaten Feldern.
Deine Variante funktioniert, Danke! Warum weisst Du immer alles;)
 
Hi,

Deine Variante funktioniert, Danke!

Gerne.

Warum weisst Du immer alles;)

Na ja, das ist nun ehrlich gesagt schon ein Standardproblem. Da Du ja schon rausgefunden hattest, wie man logisch zusammengehörige Checkboxen schön in ein Array übergeben bekommt, hättest Du da früher oder später auch selbst drauf kommen können. Einfach mal etwas öfter in der Funktionsreferenz des PHP-Manuals stöbern...

LG
 
Leg den Index für die Checkboxen mit fest. Dann hast du hinterher eine eindeutige Zuweisung, die du ausnützen kannst.

also erst
PHP:
echo "<input type=\"checkbox\" name=\"Benutzer1[$nummer]\" value=\"".$row['UserID']." \"> ".$row['UserName']."<br>\n";
und dann
PHP:
if(isset($_POST['Benutzer1'][$nummer])) echo " checked=\"checked\" ";
 
Zurück