2012-05-14 4 views
0

Я создаю регистрационную форму для своего веб-сайта. В моей регистрационной форме есть два окна выбора, чтобы выбрать район пользователя и город. Поэтому мне нужно сделать это, когда пользователь выбирает свой район, а затем автоматически отображает окно выбора города с городами, которые относятся к выбранному выше району. Для этого я использовал AJAX и PHP. Я использовал страницу findcity.php для отображения города на моей странице register.php. Моя проблема в том, что когда я пытаюсь получить идентификатор города с страницы register.php, я не могу его получить. Мне нужно отправить другие данные с сайта register.php в базу данных.как получить идентификатор города с php-страницы

с моей страницы register.php

<div> 
<label for="district">District <img src="../images/required_star.png" alt="required" /> : </label> 
<?php 

    require_once ('../includes/config.inc.php');  
    require_once(MYSQL2); 

    $query="select * from district order by district_id"; 
    $result = mysqli_query($dbc, $query); 

     echo '<select name="district" class="text" onChange="getCity(' . "'" . 'findcity.php?district=' . "'" . '+this.value)">'; 
     echo '<option value="">-- Select District --</option>'; 

     while($row = mysqli_fetch_array($result, MYSQLI_NUM)) { 
      echo '<option value="' . $row[0] . '"'; 

      // Check for stickyness: 
      if (isset($_POST['district']) && ($_POST['district'] == $row[0]))  
       echo ' selected="selected"'; 

       echo " >$row[1]</option>";  
     } 
     echo '</select>'; 
?> 

</div>  
<div> 
    <label for="city">City <img src="../images/required_star.png" alt="required" /> : </label> 
    <input type="hidden" name="reg_locationid" id="reg_locationid" value="56" /> 
    <div id="citydiv" style="position: relative; top: -14px; left: 130px; margin-bottom: -26px;"> 
     <select name="city" class="text"> 
      <option>-- Select City --</option> 
     </select> 
    </div> 
</div> 

это findcity.php страницы

<?php 

$districtId=$_GET['district']; 

require_once ('../includes/configaration.inc.php'); 
require_once(MYSQLCONNECTION); 

$query="select city_id, city_name from city2 where district_id=$districtId"; 
$result=mysqli_query($dbc, $query); 



echo '<select name="city" class="text"> 
     <option>-- Select City --</option>'; 

while($row=mysqli_fetch_array($result, MYSQLI_NUM)) { 

    echo '<option value="' . $row[0] . '"'; 

    // Check for stickyness: 
    if (isset($_POST['city']) && ($_POST['city'] == $row[0])) { 
     echo ' selected="selected"'; 

     //echo '<input type="hidden" name="city" value="' . $row[0] . '"'; 

    } 
     echo " >$row[1]</option>"; 

} 

echo '</select>'; 

?>

это мой Аяксом функция

function getXMLHTTP() { //function to return the xml http object 
    var xmlhttp=false; 
    try{ 
     xmlhttp=new XMLHttpRequest(); 
    } 
    catch(e) {  
     try{    
      xmlhttp= new ActiveXObject("Microsoft.XMLHTTP"); 
     } 
     catch(e){ 
      try{ 
      xmlhttp = new ActiveXObject("Msxml2.XMLHTTP"); 
      } 
      catch(e1){ 
       xmlhttp=false; 
      } 
     } 
    } 

    return xmlhttp; 
} 



function getCity(strURL) {  

    var req = getXMLHTTP(); 

    if (req) { 

     req.onreadystatechange = function() { 
      if (req.readyState == 4) { 
       // only if "OK" 
       if (req.status == 200) {       
        document.getElementById('citydiv').innerHTML=req.responseText;      
       } else { 
        alert("There was a problem while using XMLHTTP:\n" + req.statusText); 
       } 
      }    
     }   
     req.open("GET", strURL, true); 
     req.send(null); 
    } 

} 
+0

Вы можете использовать сеансы для этого ... –

ответ

0
echo '<select name="district" class="text" onChange="getCity(' . 
     '\'findcity.php?district=\'+this.value+\'&city=\'' . 
     '+document.getElementsByName(\'city\')[0].value)">'; 

или использовать сеансы, как предлагал ученик.

Кроме того, код будет намного менее уродливым, если вы извлекли JavaScript из HTML ...

Смежные вопросы