Problem mit PHP dropdown Menü

Hallo Forum,

ich habe ein PHP-Dropdown Menü programmiert mit dem ich gerade ein kleines Problem habe.

Ausgangssituation:
Die Werte des Dropdown-Menüs werden aus „Tabelle 1“ abgefragt.
Enthalten sind die Spalten „id“ und „bezeichnung“.

Die „id“ des aus dem Dropdown-Menüs selektierten Wertes wird in der „Tabelle 2“ abgespeichert.

Nun möchte ich das der Wert „bezeichnung“ aus „Tabelle 1“ immer mit dem abgefragten Wert aus „Tabelle 2“ vorselektiert wird, sobald ich die User-Maske öffne.

Das habe ich leider noch nicht hinbekommen.
Hier der Code:

/*Abfragen, ob bereits etwas selektiert wurde und der Wert in der Tabelle 2 steht*/

if ($anzahl2 "" || !is\_null($anzahl2)) {

/*Beginn des Dropdown-Menüs*/

echo '';

/*Das Dropdown-Menü mit den Werten aus „Tabelle 1“ füllen*/

while ($rows1 = mysql\_fetch\_array($result,MYSQL\_ASSOC))
{

/*Prüfen, ob bereits ein Wert vorselektiert wurde und gespeicherten Wert als Value einsetzen*/

 if ($antrieb) {
 echo "".$rows1["bezeichnung"]."        ";

 } else 

/*Andernfalls nur das Dropdown-Menü füllen aus „Tabelle 1“*/

 echo "".$rows1["bezeichnung"]."        "; 
}
}
echo ''; 

Ich weiss das hier ein Fehler drin steckt, allerdings weiss ich nicht wo. Für Eure Hilfe wäre ich sehr dankbar.

Viele Grüße

Moin,

ich habe ein PHP-Dropdown Menü programmiert

PHP kennt keine Menüs, PHP erzeugt ja nur HTML und der Browser stellt das als Menü dar. Zu dem Zeitpunkt der Darstellung läuft aber schon lange kein PHP mehr.

Die Werte des Dropdown-Menüs werden aus „Tabelle 1“ abgefragt.
Enthalten sind die Spalten „id“ und „bezeichnung“.

Soweit klar.

Die „id“ des aus dem Dropdown-Menüs selektierten Wertes wird
in der „Tabelle 2“ abgespeichert.

Aber ja erst beim zweiten Aufruf des Scripts, also nachdem der Nutzer das Formular abgeschickt hat.

Nun möchte ich das der Wert „bezeichnung“ aus „Tabelle 1“
immer mit dem abgefragten Wert aus „Tabelle 2“ vorselektiert
wird, sobald ich die User-Maske öffne.

Was ist bei Dir die „User-Maske“?

Du bekommst die selektierten Werte ja erneut an Dein Script übergeben. Die benutzt Du dann beim select auf Tabelle1 als Angaben bei „where“.

Das habe ich leider noch nicht hinbekommen.

Ich vermute auch Verständnisprobleme beim Ablauf des ganzen, was genau passiert, wenn der User das erste Mal das Script aufruft, wenn er dann am Formular etwas auswählt, das Formular abschickt und dann das Script ein zweites Mal läuft, eine neue HTML-Seite erstellt, die dann an den Browser ausgeliefert wird.
Ist Dir der Ablauf klar?

Hier der Code:

Der ist natürlich alles andere als vollständig. Da steckt ja nur der Code für das select drin, aber nicht die Abfrage aus der Datenbank und nicht die Analyse der vom Formular übergebenen Daten.

/*Abfragen, ob bereits etwas selektiert wurde und der Wert in
der Tabelle 2 steht*/

Über die Variablen $_POST bzw. $_GET, je nachdem, wie Dein Formular aufgebaut ist. Schau Dir die Inhalte an mit print_r($_POST); dann siehst Du, was Dein Formular an das Script übergibt und welche Werte Du wie auslesen kannst.

Ich weiss das hier ein Fehler drin steckt, allerdings weiss
ich nicht wo. Für Eure Hilfe wäre ich sehr dankbar.

IMHO fehlt da quasi alles, deswegen kann da auch kein Fehler drin stecken :wink:

Liebe Grüße,
-Efchen

P.S.: U.U. ist es einfacher, wenn man die Seite sieht, damit man versteht, was da passieren soll.

Moin,

ich habe ein PHP-Dropdown Menü programmiert

