Webhosting, Domains und VServer von Host Europe

Forum: Homepage selbermachen, HTML und Co 34.701 Beiträge

jdeen

Mehrfachauswahl Option aus sql-Abfrage erstellen

jdeen / 8 Antworten / Baumansicht
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
Benachrichtigung bei Reaktionen
Optionen
Borlander jdeen

„Mehrfachauswahl Option aus sql-Abfrage erstellen“

Benachrichtigung bei Reaktionen
Optionen
jdeen Borlander

„Das sollte weiterhelfen http: ...“

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
Benachrichtigung bei Reaktionen
Optionen
Borlander jdeen

„Danke für die schnelle Antwort. Das Prinzip ...“

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

Wo genau ist denn das Problem mit der Datenbank?


Gruß
Borlander
Benachrichtigung bei Reaktionen
Optionen
jdeen Borlander

„Ich wollte jetzt eigentlich ein ...“

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
Benachrichtigung bei Reaktionen
Optionen
Borlander jdeen

„Habe jetzt einfach Klammern verwendet Hier ...“

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?
Benachrichtigung bei Reaktionen
Optionen
jdeen Borlander

„Taucht denn das selected irgendwo in der ...“

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
Benachrichtigung bei Reaktionen
Optionen
Borlander jdeen

„Nein, das selected taucht nicht auf. Wenn ...“

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
Benachrichtigung bei Reaktionen
Optionen
jdeen Borlander

„Wenn Du in SQL die Produkte mit den ...“

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
Benachrichtigung bei Reaktionen
nach oben
0.036515