Daten in DB eintragen

tittli

Erfahrenes Mitglied
Hallo

Wieso funktioniert folgendes Script nicht?

Das ist das HTML-Formular:

PHP:
<html>
 <head>
  <title>Noten</title>
 </head>
 <body>
  <form name="Noten" method="post" action="noten.php" >
   <select name="Fächer" size="13">
    <option value="01" name="noten">English</option>
    <option value="02" name="noten">PAM</option>
    <option value="03" name="noten">Mathematik</option>
    <option value="04" name="noten">Chemie</option>
    <option value="05" name="noten">Geschichte</option>
    <option value="06" name="noten">Physik</option>
    <option value="07" name="noten">Romontsch</option>
    <option value="08" name="noten">Geografie</option>
    <option value="09" name="noten">Zeichnen</option>
    <option value="10" name="noten">Französisch</option>
    <option value="11" name="noten">Deutsch</option>
    <option value="12" name="noten">Biologie</option>
    <option value="13" name="noten">Philosophie</option>
   </select><br><br>
   <input type="radio" value="pruefung" name="art">Prüfung</input><br>
   <input type="radio" value="blitzer" name="art">Blitzer</input><br>
   <input type="radio" value="hausaufgabe" name="art">Hausaufgabe</input><br> 
   <br><br>
   <b>Note:</b><input type="text" name="note" size="5" maxlength="5"><br><br>
   <input type="submit" value="Speichern">
</form>
 </body>
</html>


Das ist das PHP-Script:

PHP:
<?php
 include("dbconnect.php");
 
 #Variabeln
 $fach = $noten; 
 $prblha = $art;
 
 #If
 
 if ($fach == 01)
	{
	$eintrag = "INSERT INTO english (art, note) VALUES ('$prblha', $note)";
	$eintragen = mysql_query ($eintrag);
	}
 else if ($fach == 02)
 	{
 	$eintrag = "INSERT INTO pam (art, note) VALUES ('$prblha', '$note')";
 	$eintragen = mysql_query ($eintrag);
 	}
 else if ($fach == 03)
 	{
 	$eintrag = "INSERT INTO mathematik (art, note) VALUES ('$prblha', '$note')";
 	$eintragen = mysql_query ($eintrag);
	}
 else if ($fach == 04)
 	{
 	$eintrag = "INSERT INTO chemie (art, note) VALUES ('$prblha', '$note')";
 	$eintragen = mysql_query ($eintrag);
 	}
 else if ($fach == 05)
 	{
 	$eintrag = "INSERT INTO chemie (art, note) VALUES ('$prblha', '$note)";
 	$eintragen = mysql_query ($eintrag);
 	}
 else if ($fach == 06)
 	{
 	$eintrag = "INSERT INTO physik (art, note) VALUES ('$prblha', '$note)";
 	$eintragen = mysql_query ($eintrag);
 	}
 else if ($fach == 07)
 	{
 	$eintrag = "INSERT INTO romontsch (art, note) VALUES ('$prblha', '$note)";
 	$eintragen = mysql_query ($eintrag);
 	}
 else if ($fach == 08)
 	{
 	$eintrag = "INSERT INTO geografie (art, note) VALUES ('$prblha', '$note)";
 	$eintragen = mysql_query ($eintrag);
 	}
 else if ($fach == 09)
 	{
 	$eintrag = "INSERT INTO zeichnen (art, note) VALUES ('$prblha', '$note)";
 	$eintragen = mysql_query ($eintrag);
 	}
 else if ($fach == 10)
 	{
 	$eintrag = "INSERT INTO franzoesisch (art, note) VALUES ('$prblha', '$note')";
 	$eintragen = mysql_query ($eintrag);
 	}
 else if ($fach == 11)
 	{
 	$eintrag = "INSERT INTO deutsch (art, note) VALUES ('$prblha', '$note')";
 	$eintragen = mysql_query ($eintrag); 	                                    
 	}
 else if ($fach == 12)
        {
 	$eintrag = "INSERT INTO biologie (art, note) VALUES ('$prblha', '$note')";
 	$eintragen = mysql_query ($eintrag);
 	}
 else
 	{
 	$eintrag = "INSERT INTO zeichnen (art, note) VALUES ('$prblha', '$note')";
 	$eintragen = mysql_query ($eintrag);
 	}                               
?>


