checkboxen array problemchen

slapper

Grünschnabel
nabend zusammen

hab ein kleine php-problem und da ich nicht der php-knaller bin:-(
dachte ich vielleicht kann mir hier jemand helfen:)

also ich habe ein Formular mit mehreren checkboxen das sieht so aus:

<input type="checkbox" name="check[]" value="Lipstick">
<input type="checkbox" name="check[]" value="palmstick">
<input type="checkbox" name="check[]" value="redstick">
<input type="checkbox" name="check[]" value="blackstick">
<input type="checkbox" name="check[]" value="ipsticks">

usw. usw....

im entfernten php-script ist das ganze so deffiniert:

if (isset($_POST["check"]))
$check = $_POST["check"];
if (is_array($check))
{
$checkgroesse=count($check);
for ($i=0; $i<$checkgroesse; $i++)
{ $body .= $_POST["text18"].$check[$i].$_POST["umbruch"]; }
}
else
{
$body.=$check;
}

jetzt das problemchen:
das php-script funktioniert auch schon, nur wenn ich garkeine checkbox anklicke kommt die fehlermeldung:

Notice: Undefined variable: check in D:\Web_Side\cgi-bin\kontakt.php on line 72

Notice: Undefined variable: check in D:\Web_Side\cgi-bin\kontakt.php on line 80

wird aber trotzdem zu meiner angegebenen email verschickt, trotz der fehler meldung
kann mir einer helfen, ist wahrscheinlich nur was kleines was verkehrt ist.

zur hilfe,
line 72 ist: if (is_array($check))
line 80 ist: $body.=$check;

die variable ist doch eindeutig definiert, verstehe nicht, wo der mit der meldung herkommt :mad:

danke schon im voraus:))))
 
naja sind ja nur Notices ;)

ist aber irgendwo logisch, denn wenn du keine Checkbox anklickst,
wird folgendes nicht ausgeführt:

if (isset($_POST["check"]))
$check = $_POST["check"];

denn $_POST['check'] ist dann eben nicht vorhanden.

ergo versuchst du ferner, eine nicht vorhandene Variable mit is_array zu prüfen bzw an die Stringvariable $body anzuhängen.

ich würde die Notice einfach ignorieren, oder je nachdem was anschliessend noch kommt abfangen.
 
danke ben:)

vielleicht kann ich es mit einem trick ausschalten, indem ich im html selbst generell die variable "check[]" mitgebe irgendwo versteckt?

die Notice sieht einfach unschön aus auf der Dankeseite:mad:
 
also du kannst zum einen das ganze im if erweitern:

PHP:
if (isset($_POST["check"]))
{
 $check = $_POST["check"];
 if (is_array($check))
 {
  $checkgroesse=count($check);
  
  for ($i=0; $i<$checkgroesse; $i++)
  { 
   $body .= $_POST["text18"].$check[$i].$_POST["umbruch"]; }
  }
 }
 
 else
 {
 $body.=$check;
 }
}

das der ganze block nur ausgeführt wird, wenn auch ein wert übergeben wurde oder´du baust ein hidden feld mit dem namen check[] bzw check ein, gibst diesem einen defaultwert und fragst diesen ab. hat aber wiederum den nachteil, dass wenn eine checkbox geklickt sein sollte, diesert wert des hidden feldes mit drin steht.

oder du schaltest einfach das error reporting um auf "E_ALL & ~E_NOTICE" in der PHP.ini, voraussgesetzt, du hast Zugriff darauf.
Mit ini_set geht das leider nicht, wie ich anfangs angenommen habe :(
 
Zuletzt bearbeitet:
Zurück