hannes: auswerten einer checkbox

Hallo,

ich schaffe es nicht, die Info aus einer Formular-Checkbox zu verwerten. Das html-Formular ist im gleichen script, wie der php-code.

  
//...  
$script = 'http://' . $_SERVER["SERVER_NAME"] . $_SERVER["SCRIPT_NAME"];  
  
$sql = "SELECT Versandkosten FROM artikel WHERE artikelID='" . mysql_real_escape_string($_GET['artikelID']) . "'";  
$res = mysql_db_query($dbname, $sql);  
list($thisVersandkosten) = mysql_fetch_row($res);  
//...  
for($x=0;$x<count($errorFields);$x++){  
	$errorClass[$errorFields[$x]] = 'inputField';  
}  
  
if(isset($_POST['submit'])){  
	$error = FALSE;  
	foreach($errorFields as $key => $value)  
	{  
		if(empty($_POST[$errorFields[$key]]))  
		{  
			$error = TRUE;  
			$errorClass[$value] = 'errorField';  
			$errorPicture[$value] = '';  
		}  
	}  
}  
  
if($_GET['check'] == "TRUE"){  
	$errorMessage = '...';	  
}  
  
  
if(isset($_POST['submit'])){  
// dies ist mein Lösungsversuch  
	if(!empty($_POST['abholen'])){  
		$thisVersandkosten = "0";  
	}  
// eof Lösungsversuch  
	  
	if($error == TRUE){  
  
			$errorMessage = '...';  
	}  
  
  
	else {  
  
			header("Location: $script?check=TRUE");  
	}  
  
}  

...und der entsprechende Auszug aus dem html-Formular

  
		<form action="<?PHP echo $script."?artikelID=".$_GET['artikelID']; ?>" method='post'>  
<!-- ... -->  
			 <tr>  
				<td>&nbsp;<br></td>  
				<td style='font-style:italic; font-size:10px; text-align:right;'>Versandkosten:</td>  
				<td colspan="2" style='background-color:#fff; border:1px solid #999; text-align:center;'><? echo ($thisCurrency."&nbsp;".$thisVersandkosten."".$thisCentimes); ?></td>  
			 </tr>  
<!-- ... -->  
			<tr>  
				<td align='right' colspan="3">selbst abholen</td>  
				<td colspan="1" align='left'><input type="checkbox" name="Selbstabholer" value="<?PHP echo $_POST['abholen']; ?>"></td>  
			</tr>  
  

Für Tipps bin ich sehr dankbar.
Gruss
hannes

  1. Hi,

    ich schaffe es nicht, die Info aus einer Formular-Checkbox zu verwerten.

    du fragst den daraus resultierenden Parameter ja auch gar nicht ab:

    if(!empty($_POST['abholen'])){
    $thisVersandkosten = "0";
    }

    Hier kümmerst du dich um einen eventuellen Parameter mit dem Namen "abholen", ...

    <input type="checkbox" name="Selbstabholer" value="<?PHP echo $_POST['abholen']; ?>">

    ... obwohl du ihm den Namen "Selbstabholer" gegeben hast. Der Wert dieses Parameters ist übrigens in diesem Fall völlig egal; er könnte "1" oder "ja" oder "Maikäfer" lauten. In deinem Fall ist er vermutlich leer (ein String mit der Länge 0), weil $_POST['abholen'] nicht existiert, und die Abfrage erzeugt zusätzlich eine Notice-Meldung.
    Ein Leerstring ist aber schlecht, weil dann deine obige empty()-Abfrage nie erfolgreich ist, denn ein Leerstring gilt immer als empty.
    Entweder gib diesem Parameter also auch noch einen Wert, oder ändere die Abfrage von !empty() auf isset().

    Ciao,
     Martin

    --
    Wenn die Amerikaner eines Tages von jeder Tierart ein Pärchen nach Cape Canaveral treiben ...
    ja, DANN sollte man endlich misstrauisch werden.
    Selfcode: fo:) ch:{ rl:| br:< n4:( ie:| mo:| va:) de:] zu:) fl:{ ss:) ls:µ js:(
    1. Hallo Der Martin,

      Hier kümmerst du dich um einen eventuellen Parameter mit dem Namen "abholen"...

      <input type="checkbox" name="Selbstabholer" value="<?PHP echo $_POST['abholen']; ?>">

      ... obwohl du ihm den Namen "Selbstabholer" gegeben hast.

      upps! Vor lauter Wald sieht man manchmal den Baum nicht mehr.

      Vielen Dank
      Gruss
      hannes

  2. Hi,

    ich schaffe es nicht, die Info aus einer Formular-Checkbox zu verwerten.

    Du würdest es so auch nicht schaffen, wenn es ein Texteingabefeld wäre.

    Das html-Formular ist im gleichen script, wie der php-code.

    Und Dein PHP-Code erwartet einen anderen Namen, als das HTML-Element hat.

    ...und der entsprechende Auszug aus dem html-Formular

    ... sollte ohne jedwede Spur eines eventuell mal vorhanden gewesen seienden PHP-Codes sein. Betrachte den *erzeugten* Code, nicht den erzeugenden.

      		<td colspan="1" align='left'><input type="checkbox" name="Selbstabholer" value="<?PHP echo $\_POST['abholen']; ?>"></td>  
    

    Ach, nebenbei: Was passiert eigentlich, wenn $_POST['abholen'] z.B. den Wert 'nix"> schwerwiegender Fehler!' enthält?

    Cheatah

    --
    X-Self-Code: sh:( fo:} ch:~ rl:| br:> n4:& ie:% mo:) va:) de:] zu:) fl:{ ss:) ls:~ js:|
    X-Self-Code-Url: http://emmanuel.dammerer.at/selfcode.html
    X-Will-Answer-Email: No
    X-Please-Search-Archive-First: Absolutely Yes