sql >> Base de Datos >  >> RDS >> Mysql

Necesito ayuda para terminar este menú desplegable dinámico de 3 niveles

¿Realmente no entiendo tu problema entonces? ¿Básicamente estás preguntando cómo hacer exactamente lo que estás haciendo ahora para las Regiones nuevamente para las Ciudades?

Como crear una ciudadAjax.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        
    }

Lo siento, pero tu pregunta realmente no tiene sentido...

Actualización:

Ah, creo que entiendo tu problema. No entiende cómo permitir que la selección de regiones generada cargue una sección de ciudad.

Vale, podrías hacerlo así:

  • como se mencionó más arriba, primero necesitaría crear un nuevo ajax.php para la lógica de recuperar las ciudades. Sería mejor manejar todo desde un archivo, pero para simplificar las cosas, usaremos un segundo archivo php.

  • También deberá ampliar su archivo html base y agregar un marcador de posición para las ciudades:

    ...Región--Seleccionar estado--

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

    ...

  • También deberá agregar una función javascript para completar este nuevo marcador de posición:

:

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

:- Por último, pero no menos importante, deberá ampliar su código ajax.php existente para llamar a la nueva función javascript si se selecciona una región:

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

¡Espero que esto ayude un poco!