PHP Dropdownliste bei Anwahl Daten ausgeben

OrionXPdeluxe

Grünschnabel
Hi,

ich habe folgendes Problem. Ich habe eine Dropdown-Liste mit PHP erstellt, welche die Daten aus einer DB holt. Es gab bereits einen ähnlichen Beitrag in diesem Forum. Diesen bin ich auch mehrmals durchgegegangen. Allerdings verwende ich ein anderen PHP-Code für meine Dropdown-Liste, als in dem anderen Beitrag. Hier erstmal der PHP-Code meiner Dropdown-Liste:

PHP:
$result = mysql_query("SELECT DISTINCT Steinart FROM Katalog");
 echo "<select>" ;
 echo "<option>Lagerstein Wahl:</option>";
            while ($res = mysql_fetch_assoc($result)) {
                $a = $res['Steinart']; 
 echo "<option>$a</option>";               
				
            }
 
            echo "</select>";

In dieser Dropdownliste werden also alle Daten aus der Spalte "Steinart" gezogen.
Nun möchte ich, dass, wenn eine bestimmte Steinart angewählt ist, bestimmte Angaben, evt. auch Bilder, angezeigt werden.
 
Der Beitrag war von ShadowMan " Dropdown-Feld aus Datenbank füllen" vom 03.04.2006 .
Mein Problem ist folgendes:
Wenn man aus der Dropdownliste einen Eintrag, wie z.B. ein bestimmtes Material, auswählt, sollen dann alle verfügbaren Produkte aus diesem Material, am besten mit Bild, angezeigt werden.
Ich weiss zwar das es mit einer OnChange operation funktioniert, aber nicht wie ich das realisieren soll. Welches Script muss ich benutzen, wo kommt es hin, wie lade ich die dazugehörigen Bilder und wie setze ich die Ausgabe an einen bestimmten Platz, wie z.B. in ein "div-Feld".
Ich muss dazu sagen, dass ich mich mit JS so gut wie gar nicht auskenne und ich eigentlich aus dem grafischen Bereich komme.
 
Habe jetzt erstmal versucht ob ich überhaupt Daten aus der Dropdownliste anzeigen lassen kann, aber anscheind funktioniert das auch nicht so ganz. Hier nochmal der Code von der Dropdownliste:

PHP:
    $result = mysql_query("SELECT DISTINCT Steinart FROM Katalog ORDER by Steinart");
 echo "<select name=Steinart>" ;			
 echo "<option>Lagerstein Wahl:</option>";
            while ($res = mysql_fetch_assoc($result)) {
                $a = $res['Steinart']; 
 echo "<option value='$a'>$a</option>";           
				
            }

            echo "</select>";

Diese beinhaltet 3 verschiedene Auswahloptionen. Nun möchte ich, dass wenn eine gewählt worden ist, der Eintrag an einer anderen Stelle im Dokument angezeigt wird. Das habe ich mit folgendem Code versucht

PHP:
if ($a=="Breitsteine")
{
echo "Breitsteine";
			}
else
{
echo "Keine Ausgabe";
}

Ich erhalte allerdings immer "keine Ausgabe"
 
ich glaube das ist auch eine sache von ajax oder javasript. du kannst ja nicht mehr mit php arbeiten, wenn die seite schon geladen ist.

oder sehe ich das falsch?
 
Hi,

richtig. Die Auswahlliste braucht einen onchange-Handler, in dem eine Javascript-Funktion aufgerufen wird, die die gewünschten Daten per XMLHTTPRequest vom Server holt. Dabei kann die angeforderte Resource auf dem Server z.B. ein kleines PHP-Script sein, das die Auswahl des ersten Dropdown als GET-Parameter erwartet, für diesen die Daten aus der DB liest und daraus den HTML-Code für die zweite Auswahlliste generiert.

Orion, wie Dein PHP-Code für die Liste aussieht, ist dabei ja nicht wichtig, solange er das liefert, was Du haben willst. So ganz ohne Javascript-Kenntnisse wirst Du aber bei Deinem Vorhaben nicht hinkommen. Versuch einfach erstmal, Sven's Beispiel nachzuvollziehen.

LG
 
