ФорумПрограммированиеJavaScript → проблемы с динамическими select'ами

проблемы с динамическими select'ами

  • gvik

    Сообщения: 137 Репутация: N Группа: Кто попало

    Spritz 21 сентября 2009 г. 8:31, спустя 15 минут 37 секунд


    Далее, вам надо функцию, которая в зависимости от данных будет опрашивать бекенды и выводить результаты генерировав html-оптионы

    Я ещё начинающий user js, поэтому мне ещё не хватает знаний реалзовать это. Если не трудно посдкажите.
    И ещё у меня с увеличением кол-ва селектов увеличивается кол-во запрашиваемых параметров в SQL-запросе. Как это отразиться на функции?
  • Trej Gun

    Сообщения: 5299 Репутация: N Группа: в ухо

    Spritz 21 сентября 2009 г. 8:36, спустя 5 минут 11 секунд

    ага теперь с кавычками полный пиздец
  • gvik

    Сообщения: 137 Репутация: N Группа: Кто попало

    Spritz 21 сентября 2009 г. 8:37, спустя 1 минуту

    ??? ))))
  • adw0rd

    Сообщения: 22905 Репутация: N Группа: в ухо

    Spritz 21 сентября 2009 г. 8:45, спустя 8 минут 3 секунды

    gvik, сделайте формы, сделайте бекенд, только нормально оформите, а с js поможем
    adw/0
  • gvik

    Сообщения: 137 Репутация: N Группа: Кто попало

    Spritz 21 сентября 2009 г. 8:52, спустя 6 минут 21 секунду

    Вот что я смог придумать, только сильно лажайте
    select.php
    <?php 
    ini_set('display_errors',1);
    error_reporting(E_ALL ^E_NOTICE);

    $db = mysql_connect ("localhost", "root", "");
    mysql_query ("set character_set_client='cp1251'");
    mysql_query ("set character_set_results='cp1251'");
    mysql_query ("set collation_connection='cp1251_general_ci'");
    mysql_select_db("cars",$db);
    ?>
    <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,"select2.php",true);
    req.send({brand:value});
    }

    function doload1(value){
    var req=new JsHttpRequest();
    req.onreadystatechange=function(){
    if(req.readyState==4) document.getElementById("result1").innerHTML=req.responseText;}
    req.open(null,"select3.php",true);
    req.send({brand:value, model:value});
    }
    </script>

    <form action="script.php" method="POST">

    <select name="brand" id="brand" onchange="doload(this.value);">
    <option value="no_action">–Выберите марку–</option>
    <?php
    $sql = mysql_query ("SELECT DISTINCT brand FROM t1");
    while ($new_brand = mysql_fetch_array($sql))
    echo '<option value='.$new_brand['brand'].'>'.$new_brand['brand'].'</option>';
    ?>
    </select>

    <br><br>

    <div id="result"></div>

    <br><br>

    <div id="result1"></div>

    <br><br>

    <input type="submit" value="Отправить">

    </form>

    select2.php
    <?php 
    $db = mysql_connect ("localhost", "root", "");
    mysql_query ("set character_set_client='cp1251'");
    mysql_query ("set character_set_results='cp1251'");
    mysql_query ("set collation_connection='cp1251_general_ci'");
    mysql_select_db("cars",$db);

    require("JsHttpRequest.php");
    $JsHttpRequest=new JsHttpRequest("windows-1251");
    ?>
    <select name=\"model\" id=\"model\" onchange="doload2(this.value, this.value);">
    <option value="no_action">–Выберите модель–</option>
    <?
    $sql = mysql_query ('SELECT DISTINCT model FROM t1 WHERE brand = "'.mysql_real_escape_string($_REQUEST["brand"]).'"');
    if($sql) {
    while ($new_model= mysql_fetch_array($sql)) {
    echo '<option value="'.$new_model['model'].'">'.$new_model['model'].'</option>';
    }
    } else {
    echo mysql_error();
    }
    ?>
    </select>

    select3.php
    <?php 
    $db = mysql_connect ("localhost", "root", "");
    mysql_query ("set character_set_client='cp1251'");
    mysql_query ("set character_set_results='cp1251'");
    mysql_query ("set collation_connection='cp1251_general_ci'");
    mysql_select_db("cars",$db);

    require("JsHttpRequest.php");
    $JsHttpRequest=new JsHttpRequest("windows-1251");
    ?>
    <select name=\"body\" id=\"body\">
    <option value="no_action">–Выберите тип кузова–</option>
    <?
    $sql = mysql_query ('SELECT DISTINCT body FROM t1 WHERE brand = "'.mysql_real_escape_string($_REQUEST["brand"]).'" AND model = "'.mysql_real_escape_string($_REQUEST["model"]).'"');
    if($sql) {
    while ($new_body= mysql_fetch_array($sql)) {
    echo '<option value="'.$new_body['body'].'">'.$new_body['body'].'</option>';
    }
    } else {
    echo mysql_error();
    }
    ?>
    </select>
  • adw0rd

    Сообщения: 22905 Репутация: N Группа: в ухо

    Spritz 21 сентября 2009 г. 8:57, спустя 5 минут 24 секунды

    да нормально, а что тебя не устраивает?
    adw/0
  • gvik

    Сообщения: 137 Репутация: N Группа: Кто попало

    Spritz 21 сентября 2009 г. 8:59, спустя 1 минуту 33 секунды

    ой, забыл написать, третий select не появляется
  • adw0rd

    Сообщения: 22905 Репутация: N Группа: в ухо

    Spritz 21 сентября 2009 г. 9:04, спустя 5 минут 37 секунд

    С учетом того, что у тебя нет функции doload2(), то все гуд…
    adw/0
  • gvik

    Сообщения: 137 Репутация: N Группа: Кто попало

    Spritz 21 сентября 2009 г. 9:08, спустя 3 минуты 31 секунду

    Спасибо за поправку, там надо doload1, а я верно передаю параметры SQL-запросу?
    здесь
    function doload1(value){
    var req=new JsHttpRequest();
    req.onreadystatechange=function(){
    if(req.readyState==4) document.getElementById("result1").innerHTML=req.responseText;}
    req.open(null,"select3.php",true);
    req.send({brand:value, model:value});
    }

    И здесь
    $sql = mysql_query ('SELECT DISTINCT body FROM t1 WHERE brand = "'.mysql_real_escape_string($_REQUEST["brand"]).'" AND model = "'.mysql_real_escape_string($_REQUEST["model"]).'"');

  • Trej Gun

    Сообщения: 5299 Репутация: N Группа: в ухо

    Spritz 21 сентября 2009 г. 9:09, спустя 59 секунд

    <select name=\"body\" id=\"body\">
    <option value="no_action">–Выберите тип кузова–</option>


    если это нормально то пойду просплюсь
  • gvik

    Сообщения: 137 Репутация: N Группа: Кто попало

    Spritz 21 сентября 2009 г. 9:10, спустя 1 минуту 31 секунду

    а что там не нормального????
  • adw0rd

    Сообщения: 22905 Репутация: N Группа: в ухо

    Spritz 21 сентября 2009 г. 9:20, спустя 9 минут 37 секунд


    <select name=\"body\" id=\"body\">
    <option value="no_action">–Выберите тип кузова–</option>


    если это нормально то пойду просплюсь
    я даже и не заметил…
    adw/0
  • NRG

    Сообщения: 4761 Репутация: N Группа: в ухо

    Spritz 21 сентября 2009 г. 9:20, спустя 15 секунд

    я конечно прошу прощения за грубость, но я бы за такой код хуй оторвал.
  • adw0rd

    Сообщения: 22905 Репутация: N Группа: в ухо

    Spritz 21 сентября 2009 г. 9:21, спустя 38 секунд


    а что там не нормального????
    не надо слешить кавычки
    Спустя 24 сек.

    я конечно прошу прощения за грубость, но я бы за такой код хуй оторвал.
    вспомни себя лет 5 назад, ну или раньше
    adw/0
  • gvik

    Сообщения: 137 Репутация: N Группа: Кто попало

    Spritz 21 сентября 2009 г. 9:42, спустя 21 минуту 45 секунд


    <select name=\"body\" id=\"body\">
    <option value="no_action">–Выберите тип кузова–</option>


    если это нормально то пойду просплюсь

    Кавычки были в примере
    Посморите пожалуйста предыдущее моё сообщение насчёт передачи параметров, я что-то там напортачил, не происходит загрузка данных из БД видимо параметры в запрос не передаются.

Пожалуйста, авторизуйтесь, чтобы написать комментарий!