sql >> Database >  >> RDS >> Mysql

Ik heb hulp nodig bij het voltooien van deze dynamische vervolgkeuzelijst met 3 niveaus

Ik begrijp je probleem dan niet echt? Je vraagt ​​je eigenlijk af hoe je precies kunt doen wat je nu doet voor de regio's, weer voor steden?

Zoals het maken van een cityAjax.php:

<?php require_once 'core/init.php';

$region_id  =  escape(Input::get('region'));

$select_city = DB::getInstance()->get('citys', array('regionId', '=', $region_id));

    if(!$select_city->count()) {

        echo 'No City found!';

    } else {

    ?><select name="city" id="city"><?php   

        foreach($select_city->results() as $row) {

            $city_id          =   escape($row->cityId);
            $city_name        =   escape($row->cityName);

        ?><option value="<?php echo $city_id; ?>" ><?php echo $city_name; ?></option><?php

        }
    ?></select><?php        
    }

Het spijt me, maar je vraag is niet echt logisch...

Bijwerken:

Ah, ik denk dat ik je probleem begrijp. U begrijpt niet hoe u de gegenereerde regioselectie een stadsgedeelte kunt laten laden.

Oké, je zou het als volgt kunnen doen:

  • zoals verderop vermeld, zou je eerst een nieuwe ajax.php moeten maken voor de logica van het ophalen van de steden. Het zou leuker zijn om alles vanuit één bestand te verwerken, maar om het simpel te houden gaan we gewoon voor een tweede php-bestand.

  • U moet ook uw basis-html-bestand uitbreiden en een tijdelijke aanduiding voor de steden toevoegen:

    ...Regio--Selecteer staat--

    <label for="cat">Cities</label>
    <div id="citydiv">
        <select name="city" id="city">
        <option>--Select State--</option>
        <option></option>
    </div>
    

    ...

  • U moet ook een javascript-functie toevoegen om deze nieuwe tijdelijke aanduiding te vullen:

:

function showHint(str) {   
    ...        
    xmlhttp.open("GET","ajax.php?country="+str,true);
    xmlhttp.send(null);
    ...   
}

function showCity(str) {
    var xmlhttp;
    if (str.length==0) {
        document.getElementById("citydiv").innerHTML="";
        return;
    }
    if (window.XMLHttpRequest) {
        xmlhttp=new XMLHttpRequest();
    } else {
        xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
    }
    xmlhttp.onreadystatechange=function() {
        if (xmlhttp.readyState==4 && xmlhttp.status==200) {
            document.getElementById("citydiv").innerHTML=xmlhttp.responseText;
        }
    }
    xmlhttp.open("GET","cityAjax.php?region="+str,true);
    xmlhttp.send(null);
}

:- Last but not least, je moet je bestaande ajax.php-code uitbreiden om de nieuwe javascript-functie aan te roepen als een regio is geselecteerd:

...
?><select name="region" id="region" onChange="showCity(this.value);" required><?php   

        foreach($select_region->results() as $row) {

            $region_id          =   escape($row->regionId);
            $region_name        =   escape($row->regionName);

        ?><option value="<?php echo $region_id; ?>" ><?php echo $region_name; ?></option><?php

        }
?></select><?php 
...

Ik hoop dat dit een beetje helpt!




  1. Controleer uw SQLite-versie

  2. Controleer of mySQL-record is toegevoegd in de laatste x seconden

  3. PHP versus MySQL-prestaties ( if , functions ) in query

  4. Kopieer rij maar met nieuwe id