Checkboxen Array

morgenstern

Erfahrenes Mitglied
Hallo Leute.

ich habe zwar schon länger gesucht, finde aber nur ähnliche Probleme und kann diese leider nicht auf mein Beispiel umwandeln.

Also: Ich habe eine Tabelle mit dem namen laender, in dieser steht das Land und optionen von 1-3 (landID, land, p1,p2,p3)

Die optionen (p1, p2, p3) können entweder den Wert 1 oder 0 haben.

Nun mache ich eine Ausgabe auf der Seite: (den restlichen HTML Code lasse ich mal weg)
Code:
<form action="admin.php" method="post">
$sql = "SELECT land,p1,p2,p3 FROM laender ORDER BY land";
$result = mysql_query($sql, $conn);
while($table = mysql_fetch_array($result, MYSQL_ASSOC))
{
echo'<tr>
    <td width="200"><div align="center">'.$table['land'].'</div></td>
    <td width="100"><div align="center"><input name="p1[]" type="checkbox" value="1"'; if($table['p1'] == "1") { echo'checked'; } echo'></div></td>
    <td width="100"><div align="center"><input name="p2[]" type="checkbox" value="1"'; if($table['p2'] == "1") { echo'checked'; } echo'></div></td>
    <td width="100"><div align="center"><input name="p3[]" type="checkbox" value="1"'; if($table['p3'] == "1") { echo'checked'; } echo'></div></td>
  </tr>';
}

Dies funktionert auch ohne Probleme.

Nun möchte ich aber, dass man diese Optionen verändern kann. Also das Land Albanien bekommt nun Option p2 und p3 hinzu.

Ich habe dies mit dem array p1[] usw versucht, nur weiss ich nicht wie ich die Datenbank mi UPDATE verändern kann, dass diese Werte übernommen werden.

Ich hoffe dies war verständlich genug.

Danke.
 
Ok,
sow wie ich dich jetzt verstanden habe, möchtest Du gerne für jedes Land die Optionen p1..p3 indivduell setzen.

Ich würde das wie folgt machen:

PHP:
<form action="admin.php" method="post">
$sql = "SELECT land,p1,p2,p3 FROM laender ORDER BY land";
$result = mysql_query($sql, $conn);
while($table = mysql_fetch_array($result, MYSQL_ASSOC))
{
echo'<tr>
    <td width="200"><div align="center">'.$table['land'].'</div></td>
    <td width="100"><div align="center"><input name="laender['.$table['land'].'][]" type="checkbox" value="p1"'; if($table['p1'] == "1") { echo'checked'; } echo'></div></td>
    <td width="100"><div align="center"><input name="laender['.$table['land'].'][]" type="checkbox" value="p2"'; if($table['p2'] == "1") { echo'checked'; } echo'></div></td>
    <td width="100"><div align="center"><input name="laender['.$table['land'].'][]" type="checkbox" value="p3"'; if($table['p3'] == "1") { echo'checked'; } echo'></div></td>
  </tr>';
}

Deine Schleife sieht dann so aus:

PHP:
$default=array('p1'=>0,'p2'=>0,'p3'=>0);
while(list($land,$optionen)=each($laender)){
   $default_temp=$default;
   for($x=0;$x<count($optionen);$x++){
        $default_temp[$optionen[$x]]=1;
   }

   $sql='update laender set p1='.$default_temp['p1'].',p2='.$default_temp['p2'].',p3='.$default_temp['p3'].' where land='.$land."'";
   mysql_query($sql);
}

ungetestet.
 
Hallo,

ich würd die Checkboxen jeweils einfach mit p1, p2 und p3 bennen. (<input name="p1"> ...)
Dann kannst du jene problemlos in deinen UPDATE-Befehl einbinden.

z. B.
PHP:
$result = mysql_query(" UPDATE laender SET p2 = '$p2', p3 = '$p3' WHERE land = 'Albanien' ");
 
@shockshell: danke funktioniert super! nur ein kleiner fehler war in sql update query
so is es richtig.
Code:
 $sql='update laender set p1='.$default_temp['p1'].',p2='.$default_temp['p2'].',p3='.$default_temp['p3'].' where land='.$land.'';
   mysql_query($sql);

thx für die schnelle hilfe!
 
Zurück