Problem mit einfachem PHP Code

kcyberbob

Erfahrenes Mitglied
Hallo,

ich habe gerade ein Problem und hab keine Ahnung an was das liegt.

Am besten zeig ich euch mal die Datei inster.php:
PHP:
<?
if (!isset($action)) {
?>
<form action="index.php?location=insert&action=save" method="post">
<table width="100%"  border="0" cellspacing="0" cellpadding="0">
  <tr>
    <td width="21%">Name:</td>
    <td width="18%">Verein:</td>
    <td width="8%">Bahn 1: </td>
    <td width="8%">Bahn 2: </td>
    <td width="8%">Bahn 3: </td>
    <td width="8%">Bahn 4:</td>
    <td width="8%">Bahn 5: </td>
    <td width="13%" colspan="5">Ju&acute;s:</td>
    </tr>
  <tr>
    <td><input name="name" type="text" id="name" maxlength="50" class="input"></td>
    <td>
<?
Select();
?>
    </td>
    <td><input name="bahn1" type="text" id="bahn1" size="3" maxlength="3" class="input"></td>
    <td><input name="bahn2" type="text" id="bahn2" size="3" maxlength="3" class="input"></td>
    <td><input name="bahn3" type="text" id="bahn3" size="3" maxlength="3" class="input"></td>
    <td><input name="bahn4" type="text" id="bahn23" size="3" maxlength="3" class="input"></td>
    <td><input name="bahn5" type="text" id="bahn24" size="3" maxlength="3" class="input"></td>
    <td width="13%" colspan="5"><input name="ju" type="text" id="bahn5" size="2" maxlength="2" class="input"></td>
  </tr>
  <tr>
    <td>&nbsp;</td>
    <td>&nbsp;</td>
    <td>&nbsp;</td>
    <td>&nbsp;</td>
    <td>&nbsp;</td>
    <td>&nbsp;</td>
    <td>&nbsp;</td>
    <td width="13%" colspan="5">&nbsp;</td>
  </tr>
  <tr>
    <td>&nbsp;</td>
    <td>&nbsp;</td>
    <td>Jugend:</td>
    <td>Damen:</td>
    <td>Senioren:</td>
    <td>Gast:</td>
    <td>Mannschaft:</td>
    <td width="13%" colspan="5">&nbsp;</td>
  </tr>
  <tr>
    <td>&nbsp;</td>
    <td>&nbsp;</td>
    <td><input name="jugend" type="checkbox" id="jugend" value="yes"></td>
    <td><input name="damen" type="checkbox" id="damen" value="yes"></td>
    <td><input name="senioren" type="checkbox" id="senioren" value="yes"></td>
    <td><input name="gast" type="checkbox" id="gast" value="yes"></td>
    <td><input name="mannschaft" type="checkbox" id="mannschaft" value="yes"></td>
    <td width="13%" colspan="5">&nbsp;</td>
  </tr>
  <tr>
    <td>&nbsp;</td>
    <td>&nbsp;</td>
    <td>&nbsp;</td>
    <td>&nbsp;</td>
    <td>&nbsp;</td>
    <td>&nbsp;</td>
    <td>&nbsp;</td>
    <td width="13%" colspan="5">&nbsp;</td>
  </tr>
  <tr>
    <td>&nbsp;</td>
    <td>&nbsp;</td>
    <td colspan="3"><input type="submit" name="Submit" value="Eintragen" class="input"></td>
    <td>&nbsp;</td>
    <td>&nbsp;</td>
    <td width="13%" colspan="5">&nbsp;</td>
  </tr>
</table>
</form>
<?
}

if ($action == "save") {
    if($name == "") {
	errortxt("Sie haben keinen Namen eingegeben.");
	}
	elseif ($verein == "no") {
	errortxt("Sie haben keinen Verein ausgewählt.");
	}
	elseif ($bahn1 == "") {
	errortxt("Sie haben kein Ergebniss für Bahn 1 eingegeben");
	}
	elseif ($bahn2 == "") {
	errortxt("Sie haben kein Ergebniss für Bahn 2 eingegeben");
	}
	elseif ($bahn3 == "") {
	errortxt("Sie haben kein Ergebniss für Bahn 3 eingegeben");
	}
	elseif ($bahn4 == "") {
	errortxt("Sie haben kein Ergebniss für Bahn 4 eingegeben");
	}
	elseif ($bahn5 == "") {
	errortxt("Sie haben kein Ergebniss für Bahn 5 eingegeben");
	}
	elseif ($ju == "") {
	errortxt("Sie haben keine Ju´s eingegeben");
	}
	else {
	if ($jugend != "yes") {
	$jugend = "no";
	}
	if ($damen != "yes") {
	$damen = "no";
	}
	if ($senioren != "yes") {
	$senioren = "no";
	}
	if ($gast != "yes") {
	$gast = "no";
	}
	if ($mannschaft != "yes") {
	$mannschaft = "no";
	}
	// Speichern in Datenbank
	$gesamt = $bahn1+$bahn2+$bahn3+$bahn4+$bahn5;
	mysql_query("INSERT INTO gesamt (name, verein, bahn1, bahn2, bahn3, bahn4, bahn5, ju, gesamt, mannschaft, jugend, damen, senioren, gast) VALUES ('$name', '$verein', '$bahn1', '$bahn2', '$bahn3', '$bahn4', '$bahn5', '$ju', '$gesamt', '$mannschaft', '$jugend', '$damen', '$senioren', '$gast')");
	infotxt("Die Daten wurden erfolgreich in die Datenbank eingetragen");
	jumpto("index.php?location=insert");
	}
}
?>

