PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : [SQL] INSERT bei dynamischen Dropdown-Menüs


nalye
2011-01-08, 17:42:08
Ich nutze folgenden Code, um mir aus einer Tabelle die Daten zu holen:


<tr><td width="120">Sch&uuml;lername:</td>
<td width="120"><select name="schueler_id" size="1"><?php
$sorgucats=mysql_query("SELECT pname FROM t_schueler");
while($satircat=mysql_fetch_row($sorgucats))
{
echo "<option value='schueler'>$satircat[0]</option>";
}?>

</td></tr>


Wie zur Hölle kriege ich das ausgewählte Element in ein INSERT-Statement und damit in eine andere Tabelle? Ich zerbreche mir da schon den ganzen Tag den Kopf... :(

sei laut
2011-01-08, 18:10:17
Wenn die Tabelle schon existiert und du einen vorhanden Eintrag überschreiben willst, mach doch ein Update.

update `tabellenname` set `spaltenname`='$satircat[0]'
Also du kannst in der SQL-Syntax PHP Arrays angeben, möglicherweise gibt das so einen Syntax-Fehler, weil ich das auch immer nachlesen muss..

Oder versteh ich was falsch?

nalye
2011-01-08, 18:17:53
Ich will aus der einen Tabelle den entsprechenden Eintrag bekommen, um ihn in einer anderen Tablle zu anderen Einträgen (ebenfalls über Dropdowns) zu speichern. Ich hoffe, das war so halbwegs verständlich :ugly:

Matrix316
2011-01-08, 18:31:40
Mit Insert? ;)
http://sql.1keydata.com/de/sql-insert-into.php

INSERT INTO Store_Information (store_name, Sales, Date)
VALUES ('Los Angeles', 900, '10.Jan.1999')


oder meinste sowas wie

INSERT INTO Store_Information (store_name, Sales, Date)
SELECT store_name, Sales, Date
FROM Sales_Information
WHERE Year(Date) = 1998

nalye
2011-01-08, 18:39:59
Mal von vorne ;)

Ich habe folgende "GUI":

http://666kb.com/i/bpxpoa2u0xbvcog5n.jpg

In den Dropdown-Menüs sind verschiedene Werte, die jeweils aus einer eigenen Tabelle gelesen werden (mit obigem Code). Diese 3 Werte sollen in die entsprechende Tabelle des letzten Menüs geschrieben werden (wieder eine eigene Tabelle).

Nun ist meine Frage, mit welchem Statement ich den ausgewählten Wert der Menüs bekomme. Statisch ist ja klar, aber das ganze soll eben dynamisch ablaufen - und hier verzweifle ich :(

DanMan
2011-01-08, 19:55:18
Ich gehe mal davon aus, dass du PHP benutzt, weil das an deinem Code-Block steht.

Die Werte der ausgewählten Optionen landen entweder im $_GET oder $_POST Array nach dem Abschicken des Formulars. Die nimmst du dann und schreibst sie in die entsprechende Tabelle. Wo ist das Problem?

nalye
2011-01-08, 20:02:52
Dass ich davon keine ahnung habe? :D

PatkIllA
2011-01-08, 20:04:59
Deine GUI passt aber auch nicht. Du kannst den vierten Wert doch erst bestimmen, nachdem man die vorherigen 3 Werte ausgesucht hat und das Formular abgeschickt hat.
Es sei denn du willst mit AJAX anfangen.

Matrix316
2011-01-08, 20:25:14
Wann sollen die denn in die Tabelle für den vierten geschrieben werden? Und sollen je nach ausgewählter Kombination neue Datensätze ergeben? Oder nur eine bestimmte Kombination?

nalye
2011-01-09, 03:50:42
Schreiben sollte er nach dem Klick auf den Button - und die Kombinationen sind frei.

Ich möchte quasi folgendes: Schüler X aus Betrieb Y (Betreuende Lehrkraft Z) wird Praktikum A zugewiesen. Praktikum A enthält dann eine Tabelle mit den Spalten Schüler X, Betrieb Y und Lehrkraft Z (Eben die Werte aus den Dropdowns 1-3)

Matrix316
2011-01-09, 14:38:11
Ei dann isses ja noch einfacher. ;) Du musst einfach nur beim Button Click eine Funktion aufrufen, die mit einem Insert Statement (siehe oben) als Werte die drei Drop Down Werte nimmt.

Da ich nicht so der PHP Crack bin, kann ich dir da leider nicht die Syntax liefern, aber im Internet gibts so viele Seiten wo das bestimmt beschrieben wird. :)

Bei ASP.NET wäre es einfach ddlName.SelectedValue, aber das ist hier ja ein wenig anders. ;)

Wobei du überlegen könntest, ob du direkt den Wert aus der DropDown Liste reinschreibst, oder die ID des Wertes aus der Datenbank. Wenn du nämlich dann in der Ursprünglichen Liste den Namen änderst, wäre das für die letzte Liste egal...

nalye
2011-01-09, 16:27:33
Ei dann isses ja noch einfacher. ;) Du musst einfach nur beim Button Click eine Funktion aufrufen, die mit einem Insert Statement (siehe oben) als Werte die drei Drop Down Werte nimmt.
Und hier liegt mein Problem: Wie zur Hölle bekomme ich den Wert? Die Drop Down Werte werden ja aus einer Tabelle ausgelesen, die sich ändern kann...

PatkIllA
2011-01-09, 16:35:11
Und hier liegt mein Problem: Wie zur Hölle bekomme ich den Wert? Die Drop Down Werte werden ja aus einer Tabelle ausgelesen, die sich ändern kann...
Steht hier doch schon:
Die Werte der ausgewählten Optionen landen entweder im $_GET oder $_POST Array nach dem Abschicken des Formulars.Nach dem Abschicken des Formulars ist die Kernaussage. An welche Seite die Werte geschickt werden steht im action-Attribut deines Form-Tags und ob es $_GET oder $_POST kannst du mit dem method attribute festlegen.

DanMan
2011-01-09, 17:21:09
Füg einfach mal das in die Ausgabe der entsprechenden Seite ein:
print_r($_REQUEST);
Dann wirds vielleicht klar.

Coda
2011-01-09, 17:26:04
Es riecht nach SQL Injection ;(

nalye
2011-01-10, 00:42:45
Gut, werde ich mal testen. Danke :)

@Coda: Ist keine Frage der Sicherheit, ist nur ein lokales Projekt, welches das WWW niemals sehen wird

RattuS
2011-01-10, 11:05:51
Was du brauchst:

deineSeite.php:
<form action="deineSeite.php" method="post">

<!-- hier dein Code zum Auslesen der Daten aus der Datenbank -->
<!-- setz im option-Tag den name-Attribut, z.B. -->
<option name='schueler'>Wert aus der DB</option>

<!-- der Button zum Absenden des Formulars -->
<input class="button" type="submit" value="Hinzufügen" />

</form>

deineSeite.php:
// hier prüfst du, ob die selbe Seite beim Aufrufen nicht schon Daten gesendet bekommen hat
if (isset($_POST)) // ggf. weitere Validierung
{
// hier kannst du jetzt dein INSERT-Statement basteln, in dem du aus $_POST['schueler'] den String des vorher ausgewählen Eintrages holst
}