Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > PHP: Общие вопросы > select без перезагрузки страницы


Автор: Risyaalex 22.12.2010, 16:15
На страничке есть 2 selecta, данные 2го зависят от того что выбрано в первом
нашла по этому поводу статью про JsHttpRequest
практически получилось, но в примере показаны вписанные значения option, а я вытягиваю их из БД
первый select работает благополучно, а во второй не могу вытянуть значения

вот код первой страницы:
Код

<script src="JsHttpRequest.js"></script> 
<script>
function doload(value){
        var req=new JsHttpRequest();
        req.onreadystatechange=function(){
            if(req.readyState==4) document.getElementById("result").innerHTML=req.responseText;
        }
        req.open(null,"upload1.php",true);
        req.send({razdel2:value});
        }
</script> 

<form id="form2" name="form2" method="post" action="upload_podcat.php">
        <p>
          <label>введите название подкатегории<br />
            <input type="text" name="podcat" id="podcat" />
          </label>
          <br />
          <?php        
          $result1 = mysql_query ("SELECT * FROM razdel");
          $arr1 = mysql_fetch_array ($result1);?>
          <br />
          <label>выберите в каком разделе <br />
            находится категория<br />
<select name="razdel2" onchange="doload(this.value);">
<option value="" selected></option>
<?php

do {
    printf ('<option value="%s">%s</option>',$arr1['id'],$arr1['razdel']); 
 }
 while ($arr1 = mysql_fetch_array($result1));?> 
</select>
          </label>
          <br />
              
          <br />
        <div id="result"> </div>
       <br />
          <br />
          <label>
            <input type="submit" name="button2" id="button2" value="Добавить" />
          </label>
        </p>
      </form>
 


вот код второй, подгружаемой странички
Код


<?php 
include("bd.php");
require("JsHttpRequest.php"); $JsHttpRequest=new JsHttpRequest("windows-1251"); //Создаем экземпляр класса, указываю рабочую кодировку. 
 
$razdel2 = $_REQUEST["razdel2"];
$result2 = mysql_query ("SELECT * FROM cat WHERE razdel='$razdel2'");
$arr2 = mysql_fetch_array ($result2);
switch($_REQUEST["razdel2"]): 
 

case "$razdel2":
$html="<select name=\"cat\">

//Как сюда правильно вписать запрос 
//do {printf ('<option value=\"%s\">%s</option>',$arr2['id'],$arr2['cat']); 
 //}
 //while ($arr2 = mysql_fetch_array($result2)); 


</select>";
break; 
 
 
default: $html=null;
endswitch; 
  
echo $html;
?>

 

Автор: bars80080 22.12.2010, 21:05
а что вы получаете в ответ на свой запрос?

в файербаге смотрится очень просто

Автор: Risyaalex 23.12.2010, 10:06
первая страница отправляет запрос на вторую страницу нормально, а со второй страницы данные не получается вывести 
(я не могу понять как вывести данные из бд в цикле в переменную $html), то есть функция работает, но выводит второй пустой селект...

Автор: spiderlab 23.12.2010, 21:20
Может быть так?

Код

$html='<select name="cat">';

while ($arr2 = mysql_fetch_array($result2)){
$html .= '<option value='.$arr2['id'].'>'.$arr2['cat'].'</option>';
}

$html .= '</select>';


Ещё проверьте массив $arr2 что в нём есть print_r($arr2);

Автор: Risyaalex 23.12.2010, 21:45
все заработало, спасибо!

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)