Mysql
 sql >> Database >  >> RDS >> Mysql

Ho bisogno di aiuto per completare questo menu a discesa dinamico di 3 livelli

Allora non capisco davvero il tuo problema? In pratica ti stai chiedendo come fare esattamente quello che stai facendo ora per le Regioni di nuovo per le città?

Come creare un 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        
    }

Mi dispiace, ma la tua domanda non ha molto senso...

Aggiornamento:

Ah, credo di aver capito il tuo problema. Non capisci come lasciare che la selezione delle regioni generate carichi una sezione di città.

Ok, potresti farlo così:

  • come menzionato più avanti, dovresti prima creare un nuovo ajax.php per la logica di recupero delle città. Sarebbe più bello gestire tutto da un file, ma per semplificare le cose andremo semplicemente con un secondo file php.

  • Dovrai anche estendere il tuo file html di base e aggiungere un segnaposto per le città:

    ...Regione--Seleziona stato--

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

    ...

  • Dovrai anche aggiungere una funzione javascript per popolare questo nuovo segnaposto:

:

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);
}

:- Ultimo ma non meno importante, dovrai estendere il tuo codice ajax.php esistente, per chiamare la nuova funzione javascript se è selezionata una regione:

...
?><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 
...

Spero che questo aiuti un po'!