mysql, php und Dropdown

  • Hallo,

    ich möchte aus einer mysql Datenbank verschiedene Dropdowns auswählen. Dabei soll mein Feld Dropdown nur die Durchmesser anzeigen die auch zur Schraube gehören. Das tuts es bereits. Nun kommt die Länge dazu und diese wird nicht Abhängig von Schraube und Durchmesser angezeigt, sondern wird nur abhängig von der Schraube angezeigt. Das gleiche gilt für das Feld Aufnahme.

    Ich haben schon mir alle logischen Möglichkeiten ausprobiert aber irgendwie stehe ih auf dem Schlauch. Vielleicht sieht ja jemand auf den ersten Blick wo mein "Fehler liegt"


    grafik.png

    Schraube und Durchmesser funktioniert

    Länge und Aufnahme werden nicht mehr abhänging von den vorher eingegeben dropdowns berechnet und orientiren sich nur an der Schraube.


    Code:



    Ich habe hier schon alles probiert. Leider ohne Erfolg

    Im Prinzip hätte ich gerne

    Dropdown1 (Schraube) = select distinct (Schraube) from powerfast_1 where Schraube = '$Schraube'" // $Schraube=Ausgewählter Wert im Dropdown

    Dropdown2 (Durchmesser) = select distinct (Schraube, Durchmesser) from powerfast_1 where Schraube = '$Schraube'" // $....=Ausgewählter Wert im Dropdown

    Dropdown2 (Laenge) = select distinct (Schraube, Durchmesser, Laenge) from powerfast_1 where Schraube = '$Schraube'" and Durchmesser = '$Durchmesser'" // $....=Ausgewählte Werte im Dropdown

    Dropdown2 (Aufnahme) = select distinct (Schraube, Durchmesser, Laenge, Aufnahme) from powerfast_1 where Schraube = '$Schraube' and Durchmesser = '$Durchmesser' and Laenge= '$Laenge'" // $....=Ausgewählte Werte im Dropdown

    Wie kann ich so etwas hinbekommen?

    Tabelle:

    grafik.png


    Ich habe auch schon überlegt ob if(strlen nciht mit dem decimal Feld kompatibel ist?

    Alle Infos helfen. Ist sicher nicht so schwierig aber ich als EInsteiger lerne gerade noch.

    Liebe Grüße

    Tim

  • Hallo Tim und willkommen im Forum!

    Erst mal zu deiner Detailfrage:

    Zitat

    Ich habe auch schon überlegt ob if(strlen nciht mit dem decimal Feld kompatibel ist?

    Vermutlich bezieht sich das auf die Validierung der Eingaben. Auch wenn die betr. Werte in der DB vom Typ int sind, sind die Werte, die aus den Eingabefeldern kommen, Strings. Daher ist es nicht verkehrt, ihre Länge zu prüfen.

    Der Kern der Sache scheint mir jedoch dieser Code zu sein:

    Code
    if ((strlen($Schraube)) > 0 and (! ctype_alpha($Schraube))) {
        echo "Data Error";
        exit;
    }

    Hier steigst Du aus wenn die Länge >0 ist, d. h. eine Eingabe vorhanden. Das ist jedoch der richtige Fall, d. h. Du musst die Abfrage genau umgekehrt machen.

    Darüber hinaus: Wie ist denn dieser Code entstanden?

    Viel Erfolg und beste Grüße, Ulrich

  • Hallo Ulrich,

    erstmal dreimal Danke.

    Danke für die freundliche Aufnahme, dann Danke, dass Du DIr die Mühe gemacht hast meine Nachricht so intensiv zu lesen und dann Danke für die Tipps.

    Nun kann ich zumindest ausschließen dass es sich um die Einträge in mySQL handelt.

    Und ich muss zugeben, ich bin blutiger Anfänger im PHP und mySQL. Ich habe vor drei Tagen erst angefangen mich damit zu beschäftigen.

    Daher habe ich mir erst die Basics angelesen und dann ein Script importiert und versucht auf meine Belange "umbiegen". So lerne ich das meist am schnellsten.

    Three interlinked dropdown listbox showing Country State and city by using MySQL records with PHP Script and JQuery

    Deine Antwort gibt mir eine Menge von Hinweisen. Ich habe viele Ideen gehabt wie ich das Problem lösen hätte können, auf die Idee mit der Abfrage wäre ich nicht gekommen. Ich werde mir das jetzt ansehen, und versuchen mir dafür ein eigenes Script zu schreiben. Da ich diese Woche gut ausgelastet bin wird es etwas dauern. Ich lasse dann aber von mir hören, versprochen wenn ich mit den Hinweisen ein neues Script verfasst habe. Erstmal geht es nur um die funktionalität, anschließend würde ich mich ums "Styling" kümmern.

    Liebe Grüße zurück

    Tim

Jetzt mitmachen!

Sie haben noch kein Benutzerkonto auf unserer Seite? Registrieren Sie sich kostenlos und nehmen Sie an unserer Community teil!