Eu realmente não entendo o seu problema então? Você está basicamente perguntando como fazer exatamente o que está fazendo agora para as Regiões novamente para as Cidades?
Como criar um 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
}
Desculpe, mas sua pergunta não faz muito sentido...
Atualização:
Ah, acho que entendi seu problema. Você não entende como permitir que a seleção de regiões geradas carregue uma seção da cidade.
Ok, você poderia fazer assim:
-
como mencionado mais acima, primeiro você precisaria criar um novo ajax.php para a lógica de recuperar as cidades. Seria melhor lidar com tudo de um arquivo, mas para manter as coisas simples, vamos apenas com um segundo arquivo php.
-
Você também precisará estender seu arquivo html básico e adicionar um espaço reservado para as cidades:
...Região--Selecione o estado--
<label for="cat">Cities</label> <div id="citydiv"> <select name="city" id="city"> <option>--Select State--</option> <option></option> </div>
...
-
Você também precisará adicionar uma função javascript para preencher este novo espaço reservado:
:
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, mas não menos importante, você precisará estender seu código ajax.php existente, para chamar a nova função javascript se uma região for selecionada:
...
?><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 isso ajude um pouco!