Stehe auf dem Schlauch

medicus41

Mitglied
Hi,

irgendwie stehe ich auf dem Schlauch und hoffe das ihr mir da einen
Anstoss geben könnt. Ein User kann sich aus einem Select Feld einen
Eintrag aussuchen. Danach kommt ein PHP Schnipsel:

<form name="flug" method="post" action = "<?php echo
$_SERVER['PHP_SELF']?> ">
<p>
<select name="zahlen" size="1">
<option>1-Stunde</option>
<option>2-Stunden</option>
<option>3-Stunden</option>
<option>5 Stunden</option>
<option>12 Stunden</option>
<option>1 Tag</option>
</select>
</p>
<p>
<input type="submit" name="submit" value="weg damit">
</p>

PHP:
switch ($_POST['zahlen']) {

    case 1-Stunde:
    echo "<p>Du hast ".$_POST['zahlen']." gewählt. Dir werden danach
10€ von deinem Gehalt abgezogen</p>";
    $einkommen = "10";
	break;
    case 2-Stunden:
    echo "<p>Du hast ".$_POST['zahlen']." gewählt. Dir werden danach
20€ von deinem Gehalt abgezogen</p>";
    $einkommen = "20";
	break;
    case 3-Stunden:
    echo "<p>Du hast ".$_POST['zahlen']." gewählt. Dir werden danach
30€ von deinem Gehalt abgezogen</p>";
    $einkommen = "30";
	break;}

Soweit alles kein Problem. Hier wird dem User nur angezeigt wieviel
Geld er von seinem Gehalt abgezogen bekommt. Nun möchte ich einfach
einen endgültigen Bestätigungsbutton einfügen, welcher dann mein
DB-Update ausführt. Aber ein Eintrag:

<input type="submit" name="abziehen" value="BUCHEN">

und ein darauf entsprechendes:

PHP:
if(isset($abziehen)) {
$lohn = mysql_query("UPDATE pilots SET vermoegen = vermoegen -
'$einkommen' WHERE callsign = '$call'");
}
...

funktioniert einfach nicht. Es wird kein Fehler ausgegeben, aber auch
kein Update in der DB ausgeführt. Mache ich aber das Update direkt
von: if(isset($submit)) {...
abhängig, so wird der Query korrekt ausgeführt.
 
Hi,

klar wird sie übergeben. Wenn ich ja die Bedingung vom obigen ersten Input abhängig mache, dann wird ja auch abgezogen. Ich hab jetzt die Switchanweisung ein wenig umgeschrieben:

PHP:
<?php
switch ($_POST['zahlen']) {

    case '1-Stunde':
    $einkommen = "10";
	echo "<p>Du hast ".$_POST['zahlen']." gewählt. Dir werden danach 10€ von deinem Gehalt abgezogen</p><br>
	<input type='submit' name='abziehen' value='BUCHEN'>";
	break;
    case '2-Stunden':
    echo "<p>Du hast ".$_POST['zahlen']." gewählt. Dir werden danach 20€ von deinem Gehalt abgezogen</p><br>
	<input type='submit' name='abziehen' value='BUCHEN'>";
    $einkommen = "20";
	break;
    case '3-Stunden':
    echo "<p>Du hast ".$_POST['zahlen']." gewählt. Dir werden danach 30€ von deinem Gehalt abgezogen</p><br>
	<input type='submit' name='abziehen' value='BUCHEN'>";
    $einkommen = "30";
	break;}

Funktioniert soweit alles bis auf das Ausführen des <input name="abziehen"...>
Hierauf erfolgt nichts.
 
<form name="flug" method="post" action = "<?php echo
$_SERVER['PHP_SELF']?> ">
<p>
<select name="zahlen" size="1">
<option value="1std">1-Stunde</option>
<option value="2std">2-Stunden</option>
<option value="3std">3-Stunden</option>
<option value="5std">5 Stunden</option>
<option value="12std">12 Stunden</option>
<option value="1tag">1 Tag</option>
</select>
</p>
<p>
<input type="submit" name="submit" value="weg damit">
</p>
PHP:
<?php
switch ($_POST['zahlen']) {

    case '1-Stunde':
    $einkommen = "10";
    echo "<p>Du hast ".$_POST['zahlen']." gewählt. Dir werden danach 10€ von deinem Gehalt abgezogen</p><br>
    <input type='submit' name='abziehen' value='BUCHEN'>";
    break;
    case '2-Stunden':
    echo "<p>Du hast ".$_POST['zahlen']." gewählt. Dir werden danach 20€ von deinem Gehalt abgezogen</p><br>
    <input type='submit' name='abziehen' value='BUCHEN'>";
    $einkommen = "20";
    break;
    case '3-Stunden':
    echo "<p>Du hast ".$_POST['zahlen']." gewählt. Dir werden danach 30€ von deinem Gehalt abgezogen</p><br>
    <input type='submit' name='abziehen' value='BUCHEN'>";
    $einkommen = "30";
    break;}?>
 
if(isset($_POST['BUCHEN']))
{
$lohn = mysql_query("UPDATE pilots SET vermoegen = vermoegen -
'$einkommen' WHERE callsign = '$call'");
}

Hmm...nene, blick jetzt selber nicht durch, hab mir ehrlich gesgat, dein Problem auch nicht ganz sorgfältig durchgelesen.

oder $_GET['bla']
 
gib mal mit echo $lohn; den querystring aus, wenn keine fehlermeldung kommt und er trotzdem nicht updatet, kanns daran liegen, dass der query falsch ist. auch wenn das jetzt komisch klingen sollte, das kann wohl daran liegen, dass beim ändern der abhängigkeit irgendeine variable falsch ist, also z.B. $einkommen gar nicht übergeben wurde

auf jedenfall würde uns der query string oder der output von mysql_error() weiterhelfen.

PS: füg überall wo du glaubst ne variable könnte nicht ganz hinhauen nen echo $variable ein, um zu prüfen ob sie richtig übergeben werden und ob die werte stimmen (kann bei if-bedingungen wichtig sein)
 
vielleicht liegts auch am server. vielleicht unterstützt die version noch nich die $_****-syntax.
ersetz mal alles durch $HTTP_****_VARS

bei dir also überall $HTTP_POST_VARS['var'] anstatt $_POST['var']
 
Hi alle,

ich habe mir die ganze Geschichte nochmals genau angeschaut.
PHP:
switch ($_POST['zahlen']) {

    case '1-Stunde':
    $einkommen = "10";
    echo "<p>Du hast ".$_POST['zahlen']." gewählt. Dir werden danach 10€ von deinem Gehalt abgezogen</p><br>
    <input type='submit' name='abziehen' value='BUCHEN'>";
    break;

Die Variable $einkommen wird korrekt ausgegeben was ich anhand eines einfachen echos geprüft habe. Der DB Query ist absolut korrekt. Das einzige was nicht übergeben wird ist die Variable $abziehen im Input Tag. Aber warum nicht?
 
Zurück