Dropdownfeld dynamisch füllen

  • Guten Abend,


    durch das Forum konnte ich schon einige lernen. Hab mich nun entschlossen hier anzumelden da ich einfach nicht mehr weiter kommen. Ich hoffe mein Vorhaben ist nicht so schwer umzusetzen. ich bin schon am verzweifeln.


    Ich habe in meiner Datenbank zwei Tabellen (an diesen kann ich leider auch nichts mehr ändern, da diese bereits mehrere Tausend Einträge haben)


    SQL
    CREATE TABLE IF NOT EXISTS `web_hersteller` (
    `h_id` int(11) NOT NULL,
      `h_titel` varchar(100) NOT NULL,
      `h_titelURL` varchar(100) NOT NULL,
      `h_status` varchar(2) NOT NULL
    ) ENGINE=InnoDB AUTO_INCREMENT=38 DEFAULT CHARSET=utf8;


    SQL
    CREATE TABLE IF NOT EXISTS `web_serien` (
    `s_id` int(11) NOT NULL,
      `s_hID` varchar(100) NOT NULL,
      `s_titel` varchar(200) NOT NULL,
      `s_titelUrl` varchar(200) NOT NULL,
      `s_status` varchar(1) NOT NULL
    ) ENGINE=InnoDB AUTO_INCREMENT=127 DEFAULT CHARSET=utf8;


    In der ersten Tabelle in alle Hersteller vorhanden z.B.


    Brother
    Canon
    Dell


    In der zweiten Tabelle in alle Serien aufgelistet z.B.


    AX
    BSE
    CE


    Das erste Auswahlfeld mit den Herstellern lasse ich durch diesen (auch hier im Forum gefunden und angepassten) Code füllen:



    PHP
    <select name="hersteller" id="hersteller">
    <option>-- Bitte wählen --</option>
    <?php 
    $hersteller = hersteller($mysqli);
    foreach($hersteller as $array){ ?>
    <option value="<?php echo $array['id'];?>"<?php echo ($s_hID == $array['id'] ? "selected" : "");?>><?php echo $array['titel'];?></option>
    <?php } ?>
    </select>


    Klappt auch alles wunderbar. Nun habe ich ein zweites Auswahlfeld mit allen Serien dieses wird mit diesem PHP Code gefüllt



    PHP
    <select name="serien" id="serien">
    <option>-- Bitte wählen --</option>
    <?php 
    $serien = serien($mysqli);
    foreach($serien as $array){ ?>
    <option value="<?php echo $array['id'];?>"<?php echo ($hID == $array['id'] ? "selected" : "");?>><?php echo $array['titel'];?></option>
    <?php } ?>
    </select>


    Ab jetzt fangen meine Probleme an. Das zweite Auswahlfeld darf natürlich nur diese Daten beinhalten, die zum Hersteller passen, welchen ich im ersten Auswahlfeld ausgewählt habe. Ist im ersten noch nichts ausgewählt, sollte das untere leer sein. Gut währe, wenn die Seite nicht neu aufgebaut wird. Ich habe hier http://www.blogrammierer.de/jq…-boxen-mit-ajax-befullen/ auch etwas gefunden, aber das sieht für mich nicht wirklich gut aus, denn dann hätte ich ja ständig alle Daten in einer Datei stehen?


    Ich hoffe ich habe es so geschrieben, dass ihr mein Problem erkennt und mir wenn möglich helfen könnt. Hoffe es ist nicht all zuschwer.

  • Du hast da paar Fehler in den Queries.
    In dem Create Statement heiße es h_titel oder s_titel,
    in den Queries schreibst Du dann aber title.
    Oder auch web_hersteller.id -- gibts nicht. web_hersteller.h_id gibts =)


    Hier mal ein "Concept":


    Empfehlung:
    Backup vor irgendwelchen Änderungen:
    (achtung! könnte lange dauern, wenn die maschiene lahmt und "viele" datensätze kopiert werden müssten =)

    SQL
    create table `web_hersteller_kopie` like `web_hersteller`;
    insert into `web_hersteller_kopie` select * from `web_hersteller`;
    create table `web_serien_kopie` like `web_serien`;
    insert into `web_serien_kopie` select * from `web_serien`;


    tabelle hersteller ändern:

    SQL
    ALTER TABLE 
        `web_hersteller` 
    CHANGE COLUMN 
        `h_id` `h_id`           -- `name alt` `name neu` - bleibt also gleich
        INT(11) 
        UNSIGNED                -- ganze zahl ohne vorzeichen (siehe google "mysql int types")
        NOT NULL 
        AUTO_INCREMENT,         -- lass die db die id hochzählen
    ADD PRIMARY KEY (`h_id`);   -- h_id wird primary key


    tabelle serien ändern:

  • Hallo,


    danke für deine Antwort. Aber es funktioniert leider nicht. Ich darf a) leider NICHTS an der Datenbank ändern, da diese Daten von extern kommen und ich unterschrieben musste, dass die Daten genau so genutzt werden, wie diese geliefert werden und an den Scripten kann ich auch kaum noch etwas ändern, da so viel andere Sachen schon damit verbunden sind. Ich muss schauen wie ich das mit meinem Code gelöst bekomme.


    EDIT:


    Ich habe mal deinen Code eingebaut und es sieht im Quelltext sehr nach Fehler aus? :o


    [Blockierte Grafik: http://fs1.directupload.net/images/150403/lbsxubbs.jpg]


    Außerdem bleibt mein Feld Serien leider komplett leer. Ist es sinnvoll ALLE Daten im Quelltext ausgeben zu lassen? Ich finde das ehrlichgesagt nicht wirklich schön.

  • Die db-Änderungen sind nur Vorschläge.


    Was Du da im Screenshot zeigst ist das, was auch erwartet wurde:
    PHP legt die Daten als json String ab, und die JS Funktion wandelt diesen bei Aufruf um.
    Wie gesagt - das soll erstmal nur als "Schnittstelle" dienen.

    Zitat

    // hier kann man später per ajax die daten live holen


    Später kannst Du dort drin per ajax die Daten einzeln laden.


    Das ist natürlich keine Copy-Paste-Code, den Du direkt nutzen kannst. Du musst es schon anpassen.
    Hier gint es mehr um den Ablauf. =)

  • Die Daten werden in eine 'freundliche' form gebracht um sie zu VERARBEITEN.
    Du kann jetzt wie schon geschrieben via ajax die Daten dann Abholen und via JSON zu einem Array umwandeln. Dann kannst du damit deine Felder befüllen.. :)

Jetzt mitmachen!

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