Homepage selbermachen 7.851 Themen, 35.615 Beiträge

Mehrfachauswahl Option aus sql-Abfrage erstellen

jdeen / 8 Antworten / Baumansicht Nickles

Hallo zusammen.

Ich lege eine neue Baugruppe an und ordne diese über ein dropdown (Option) einem Produkt zu.
Diese Info wird in der Datenbank gespeichert. Zum Editieren werden nun die Daten gelesen und
das entsprechende Produkt im dropdown als selected gekennzeichnet.
Wenn nun die Baugruppe bei mehreren Produkten verwendet wird, mache ich das über die multiple-Funktion
und lege für jedes Produkt in der Baupruppen-Zuordnungsdatei einen Eintrag an.
So weit so gut.
Jetzt habe ich das Problem, daß ich es einfach nicht schaffe, das nun mehrere Produkte als selected gekennzeichnet werden.

Wer weiß Rat?

. . . when the kid next door walking on the moon . . .Wirklich gute Jdeen passen auf einen Bierdeckel
bei Antwort benachrichtigen
Borlander jdeen „Mehrfachauswahl Option aus sql-Abfrage erstellen“
Optionen
bei Antwort benachrichtigen
jdeen Borlander „Das sollte weiterhelfen http://de.selfhtml.org/html/formulare/auswahl.htm...“
Optionen

Danke für die schnelle Antwort.
Das Prinzip ist schon klar. Mein Problem liegt in der Verarbeitung der SQL-Abfrage.

Ich wollte jetzt eigentlich ein Code-schnipsel senden, aber da kommt nichts an.

Auf jeden Fall herzlichen Dank.

. . . when the kid next door walking on the moon . . .Wirklich gute Jdeen passen auf einen Bierdeckel
bei Antwort benachrichtigen
Borlander jdeen „Danke für die schnelle Antwort. Das Prinzip ist schon klar. Mein Problem liegt...“
Optionen
Ich wollte jetzt eigentlich ein Code-schnipsel senden, aber da kommt nichts an.
Solltest Du in <xmp></xmp> einfassen.

Wo genau ist denn das Problem mit der Datenbank?


Gruß
Borlander
bei Antwort benachrichtigen
jdeen Borlander „ Solltest Du in einfassen. Wo genau ist denn das Problem mit der Datenbank?...“
Optionen

Habe jetzt einfach Klammern verwendet ( )


Hier das php-schnipsel:
print "(td width=180 align=right)(font size=2)Produkt-Zuordnung :(/td)\n";

print "(td width=300)\n";
print "(select name=Feld3[] multiple size=5 style=\"width:38ex;\")\n";
print "(option value=1)keinem Produkt zugeordnet\n";

while ($zeile2 = mysql_fetch_array($ergebnis2)) : // $ergebnis2=alle angelegten Produkte
print "(option";


while ($zuordnung = my_fetch_array($abfrage)) : // $abfrage=Produkte, dem die Baugruppe zugeordnet ist
if($zeile2["P_ID"] == $zuordnung["BZ_P_ID"]) { // hier liegt mein Problem
print " selected";}
endwhile;

print " value=".$zeile2["P_ID"].")".$zeile2["P_Bez"]."\n";
endwhile;
print "(/select)\n";
print "(/td)\n";

ende


Also: dort liegt mein Problem.
Es wird nichts markiert.

. . . when the kid next door walking on the moon . . .Wirklich gute Jdeen passen auf einen Bierdeckel
bei Antwort benachrichtigen
Borlander jdeen „Habe jetzt einfach Klammern verwendet Hier das php-schnipsel: print td width 180...“
Optionen

Taucht denn das selected irgendwo in der Ausgabe auf?
Ansonsten scheint mir das insgesamt unnötig aufwändig mit zwei Abfragen. Warum nutzt Du kein JOIN?

bei Antwort benachrichtigen
jdeen Borlander „Taucht denn das selected irgendwo in der Ausgabe auf? Ansonsten scheint mir das...“
Optionen

Nein, das selected taucht nicht auf.

Wenn ich ein JOIN verwende, wie kann ich dann 2 Durchläufe (while) starten?

Es sollen die Produkte angezeigt und bei jedem Produkt geprüft, ob ein selected angezeígt werden soll.

Eine Schleife in einer Schleife.

. . . when the kid next door walking on the moon . . .Wirklich gute Jdeen passen auf einen Bierdeckel
bei Antwort benachrichtigen
Borlander jdeen „Nein, das selected taucht nicht auf. Wenn ich ein JOIN verwende, wie kann ich...“
Optionen

Wenn Du in SQL die Produkte mit den gewählten Produkten mit JOIN verknüpfst, dann brauchst Du keine zwei while mehr...

So wie Du es jetzt gerade machst wird die innere while-Schleife beim zweiten Durchlauf der äußeren while-Schleife nicht mehr durchlaufen, da schon im ersten Durchlauf die gesamte Ergebnismenge abgerufen wurde...

Alternativ könnte man die Daten der Auswahl auch in ein assoziatives Array packen und (true für jedes gewählte Produkt, sonst nix).


Gruß
Borlander

bei Antwort benachrichtigen
jdeen Borlander „Wenn Du in SQL die Produkte mit den gewählten Produkten mit JOIN verknüpfst,...“
Optionen

RICHTIG !!!

while-Schleifen laufen nur 1x.

Habe nun Arrays gebildet und werte diese innerhalb der Haupt-whileschleife aus:

-------------------------------------------------------------------------------------------------------------------
while ($zeile2 = mysql_fetch_array($ergebnis2)) :
print "(option";

foreach ($datenp as $wert) {
if($zeile2["P_ID"] == $wert) {print " selected";}
}

print " value=".$zeile2["P_ID"].")".$zeile2["P_Bez"]."\n";
endwhile;
-------------------------------------------------------------------------------------------------------------------

Kaum macht man es richtig, schon funktionierts.

. . . when the kid next door walking on the moon . . .Wirklich gute Jdeen passen auf einen Bierdeckel
bei Antwort benachrichtigen