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?
Homepage selbermachen 7.852 Themen, 35.619 Beiträge
Das sollte weiterhelfen
http://de.selfhtml.org/html/formulare/auswahl.htm#listen_mehrfach ;-)
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.
Solltest Du in <xmp></xmp> einfassen.
Wo genau ist denn das Problem mit der Datenbank?
Gruß
Borlander
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.
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?
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.
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
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.