PHP kennt keine Menüs, PHP erzeugt ja nur HTML und der Browser
stellt das als Menü dar. Zu dem Zeitpunkt der Darstellung
läuft aber schon lange kein PHP mehr.

:smiley:anke für den Hinweis!

Die Werte des Dropdown-Menüs werden aus „Tabelle 1“ abgefragt.
Enthalten sind die Spalten „id“ und „bezeichnung“.

Soweit klar.

Die „id“ des aus dem Dropdown-Menüs selektierten Wertes wird
in der „Tabelle 2“ abgespeichert.

Aber ja erst beim zweiten Aufruf des Scripts, also nachdem der
Nutzer das Formular abgeschickt hat.

Richtig! Erst beim zweiten Aufruf des Scripts.

Nun möchte ich das der Wert „bezeichnung“ aus „Tabelle 1“
immer mit dem abgefragten Wert aus „Tabelle 2“ vorselektiert
wird, sobald ich die User-Maske öffne.

Was ist bei Dir die „User-Maske“?

Die User-Maske ist bei mir das Formular in dem das Script enthalten ist.

Du bekommst die selektierten Werte ja erneut an Dein Script
übergeben. Die benutzt Du dann beim select auf Tabelle1 als
Angaben bei „where“.

Hab ich soweit verstanden. Das Problem dabei ist das ich die

Das habe ich leider noch nicht hinbekommen.

Ich vermute auch Verständnisprobleme beim Ablauf des ganzen,
was genau passiert, wenn der User das erste Mal das Script
aufruft, wenn er dann am Formular etwas auswählt, das Formular
abschickt und dann das Script ein zweites Mal läuft, eine neue
HTML-Seite erstellt, die dann an den Browser ausgeliefert
wird.
Ist Dir der Ablauf klar?

Jo, ist mir klar.

Hier der Code:

Der ist natürlich alles andere als vollständig. Da steckt ja
nur der Code für das select drin, aber nicht die Abfrage aus
der Datenbank und nicht die Analyse der vom Formular
übergebenen Daten.

/*Abfragen, ob bereits etwas selektiert wurde und der Wert in
der Tabelle 2 steht*/

Über die Variablen $_POST bzw. $_GET, je nachdem, wie Dein
Formular aufgebaut ist. Schau Dir die Inhalte an mit
print_r($_POST); dann siehst Du, was Dein Formular an das
Script übergibt und welche Werte Du wie auslesen kannst.

Ich weiss das hier ein Fehler drin steckt, allerdings weiss
ich nicht wo. Für Eure Hilfe wäre ich sehr dankbar.

IMHO fehlt da quasi alles, deswegen kann da auch kein Fehler
drin stecken :wink:

Liebe Grüße,
-Efchen

P.S.: U.U. ist es einfacher, wenn man die Seite sieht, damit
man versteht, was da passieren soll.

Es ist zu kompliziert das ganze hier hinein zu posten, da das Formular als eigene PHP-Datei fungiert, in dem das oben beschriebene drop-down-listen-script hinein includiert ist.

Dein Tip mit dem Abfragen der gesendeten Daten mit $_GET oder $_POST ist gut. Hätte ich selber dran denken müssen. Danke Dir! :smile:

Aber nochmal zum eigentlichen Problem…
Wie bringe ich es dem script bei die „id“ aus „Tabelle 2“ zu lesen und die Beschreibung aus „Tabelle 1“ selektieren?

Natürlich müssen in der dropdown-liste alle Einträge angezeigt werden.

Moin,

Es ist zu kompliziert das ganze hier hinein zu posten

Das hab ich ja auch nicht gemeint, sondern einen Link zur Seite.
Aber vielleicht hat Dir meine Antwort ja schon geholfen.

Wie bringe ich es dem script bei die „id“ aus „Tabelle 2“ zu
lesen und die Beschreibung aus „Tabelle 1“ selektieren?

select t1.beschreibung from tabelle1 t1, tabelle2 t2
where t1.id = t2.id

Meinst Du das oder so ähnlich? Das hat ja aber nichts mit PHP zu tun.

Gruß,
-Efchen

Hi Efchen,

äääähhhh…SQL???

Reden wir nicht von Datenbanktabellen?

Vielleicht wäre ein Link zur Seite doch nicht so verkehrt gewesen?

Moin!

Ja, wir reden natürlich über DB-Tabellen.
Es handelt sich um ein komplexes webbasiertes Programm für den KFZ-Sachverständigen Sektor mit mehreren Modulen, welches ich programmiert habe.
Das dropdown, über das wir reden, ist in einem der Module enthalten.
Leider ist es noch nicht online und läuft nur lokal auf meinem PC in einer VM. Daher kann ich es leider nicht online stellen. Sorry.
Aber das kleine Problemchen muss auch so lösbar sein.

