[PHP] Wert aus Dropdown-Menü auslesen

DomiL

Newbie
Registriert
Juli 2016
Beiträge
3
Liebes Forum,

Ich habe folgendes Problem: Ich habe 4 dynamische Dropdown-Listen die mir auch korrekt angezeigt werden usw. Ich möchte nun aber die ausgewählten Werte mit einem "Submit" Button in eine neue (dafür erstellte) Tabelle in meiner Datenbank schreiben lassen. Wie kann ich also Werte aus Dropdown Listen auslesen, bzw. neu speichern.

Webseite bzw. HTML:

PHP:
$mysqli = new mysqli($hostname,$username,$password,$db);
        if(mysqli_connect_error()) 
 {
            die('Verbindungsfehler (' . $mysqli->connect_errno . ') '
                    . $mysqli-> connect_error);
   }
        print "Verbindung erfolgreich mit " . $db . "...\n<br>";
	?>
	<form action="fach_lehrer_eintragen.php" method=" st">
	<select name="FachAbkuerzung">
	<?php
	$sql = $mysqli->query("SELECT FachAbkuerzung FROM Faecher");
	while($data = $sql->fetch_object())
{
	echo "<option value='". $data->FachAbkuerzung ."'>".$data->FachAbkuerzung."</option>";
}
	?>
	</select>
	 <select name ="Lehrer1">
        <?php
        $sql = $mysqli->query("SELECT LehrerKz FROM Lehrer");
        while($data = $sql->fetch_object())
{
        echo "<option value='". $data->LehrerKz ."'>".$data->LehrerKz."</option>";
 }
        ?>
        </select>
	<select name="Lehrer2">
        <?php
        $sql = $mysqli->query("SELECT LehrerKz FROM Lehrer");
        while($data = $sql->fetch_object())
{
	echo "<option value='". $data->LehrerKz ."'>".$data->LehrerKz."</option>";
 }
        ?>
        </select>
	<select name="Lehrer3">
        <?php
        $sql = $mysqli->query("SELECT LehrerKz FROM Lehrer");
        while($data = $sql->fetch_object())
{
	echo "<option value='". $data->Lehrer3 ."'>".$data->LehrerKz."</option>";
        }
        ?>
        </select>
	<input type="submit" value="Eintragen" method="posr">
</form>
    <form action="db_anzeigen_fach_lehrer.php" method="post">
    <input type ="submit" value="DB Anzeigen">
</form>

</body>
</html>

Mein Versuch die Werte zu speichern:

PHP:
$link = mysqli_connect("localhost", "root", "password", "Maturaverwaltungssystem");

// Check connection
if($link == false)
{
    die("ERROR: Could not connect. " . mysqli_connect_error());
}


$FachAbkuerzung = mysqli_real_escape_string[$link, $_POST['FachAbk']);
$LehrerKz1      = mysqli_real_escape_string($link, $_POST['Lehrer1']);
$LehrerKz2      = mysqli_real_escape_string($link, $_POST['Lehrer2']);
$LehrerKz3      = mysqli_real_escape_string($link, $_POST['Lehrer3']);


// attempt insert query execution
$sql = "INSERT INTO Fach_Lehrer (FachAbkuerzung, LehrerKz1, LehrerKz2, LehrerKz3) VALUES ('$FachAbkuerzung', '$LehrerKz1', '$LehrerKz2', '$LehrerKz3')";

if(mysqli_query($link, $sql))
{
  echo "Eintrag erfolgreich...";
} else{
    echo "ERROR: Could not able to execute $sql. " . mysqli_error($link);
}
// close connection
mysqli_close($link);
header("refresh:3;url=fach_lehrer_zuweisen.php");
?>
 
Bei einem schnellen Drübergucken würde ich sagen:

1. PHP, Zeile 10:
HTML:
method="post"

Du liest in Deiner zweiten PHP-Datei die Daten ja aus dem $_POST-Array aus...

Gruß
 
erste datei:
  • zeile 10: "post" statt " st"
  • zeile 47: input hat kein method-attribut
zweite datei:
  • zeile 10: falsche klammer
  • zeile 10: $_POST-schluessel sollte "FachAbkuerzung" heissen, wie du es in datei 1 in zeile 11 angegeben hast

generelle anmerkung: datei 2, zeile 17 ist ein wenig ekliger stil im jahre 2016. schoener waere ein prepared statement, dann kannst du dir auch das mysqli_real_escape_string() gedoens sparen.
 
Ah ja. Und nun? Was ist der Fehler? Was passiert? Mehr Infos wären gut... "Geht nicht", hilft nicht.

Code:
<form action="fach_lehrer_eintragen.php" method=" st">
st gibts nicht.
Code:
<input type="submit" value="Eintragen" method="posr">
Ein Button hat kein Attribut method.
 
Danke für die Hilfe, da sind teilweise echt dumme Fehler dabei die ich übersehen und geändert habe.
Ich bekomme jetzt schonmal eine Error-Meldung...

ERROR: Could not able to execute INSERT INTO Fach_Lehrer (FachAbkuerzung, LehrerKz1, LehrerKz2, LehrerKz3) VALUES ('', '', '', ''). Cannot add or update a child row: a foreign key constraint fails (`Maturaverwaltungssystem`.`Fach_Lehrer`, CONSTRAINT `Fach_Lehrer_ibfk_4` FOREIGN KEY (`LehrerKz3`) REFERENCES `Lehrer` (`LehrerKz`))

Edit: Es gibt insgesamt 3 Tabellen (Faecher, Lehrer, Fach_Lehrer). Faecher und Lehrer sind zwei eigene Tabellen und Fach_Lehrer besteht nur aus Indizes der zwei anderen Tabellen.
Lehrer -> LehrerKz ist der Primary Key.
Faecher -> FachAbkuerzung ist der Primary Key.
Fach_Lehrer ->FachAbkuerzung1 , LehrerKz1, LehrerKz2, LehrerKz3 sind Foreign Key.
 
Zuletzt bearbeitet:
Wenn du schon mit MySQLi arbeitest, nutz bitte auch Prepared Statements, damit du dich vor SQL Injections schützen kannst. Im gleichen Atemzug haust du die überflüssigen mysqli_real_escape_string raus.

Wenn du dir deinen Query ansiehst, wirst du erkennen, dass dieser keine Daten enthält. Prüf also erstmal, warum die Daten nicht in dem Script ankommen. Außerdem stimmt das Feld FachAbkuerzung nicht (FachAbkuerzung steht im Formular, FachAbk soll eingetragen werden).
 
Zurück
Oben