Checkboxen multidimensional Array

morgenstern

Erfahrenes Mitglied
Hi!

Ich hatte schon einmal eine Frage bezüglich dieser Thematik, damals wurde mir sehr gut geholfen und es klappte auch alles. Nun wollte ich den Codebei einem anderen Projekt weiterverwenden, stoße nun aber anscheinend an die Grenzen dieses Codes.

Vorhanden ist eine Checkbox pro Produkt, welches aus der DB ausgelesen wird.

PHP:
<input name="preis['.$table['tempID'].'][]" type="checkbox" value="p1">

Es wird nun noch getestet, ob checked oder nicht checked, dies ist jedoch nicht das Problem.

Bei Submit,folgt nun dieser Code:

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

   $sql='update store_temp set p1='.$default_temp['p1'].' where tempID='.$tempID.'';
   mysql_query($sql);
}

Dies klappt auch, wenn die Checkbox angehackt ist. Aber, wie wir wissen, übergibt eine Cechbox keinen Wert, wenn sie nicht angehackt ist, nun kommt beim deaktivieren folgender Fehler:

Code:
Warning: Variable passed to each() is not an array or object in c:\apache\htdocs\store\store.php on line 26

Wie könnte ich nun dem System beibringen, falls die Checkbox nicht gesetzt ist, dass er trotzdem die $tempID übergibt und den Wert in der DB auf 0 setzt?

Gibt es eine einfachere Methode als ein Multidimensionales Array um eine Checkbox mit einer ID zu übergeben, da es bald mehrere Checkboxen geben wird?

Danke, ein kranker Morgenstern, der trotzdem arbeiten muss, und durch Grippe einfach geschwächt ist :/
 
Deklarier die Variable am Anfang einfach mal als Array!
Glaube das müsste gehen.

Also einfach:
$variable=array();
Dann sit es nämlich ein Array und kein normaler String mehr!
 
Eigentlich meinte ich das genau so!

Der Fehler sagt ja das die Variable kein Array ist!
Und wenn die Variable leer ist ist sie kein Array!
Und das fängt man normalerweise mit der Deklaration ab!

Vielleicht versteh ich das auch falsch, aber du hast mehrere Checkboxen und willst auf der nächsten Seite rausfinden ob die gesetzt sind oder nich und dann dementsprechen in die datenbank speichern?

Dann würde das wirklich ohne ein Mehrdimensonales Array gehen!

Du gibst der Checkbox den Namen der TempId (den wert mit der nachher in der Datenbank verglichen wird)
z.B.
Code:
<input type="Checkbox" name="'.$tempID.'" value="1">

und dann liest du alle Werte aus der Datenbank aus und prüfst ob der Wert in der POST-Variable auf 1 gesetzt ist!

Code:
while ($datensatz_01=mysql_fetch_array($abfrage_01))
 {
	      $tempID=$datensatz_01['TempID'];

      if ($_POST[$tempID]==1)
      {
            	SQLANWEISUNG
      }
}

So ungefähr!
Musst mal gucken obs so geht!!
 
Mein Problem ist irgendwie, dass ja die Checkbox nicht übergeben wird, wenn sie nicht angeklickt wurde.

Ich find auf logische Weise einfach keine Lösung :/

ich werds mal mit deiner Version probieren, mal schaun, danke.
 
So, nachdem ich meine Krankheit überwunden hatte, fiel es mir wie Schuppen von den Augen. Die Lösung war so klar und ich hab sie einfach nicht gesehen.

Danke für die Tipps und Lösungsvorschläge!
 
Zurück