Ich habe es auch ohne JS geschaft :D Mittlerweile werden je nach Auswahl Datensätze ausgegeben und je nachdem, wieviel Datensätze ich habe, werden im Dokument Tabellen generiert. Jetzt aber das nächste Problem. Die Datensätze werden also ausgelesen und in eine temporäre Datenbank-Tabelle geschrieben und dann die Anzahl der Datensätze ausgelesen. Jetzt hab ich zwar die Tabellen, die allerdings noch leer sind.
Hier mal der Code wie die Tabelle generiert wird:
PHP:
$res = mysql_query("SELECT * FROM TABLAGtemp");

$num = mysql_num_rows($res);
echo "$num Datensätze gefunden";

$i = $num; 

echo "<br />";


while ($i > "0") 
{
   echo 
   
   "<table width='539' border='1'>
  <tr>
    <td id=mod_preview width='170' height='120' rowspan='5'>Bild</td>
    <td id=art_nr width='160' height='30'>
    
	</td>
  </tr>
  <tr>
    <td id=mod_name height='30'>Model</td>
  </tr>
  <tr>
    <td id=mat_name height='30'>Material</td>
  </tr>
  <tr>
    <td id=sym_name height='30'>Symbolik</td>
  </tr>
  <tr>
    <td id=size_info height='30'>Grösse</td>
  </tr>
</table> <t />";
   echo "<br />";
   $i = $i - "1";  
}
Da die Tabelle in einer echo-Anweisung steht, bekomm ich keinen Code mehr unter um die Daten ,die in der temporären DB-Tabelle stehen, abzurufen. Und vorallem, steht dann in jeder Tabelle dann nur ein Wert und nicht in einer Tabelle alle Werte? Habe schon überlegt, ob es nicht möglich wäre, die Formatierung der Tabelle über CSS zu lösen, dann bräuchte ich ja die ganzen Table-Tags nicht, oder?
 
Zuletzt bearbeitet:
Hi,

Da die Tabelle in einer echo-Anweisung steht, bekomm ich keinen Code mehr unter um die Daten ,die in der temporären DB-Tabelle stehen, abzurufen.

Warum? Was hat das mit der echo-Anweisung zu tun?

PHP:
echo ' fester Textblock ' . $text_baustein . ' noch ein fester Textblock';


Und vorallem, steht dann in jeder Tabelle dann nur ein Wert und nicht in einer Tabelle alle Werte?

Warum machst Du das dann so? Gib halt in der Schleife nur die Tabellenzeilen aus.

Habe schon überlegt, ob es nicht möglich wäre, die Formatierung der Tabelle über CSS zu lösen, dann bräuchte ich ja die ganzen Table-Tags nicht, oder?

Wenn Du tabellarische Daten darstellen willst, solltest Du auch eine Tabelle dafür benutzen.

LG
 
Hallo mein junger Freund.^^

Dafür benötigst du Ajax (Dynamisches nachladen von Daten).

Hier mal ein gutes Tutorial.
http://www.admin-wissen.de/tutorials/eigene-tutorials/webentwicklung/ajax-tutorial/

Meine Anmerkung (wirst du verstehen, wenn du das Tutorial gelesen hast):

Erstelle eine Datei materialdaten.php, die per POST oder GET Request (deine Vorliebe).
eine HTML-Tabelle mit Bild, und Daten, und eventuellen Produkten (was immer du willst).
ausgibt.

Als JavaScript-Befehl (Ausfühung nach dem Request) machst du dann:
Code:
 document.getElementById('id_deines_divs').innerHTML = req.responseText;

Solltest du das nicht verstehen, nachdem du das Tutorial gelesen hast, melde dich nochmal.

Liebe Grüße
 
So.... endlich fertig! Alles funktioniert einwandfrei. Und das sogar ohne Ajax oder JavaScripts. Alles reiner PHP-Code, bis auf die Dropdown-Liste. War unheimlich viel Arbeit und hat viel Nerven gekostet. Aber auch Dank eurer Hilfe bin ich zu diesem Ergebnis gekommen.
Nochmal zu der Sache mit JavaScripts oder Ajax. Wer will kann auch ohne :D

Ich würde ja den Code gerne hier posten, aber da dieser echt lang ist und viel auf andere php-Datein zugegriffen wird,denke ich nicht das es viel Sinn machen würde. Aber ich stehe gerne für spezifische Fragen bereit.
 
Zurück