Reden wir nicht von Datenbanktabellen?

Vielleicht wäre ein Link zur Seite doch nicht so verkehrt
gewesen?

Moin,

Leider ist es noch nicht online und läuft nur lokal auf meinem
PC in einer VM. Daher kann ich es leider nicht online stellen.

Auch sorry, aber das ist kein Grund und für mich nicht nachvollziehbar. Vermutlich ist die Lösung Deines Problems nicht so dringend.

Aber vielleicht fällt einem anderen Trockenschwimmer ja noch was ein.

Weiterhin viel Erfolg,
-Efchen

OK. Kein Problem.
Wünsche Dir noch einen erfolgreichen und angenehmen Arbeitstag.

Viele Grüße

Problem gelöst!

Hallo,

es macht Sinn, wenn man die Problemlösungen hier veröffentlicht, auch wenn man sie selbst gefunden hat, dann haben auch andere (Mitlesende) etwas davon!

Danke,
-Efchen

Hallo Efchen,

anbei die Lösung:

Erläuterung:
Es handelt sich um die Abfrage der gespeicherten „Lack-ID“, die über die Dropdown-Liste ausgewählt und in „Tabelle B“ gespeichert wurde.
Die gespeicherte „Lack-ID“ möchten wir nun aus „Tabelle B“ abfragen um sie anschliessend mit den ID’s aus „Tabelle A“ zu vergleichen um die Selektion in der Dropdown-Liste zu ermöglichen. So sieht der Kunde durch die Vorselektion immer in dem entsprechenden Formular mit der Dropdown-Liste, welche Lack-ID er u. a. in „Tabelle B“ vorher gespeichert hat.

Grundvoraussetzung:
Wir speichern grundsätzlich die kunden-ID in einer Session ab um immer darauf zugreifen zu können. So fallen jegliche Abfragen leichter.
Wir haben 2 Tabellen mit folgenden Attributen in unserer DB:

Tabelle A -> enthält jegliche Lack-ids und zugehörigen Lackbezeichnungen:
id, lackbezeichnung

Tabelle B -> enthält die bereits gespeicherte Lack-ID.
kunden_ID, lack_id (und viele weitere Attribute)

/\*[Datenbankverbindung]\*/
session\_start(); /\*Session starten um auf einige unserer Kundendaten zuzugreifen...wichtig für uns ist hier die in der SESSION zuvor gespeicherte kunden-id \*/

$HOST = "localhost";
$PORT = "3306";
$USER = "abc";
$PASS = "defghij789123";
$DB = "MeineDB";

$conn = mysql\_connect($HOST . ":" . $PORT , $USER, $PASS);
mysql\_select\_db($DB);


$query = "SELECT kunden\_ID, lack\_id FROM Tabelle\_B WHERE kunden\_ID= '".$\_SESSION['x\_kunden\_id']."'";

$result = mysql\_query($query) or die("Fehler bei der Vorselektion der Lacke! ".mysql\_error());

$row = mysql\_fetch\_array($result);
$vorselektion = $row['lack\_id'];

$query2="SELECT id, lacke FROM Tabelle\_A";
$result2 = mysql\_query($query2) or die("Fehler bei der Anzeige der Lacke: ".mysql\_error());
echo '

';
echo ‚‘;

while ($row2 = mysql_fetch_array($result2, MYSQL_ASSOC)) {

echo ‚‘;
} else {
$select = „“;
echo $selekt.’>’;
}

echo $row2[‚lacke‘].’’;

}
echo ‚‘;
echo ‚‘;

Einfach und unkompliziert. Viel Spaß mit der Lösung. :wink:

Lieben Gruß,
Mo

Moin,

okay, da hatte ich Dich wirklich falsch verstanden und ein viel komplizierteres Problem vermutet. Ein Link zur Seite, nachdem ich in meiner ersten Antwort gefragt habe, hätte da viel Klarheit schaffen können.

Aber hier ist mir noch ein Fehler aufgefallen:

echo ‚‘;

while ($row2 = mysql_fetch_array($result2, MYSQL_ASSOC)) {

echo ’

Hallo,

ja, das hatte ich bereits bemerkt und gestern noch korrigiert.
Danke für den Hinweis. :smile:

Liebe Grüße und bis zum nächsten Problem.

Mo