So jetzt zur Erklärung.
Also es geht um die Checkboxen.
Ich will, das dir jeweilige Varibale der Checkbox yes zurück gibt wenn sie aktiv ist und wenn nicht das sie dann no zurück gibt.
Das ganze funktioniert auch bei der Checkbox Mannschaft.
Bei allen anderen wird mir immer no zurück gegeben.
Woran kann denn da das Problem liegen?
Das ist doch genau so aufgebaut wie mein der Checkbox Mannschaft.

Die Funktionen in dem Script braucht ihr nicht beachten, da die keine Roller spielen mit dem wo der Fehler liegt.

Würde mich freuen, wenn ihr mir weiterhelfen könntet.

Ach so ich benutze den XAMPP von Apachefriends.

Gruß kcyberbob
 
Was mir auf jeden Fall auffällt ist das Fehlen des Feldes "verein".

Ansonsten solltest du die Abfragen der Checkboxen ändern... anstatt ihren Wert zu ermitteln(der ja nur übertragen wird, wenn eine Box aktiviert wurde).. solltest du abfragen, ob die entsprechende Variable überhaupt existiert.

Im Übrigen erleichtert es die eigene Fehlerdiagnose, wenn man sich während der Entwicklung das error_reporting auf "E_ALL" stellt.

Zum Thema register_globals und Ansprechen von REQUEST-Variablen sag ich mal nix... das hatten wir nun wirklich oft genug ;)
 
Hallo,
der Variable verein ist in der Funktion Select definiert.

Ja aber wenn ich ermittle ob dir Variable existiert bringt mir ja nichts, da ich ja wenn sie nicht yes ist will, daß sie no ist.
Mein Problem ist ja, daß ich immer no bekomme obwohl dir Checkbox aktive ist.
Außer bei der Variable mannschaft. Da geht es ja so wie es ist.
 
kcyberbob hat gesagt.:
die Variable verein ist in der Funktion Select definiert.
Du rufst aber die Funktion nur auf:
PHP:
<?
Select();
?>
und es findet keine Rückgabe statt
PHP:
$verein=Select();
natürlich vorausgesetzt, dass die Funktion etwa so aussieht
PHP:
function Select(){
   $verein = "dies und das";
   return $verein;
}

Zum eigentlichen Problem, mach den Insert mal so:
PHP:
$sql="INSERT INTO gesamt 
(name, verein, bahn1, bahn2, bahn3, bahn4, bahn5, ju, gesamt, mannschaft, jugend, damen, senioren, gast) 
VALUES 
('$name', '$verein', '$bahn1', '$bahn2', '$bahn3', '$bahn4', '$bahn5', '$ju', '$gesamt', '$mannschaft', '$jugend', '$damen', '$senioren', '$gast')";
$result=mysql_query($sql);
if ($result){
   infotxt("Die Daten wurden erfolgreich eingetragen");
   jumpto("index.php?location=insert");
}else{
   print mysql_error();
}
Dann bekommst Du eine Meldung was MySQL nicht passt.
 
Die Daten werde ja eingetragen.
Es werden nur die Falschen Daten eingetragen.
Es werden nur für die Checkboxen als jungend, damen, senioren und gast die flaschen daten eingetragen.
Also es wird immer no eingetragen obwohl sie eigentlich yes sein müssten wenn sie aktive sind.
komischerweise wird bei der checkbox mannschaft das richtige eingetragen.

Zufolge kommt auch keine Fehlermeldung wenn ich es so mache wie du es geschrieben hast.

Gruß kcyberbob
 
Was gibt
PHP:
echo $sql;
aus?

Kann es sein, dass von den Checkboxen gar nix eingetragen wird, aber `mannschaften` im Gegensatz zu den anderen den Defaultwert 'yes' hat?

Übrigens solltest Du auf die Variablen mit
PHP:
$_POST['jugend']
zugreifen statt mit
PHP:
$jugend
 
Hallo,

und danke an alle die sich mit meinem Problem beschäftigt haben.
Ich habe jetzt eine Lösung gefunden.
Ich mache die Zuweisung jetzt so.
PHP:
$jugend = isset($_POST['jugend']) ? 'yes' : 'no';
$damen = isset($_POST['damen']) ? 'yes' : 'no';
$senioren = isset($_POST['senioren']) ? 'yes' : 'no';
$gast = isset($_POST['gast']) ? 'yes' : 'no';
$mannschaft = isset($_POST['mannschaft']) ? 'yes' : 'no';

Gruß kcyberbob
 
Zurück