Eigentlich wollte ich die Variabeln $prblha und $note in einer Datenbank speichern, tut es aber nicht. Wenn ich aber die beiden Variabeln einfach mit echo herauslese, dann kommen richtige Wert. Was stimmt hier nicht?
 
Hallo,

Du hast bei $fach 09,08,07,06,05 den letzten ' vergessen...

Vielleicht liegts ja an der dbconnect datei Poste den Source mal...

Im Übrigen würde ich das hier mit einer swich Anweisung machen
PHP:
switch($fach)
{
    case "01":
        $eintrag = "INSERT INTO english (art, note) VALUES ('$prblha', $note)"; 
        $eintragen = mysql_query ($eintrag); 
        break;
    case "02": // usw.....
}
 
was wo habe ich etwas vergessen?

ja mit der Switch hab' ich's auch schon versucht...ging irgendwie auch nicht...

die dbconnect.php ist sicher in Ordnung. Das ist nur die Verbindung zur DB, hab ich bei anderen Sachen auch schon verwendet.
 
Du hast in dem Fomular dem <select> den Namen "Fächer" gegeben und im PHP Script greifst du mit der Variable $fach drauf zurück. Geht so nicht ;)

$fach = $_POST['Fächer'];
 
Original geschrieben von _voodoo
Du hast in dem Fomular dem <select> den Namen "Fächer" gegeben und im PHP Script greifst du mit der Variable $fach drauf zurück. Geht so nicht ;)

$fach = $_POST['Fächer'];

Wenn er aber mit echo die Vars ausgeben lässt, funktioniert es, anscheinend steht sein register_globals auf on ;)

@Spescha

Kleiner Tipp am Rande: Warum erstellst Du nicht eine (!) Tabelle? In dieser Tabelle legst Du einfach noch eine zusätzliche Spalte an, in der Du das Fach abspeicherst. So würde dann nämlich auch dieser lange If-Teil wegfallen! 13 Tabellen finde ich persönlich doch etwas übertrieben ;)
 
oder man hätte das ganze kürzen können.
Array anlegen mit Nummer als Schlüssel und Tabellenname als Wert.
Und dann entsprechend das Statement zusammenbauen.
Dann wäre das eigentlich statement in einer Zeile und eine zweite Zeile für das Ausgühren, dann würden schonmal 25Zeilen wegfallen.
 
Original geschrieben von Chino
Wenn er aber mit echo die Vars ausgeben lässt, funktioniert es, anscheinend steht sein register_globals auf on ;)[...]
Mir geht es eher um Fächer <-> fach - Das mit register_globals war nur nebenbei :)
Er greift auf den Namen des <form> zu anstatt auf den <select>

Edit::::
Jetzt seh ich grad mal was der in in dem Form fpr ein "Müll" gemacht hat:
Der select Tag heißt Fächer und jeder untergeordnete option Tag bekommt den Namen noten - sorry aber das ist totaler Schwachsinn!
So ist richtig:
PHP:
  <form name="Noten" method="post" action="noten.php" >
   <select name="noten" size="13">
    <option>English</option>
    <option>PAM</option>
    <option>Mathematik</option>
    <option>Chemie</option>
    <option>Geschichte</option>
    <option>Physik</option>
    <option>Romontsch</option>
    <option>Geografie</option>
    <option>Zeichnen</option>
    <option>Französisch</option>
    <option>Deutsch</option>
    <option>Biologie</option>
    <option>Philosophie</option>
   </select><br><br>
   <input type="radio" value="pruefung" name="art">Prüfung</input><br>
   <input type="radio" value="blitzer" name="art">Blitzer</input><br>
   <input type="radio" value="hausaufgabe" name="art">Hausaufgabe</input><br>
   <br><br>
   <b>Note:</b><input type="text" name="note" size="5" maxlength="5"><br><br>
   <input type="submit" value="Speichern">
</form>
// Nun kannste sehr simpel, ohne viele 
// (else)if-Anweisungen dein Query ausführen:
if(!empty($_POST['note'])) {
 $fach = $noten;
 mysql_query("INSERT INTO $fach (art, note) VALUES ('$prblha', $note)");
 }
 
Zuletzt bearbeitet:
hmm...danke für die antworten
naja bin in sachen formulare / php / db anfänger und wollte das ganze mal ausprobieren. naja werde das jetzt mal so versuchen

danke

gruss
 
Zurück