MySQL-Datenbanktabellen verknüpfen mit PHP

A

AnnaS

Guest
Hallo zusammen,

Ich habe eine Datenbank mit zwei Tabellen. Und zwar eine mit Namen und eine Mit Abwesenheitsdaten:

Tabelle "Personen" beinhaltet:
  • id
  • name
  • vorname
Tabelle "Abwesenheit" beinhaltet:
  • id
  • person_id (fremdschlüssel)
  • von
  • bis
Nun habe ich in einem Formular eine Dropdownliste mit allen Namen. Man kann einen Namen auswählen und sieht dann den gewählten Namen und zwei Felder wo man die Daten eintragen kann von wann bis wann man weg ist. Sobald man auf Absenden klickt werden die Abwesenheits-Daten schön in die Datenbank eingetragen. Jedoch wird die ID von der Person nicht in die Fremdschlüsselspalte der Tabelle "Abwesenheit" eingetragen. Ich sollte irgendwie in dieser Dropdownliste ein Value eingeben das dann übertragen wird, aber es funktioniert nie, egal was ich mache. Jetzt habe ich jetzt folgendes:

CODE
echo "<option value=\"".$row['id']."\">".$row['name']." ".$row['vorname']."</option>";


//zum eintragen in die Datenbank habe ich:

$sql = "INSERT INTO $table (person_id, von, bis) VALUES ('$row', '$von', '$bis');";



Ich habe auch schon eine Variable z.B. $id für $row['id'] eingesetzt, aber es funktioniert einfach überhaupt nichts und im Internet habe ich auch nichts gefunden.

Ich hoffe ihr könnt mir helfen mein Problem zu lösen.
Vielen Dank schon zum Voraus.
 
Das ist der Abschnitt mit der Dropdownliste, wo ich die Daten aus der Datenbank auslese:

CODE
$sql = "SELECT * FROM person;";
$ausgabe = mysql_query($sql);
echo "<form method=\"POST\">";
echo "<select size=\"1\" name=\"name\" vorname=\"vorname\">";
while($row = mysql_fetch_assoc($ausgabe))
{
if($row){
$angabe = $row;
echo "<option value=\"".$row['id']."\">".$row['name']." ".$row['vorname']." ".$row['id']."</option>";
}
}
echo "</select>";
echo "<input type=\"submit\" name=\"go\" value=\"go\">";
echo "</form>";



 
Demnach musst du die Variable als $name (bzw. $_POST['name']) wieder aufnehmen:

QUOTE (Code)echo "<select size=\"1\" name=\"name\" vorname=\"vorname\">";



QUOTE (Code)$sql = "INSERT INTO $table (person_id, von, bis) VALUES ('$name', '$von', '$bis');";


PS: Das Attribut vorname gibt es übrigens in HTML nicht
 
aber beim übergeben in die datenbanktabelle abwesenheit sollte ja die ID übergeben werden... sollte es dann nicht so sein?
CODE
$sql = "INSERT INTO $table (person_id, von, bis) VALUES ($id', '$von', '$bis');";



wie meinst du das attribut vorname gibt es in html nicht?
 
Du kannst die ID natürlich auch als $id bezeichnen, nur dann solltest du dies auch im select Element entsprechend machen

CODE echo "<select size=\"1\" name=\"id\">";


Denn, wenn ich dich richtig verstanden habe, möchtest du doch, dass der gewählte option Wert als $id eingetragen wird?


QUOTE wie meinst du das attribut vorname gibt es in html nicht?


Das vorname="vorname" ergibt keinen Sinn
 
und wie kann ich das dann in die Datenbank speichern wenn ich es so
CODE echo "<select size=\"1\" name=\"id\">";

mache?
 
es funktioniert irgendwie einfach nicht
sad.gif


jetzt habe ich es so:

CODE $sql = "SELECT * FROM person;";
$ausgabe = mysql_query($sql);
echo "<form method=\"POST\">";
echo "<select size=\"1\" name=\"id\">";
while($row = mysql_fetch_assoc($ausgabe))
{
if($row){
echo "<option value=\"".$id."\">".$row['name']." ".$row['vorname']." ".$row['id']."</option>";
}
}

echo "</select>";
echo "<input type=\"submit\" name=\"go\" value=\"go\">";
echo "</form>";

//und beim übergeben in die Datenbank:

$sql = "INSERT INTO $table (person_id, von, bis) VALUES ($id', '$von', '$bis');";


Ich fühle mich im moment so hoffnungslos verloren, weil es irgendwie nie richtig funktioniert...
 
Da fehlt noch ein Hochkomma:

QUOTE (Code)$sql = "INSERT INTO $table (person_id, von, bis) VALUES ('$id', '$von', '$bis');";


Ansonsten: $von und $bis werden direkt aufgenommen - d.h. nicht über ein $_POST['von'] etc.? Entsprechendes müsstest du in solch einem Fall natürlich auch für $id machen
 
nachdem hät gar nüt meh funktioniert
sad.gif

aber etz bini wider ufem gliiche stand wiä vorher und weiss nüm wiiter...
 
sry, wollte nicht schweizerdeutsch schreiben... hat einfach nichts mehr funktioniert und ich machte alles rückgängig, nun bin ich wieder auf dem gleichen stand wie vorher und das hat mich halt irgendwie ein bisschen aufgeregt, dass ich vergass dass ich nicht schweizerdeutsch schreiben sollte...
 
Anna,

Du musst bei

CODE echo "<option value=\"".$id."\">".$row['name']."



statt $id row['id'] angeben.

Ist in Tabelle abwesenheit id auch autoincrement ?

 
Und ist das Formular in Beitrag 9 eigentlich vollständig oder nur ein Ausschnitt? die Variablen id, von und bis sollten im selben Formular übertragen werden

PS: Danke für die hochdeutsche Übersetzung
wink.gif
(in diesem Fall war es aber sogar für mich als Norddeutschen verständlich)
 
das funktioniert auch nicht.
in der abwesenheits tabelle ist die id auch autoincrement, und die person_id sollte ja dann automatisch eingetragen werden wenn man das datum eingibt, aber das bringe ich nicht hin...
 
funktioniert:

CODE
<?php
mysql_connect("localhost","root");
mysql_select_db("test");

if(empty($_POST["go"]))
{

$sql = "SELECT * FROM personen;";
$ausgabe = mysql_query($sql);

echo "<form method=\"POST\" >";
echo "<select size=\"1\" name=\"name\">";
while($row = mysql_fetch_assoc($ausgabe))
{
if($row){
$angabe = $row;
echo "<option value=\"".$row['id']."\">".$row['name']." ".$row['vorname']." ".$row['id']."</option>";
}
}

echo "</select>";
echo "<input type=\"submit\" name=\"go\" value=\"go\">";
echo "<input type=\"text\" name=\"von\">";
echo "<input type=\"text\" name=\"bis\">";
echo "</form>";
}
else
{
$von=$_POST["von"];
$bis=$_POST["bis"];
$name=$_POST["name"];

$sql = "INSERT INTO abwesenheit (pers_id, von, bis) VALUES ('$name', '$von', '$bis');";
$ausgabe = mysql_query($sql);

}

?>


unterscheidet sich nicht sonderlich von deinem, aber wer weiss..
 
nachtrag: musst natürlich die db-verbindung anpassen.

bis auf ein paar kleine Änderungen ist das ansonsten fast 100pro dein Skript
wink.gif
 
Zurück
Oben