Форум АНТИЧАТ

Форум АНТИЧАТ (https://forum.antichat.xyz/index.php)
-   PHP, PERL, MySQL, JavaScript (https://forum.antichat.xyz/forumdisplay.php?f=37)
-   -   поМогите с AJAxом! (https://forum.antichat.xyz/showthread.php?t=145543)

kdk 03.10.2009 23:14

поМогите с AJAxом!
 
У меня такой вопрос как организовать такое же
на примере http://www.lasso.pro/selectCombo/
Есть 2 бд
1)CREATE TABLE `strani` (
`id` varchar(20) NOT NULL,
`strana` varchar(25) default NULL
) ;
INSERT INTO `strani` VALUES ('1', 'Россия (Russia)');
INSERT INTO `strani` VALUES ('2', 'Украина (Ukraine)');
2)CREATE TABLE `gorod` (
`id` varchar(20) NOT NULL,
`id_strana` varchar(20) NOT NULL,
`gorod` varchar(25) default NULL
) ;

http://www.lasso.pro/selectCombo/ сделано было при помощи jquery.selectCombo1.2.6.js ну я не могу разобраться как это перевести на php! Или вообще как вы это решали на своем сайте?

KaMiKadZe 03.10.2009 23:43

При выборе одного из списка определяем какой выбрали (говорю определяем так как не знаю можно ли определить сразу не перебирая все элементы списка какой наш) после определения посылаем ajax запросом скрипту номер списка это будет одновременно и id в базе SELECT * FROM `gorod` WHERE id_strana='$id'; после работы скрипта все возвращается и работает уже с возвращенными значениями создавая 2 список
Вот весь алгоритм работы

diGriz 04.10.2009 00:40

С jQuery примерно так. Выбираешь страны из бд, заносишь в массив $countryArr, потом выводишь в списке. При событии onChange() получаем Id страны и вытаскиваем города.
PHP код:

<html>
    <head>
        <title></title>
         <script src='../js/jquery.js' type='text/javascript'></script>
         <script type="text/javascript">
            $(document).ready(function(){
                   showCountriesById($('#countryId').val());
             });
            function showCountriesById (val) {
            $.ajax({
            type: "POST",
            url: "ajax.php",
            data: "countryId="+val,
            success: function(html){
                $("#cityContainer").html(html);
            }
        });
        }
        </script>
    </head>
    <body>
      <select name="countryId" id="countryId" onchange="showCountriesById(this.value)">
                <?php
                
//Выводишь страны
                
if (isset( $countryArr)) 
                {
                
?>
                    <?php
                    
foreach ( $countryArr as $s) {
                    
?>
                        <option value="<?=$s['id']?>"><?=$s['strana']?></option>
                    <?php
                    
}
                    
?>
                <?php
                
}
                
?>
                </select>
                    <div id="cityContainer">    </div>    
    </body>
</html>

Файл ajax.php
PHP код:

<?php
$countryId 
$_POST['countryId'];
//Выбираешь из бд города и заносишь в массив
$html .= '<select name="cities">';
while (
$row mysql_fetch_array($res)) {
    
$html    .= '<option value="'.$row['id'].'" >'.$row['gorod']'.</option>';
}
echo 
$html;
?>


K0rINf 04.10.2009 01:19

мой вариант без Jqeury ! работает в ОПЕРЕ 100% в других не тестил.
содержимое файла 1.php
PHP код:

<script>
function AjaxFunc ()
{
x = document.getElementById("select");//выбераем наш селект
x_send = x.selectedIndex; //Теперь x_send это то значение которое выбрали

//тут создаю обьект 
if(window.XMLHttpRequest){
                            ajax1 = new XMLHttpRequest();
                            }
 else 
         if(window.ActiveXObject)
            {
                ajax1 = new ActiveXObject("Microsoft.XMLHTTP");
            } 
 else {
    return;
      };

ajax1.open("GET","ajax.php?select="+x_send, true);//делаю опен. Селект передаю через сылку
ajax1.send(null);// так вроде надо)) 
ajax1.onreadystatechange = function()// тут обрабатываю то что пришло
                        {
                        if (ajax1.readyState == 4 && ajax1.status == 200) 
                                 {
                        a = document.getElementById("div");
                        a.innerHTML = ajax1.responseText;  
                                };       
                        }
};                    
</script>


<select name="Strana"  onchange='AjaxFunc()' id="select" >
<?php 
// тут должна быть функция mysql_pconnect 
 
mysql_select_db("Magaz");// в моем случае база называлась МАГАЗ 
 
$sql "SELECT * FROM strani";// выбераю все страны
 
$sql_result mysql_query($sql);
 
$sql_arr mysql_fetch_array($sql_result);
do {
          echo (
"<option id='".$sql_arr['id']."'>".$sql_arr['strana']."
</option>"
);// выводим список всех стран в селекте
     
}
 while (
$sql_arr mysql_fetch_array($sql_result))
?>

</select>
<form id="div">
//сюда мы поместим наш ответ с городами
</form>

Содержимое файла ajax.php
PHP код:

<?php
// тут также должна быть функция mysql_connect
mysql_select_db("Magaz");// опять подключаемся к базе
$sql "SELECT * FROM gorod WHERE id_strana = ".$_GET['select'];// в $_GET['select'] у нас содержиться // код страны которую выбрал  пользователь. Выбираю все где код страны равен $_GET['select']
$sql_result mysql_query($sql);
$sql_fetch_array mysql_fetch_array($sql_result);
//формирую ответ
echo ("<select name='gorod'>"); 
do {
echo (
"
<option>"
.$sql_fetch_array['gorod']."</option>");
}
while (
$sql_fetch_array mysql_fetch_array($sql_result));
echo (
'</select>');

?>

Сделал очень быстро! может гденить работать не будет! надо проверить еще на иньекции.
И еще чтоб меньше было гемора поменял Id стран на 0 и 1.

kdk 06.10.2009 09:57

СПС


Время: 07:29