ФорумПрограммированиеПыхнуть хотите?F.A.Q. → Интерактивный select без перезагрузки страницы

Интерактивный select без перезагрузки страницы

  • md5

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

    Spritz 15 августа 2009 г. 9:07, спустя 8 минут 6 секунд

    в каких скобках?
    в скобках обычно пишут аргументы функции
    все умрут, а я изумруд
  • dobson

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

    Spritz 15 августа 2009 г. 9:59, спустя 52 минуты 19 секунд

    Это я понимаю, вот как раз с этим и не могу разобраться. Смотри изначально вот так:

    <select name="country" onchange="doload(this.value);">
    <option value="no" selected>Выберите страну…</option>
    <option value="russia">Россия</option>
    <option value="ukraine">Украина</option>
    </select>
    <br><br>
    <div id="result"></div>
    <br><br>
    <input type="submit" value="Отправить">


    А хотелось бы что то типа:

    <select name="country">
    <option value="no" selected>Выберите страну…</option>
    <option value="russia">Россия</option>
    <option value="ukraine">Украина</option>
    </select>
    <br><br>
    <div id="result"></div>
    <br><br>
    <input type="submit" value="Отправить" onclick="doload(???)">


    т.е в onclick="doload(взять из select'a country и её значение)".
  • adw0rd

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

    Spritz 15 августа 2009 г. 14:58, спустя 4 часа 59 минут 16 секунд

    dobson, то есть при сабмите ты хочешь чтобы выводились в <div id="result"></div> значения? Опиши подробнее задачу
    adw/0
  • dobson

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

    Spritz 15 августа 2009 г. 15:57, спустя 58 минут 35 секунд


    dobson, то есть при сабмите ты хочешь чтобы выводились в <div id="result"></div> значения?

    да.
  • adw0rd

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

    Spritz 15 августа 2009 г. 16:13, спустя 16 минут 2 секунды

    dobson, а сабмит то будет происходить или что? зачем запрашивать данные, если всеравно последует сабмит?
    adw/0
  • dobson

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

    Spritz 16 августа 2009 г. 7:16, спустя 15 часов 3 минуты 16 секунд

    вобщем всем спасибо за терпение ))) но решил оставить как есть.
  • md5

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

    Spritz 16 августа 2009 г. 9:11, спустя 1 час 54 минуты 52 секунды

    dobson, при отсутствии знаний, это самое верное решение
    все умрут, а я изумруд
  • dobson

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

    Spritz 17 августа 2009 г. 9:31, спустя 1 день 19 минут

    все равно не могу оставить как есть не разобравшись ))

    например есть такой код:

    <input type="text" name="search" id="searh">
    <select name="country" onchange="doload(this.value);">
    <option value="no" selected>Выберите страну…</option>
    <option value="russia">Россия</option>
    <option value="ukraine">Украина</option>
    </select>


    Имеется поле для ввода текста и селект, так вот как мне отправить содержимое текстового поля в select2.php
  • dobson

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

    Spritz 17 августа 2009 г. 10:17, спустя 46 минут 31 секунду

    все с этим разобрался. Вроде как бы сделал и даже что удивительно, вроде как бы работает))
  • md5

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

    Spritz 17 августа 2009 г. 10:24, спустя 6 минут 40 секунд

    вроде как бы охуенно!
    все умрут, а я изумруд
  • gvik

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

    Spritz 18 сентября 2009 г. 9:01, спустя 31 день 22 часа 37 минут

    ВЕЛИКИЕ ГУРУ пыха! I need to correct the script. Проблема: select1 - показывает всё что надо, select2 - после выбора позиции из select1 даже не появляется. Подскажите пожалуйста, где ошибка.
    select.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);
    ?>

    <script src="JsHttpRequest.js"></script>

    <!– Здесь мы подключили библиотеку. А теперь пишем функцию, которую назовем doload() –>

    <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({country:value});}
    </script>

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

    <select name="country" onchange="doload(this.value);">
    <option value="">–Выберите марку–
    <?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']."";
    ?>
    </select>

    <br><br>

    <div id="result"></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");

    switch($_REQUEST["country"]):

    case "Mitsubishi":
    $html="<select name=\"provider\">
    $sql = mysql_query ("SELECT DISTINCT model FROM t1 WHERE brand = 'Mitsubishi'");
    while ($new_model= mysql_fetch_array($sql))
    echo "<option value=".'"'.$new_model['model'].'"'.">".$new_model['model']."";
    </select>";
    break;

    case "Suzuki":
    $html="<select name=\"provider\">
    $sql = mysql_query ("SELECT DISTINCT model FROM t1 WHERE brand = 'Suzuki'");
    while ($new_model = mysql_fetch_array($sql))
    echo "<option value=".'"'.$new_model['model'].'"'.">".$new_model['model']."";
    </select>";
    break;

    case "Hyundai":
    $html="<select name=\"provider\">
    $sql = mysql_query ("SELECT DISTINCT model FROM t1 WHERE brand = 'Hyundai'");
    while ($new_model = mysql_fetch_array($sql))
    echo "<option value=".'"'.$new_model['model'].'"'.">".$new_model['model']."";
    </select>";
    break;

    default: $html=null;
    endswitch;

    echo $html;
    ?>
  • SHtoRM

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

    Spritz 28 сентября 2009 г. 3:26, спустя 9 дней 18 часов 24 минуты

    Привет всем!!! Помогите пожалуйста разобраться.
    Проблема c IE (пробовал 6 и 7) и javascript. В опере и файрфокс всё работает, никаких ошибок, а в осле никак не хочет, выдаёт ошибку "Предполагается наличие идентификатора, строки или числа"

    Здесь я вызываю функцию doload(this.value) …


    <input name="uname" type="hidden" id="u_id" value="<?echo $_SESSION['username']?>"/>
    <select name="smap" id="idmaprep1" size="1" onChange="doload(this.value)">
    <option value="">Выбрать</option>
    <?
    [email protected]_query("SELECT `maps`.`rusname`, `maps`.`map` FROM `maps`, `users` WHERE `users`.`u_name` = '".$user."' AND FIND_IN_SET(`maps`.`lctn`,`users`.`lctn`) ORDER BY `maps`.`rusname`");
    echo mysql_error();
    for ($i=0; $i<mysql_num_rows($m); $i++){
    $resm=mysql_fetch_array($m);
    echo"<option value='$resm[map]'"; if (($_POST['smap']) == ($resm['map']))echo " selected"; echo">$resm[rusname]</option>";
    }
    ?>
    </select>
    <?
    $seluser = @mysql_query("SELECT `owner` FROM `users` WHERE `u_name` = '".$_SESSION['username']."'");
    $resseluser=mysql_fetch_array($seluser);
    ?>
    <input type="hidden" name="tuser" id="tiduser" value="<?echo $resseluser['owner'];?>"/>
    <div id="result"></div>
    <input type="submit" name="butrep1" id="intrep1" value="Сформировать отчёт" <?if ($_POST['smap'] == '') echo"disabled";?>/>


    Вот уже сама функция … вот в ней что-то IE и не нравится …


    function doload(value){
    if (document.getElementById('idmaprep1').value == "")
    {
    document.mform.intrep1.disabled = true;
    }
    else
    {
    document.mform.intrep1.disabled = false;
    }
    var req=new JsHttpRequest();
    var userID = document.getElementById('u_id').value;
    var tuid = document.getElementById('tiduser').value;
    req.onreadystatechange=function(){
    if(req.readyState==4) document.getElementById("result").innerHTML=req.responseText;}
    req.open(null,"select2.php",true);
    req.send({
    rtuid:tuid,
    smap:value,
    u_id:userID,
    });
    }


    Ну и на всякий случай вот backend:


    <?
    require("JsHttpRequest.php");
    $JsHttpRequest=new JsHttpRequest("utf-8");
    include_once "options.php";

    global $SERVER, $USER, $PASSWD, $DB;
    if (!mysql_connect($SERVER,$USER,$PASSWD)){
    ?>
    <center><h1>Ошибка сервера MySQL. MySQL server error</h1></center>
    </div></body></html>
    <?
    exit;
    }
    mysql_select_db($DB);

    if ($_REQUEST['rtuid'] == 0){
    $nc1=mysql_query("SELECT `navto`.`sern` FROM `navto`, `users` WHERE `users`.`u_name` = '".$_REQUEST['u_id']."' AND FIND_IN_SET(`navto`.`lctn`,`users`.`lctn`) AND `navto`.`lctn` = (SELECT `lctn` FROM `maps` WHERE `map` = '".$_REQUEST['smap']."')");
    }
    else{
    $nc1=mysql_query("SELECT `navto`.`sern` FROM `navto`, `users` WHERE `users`.`u_name` = '".$_REQUEST['u_id']."' AND `users`.`owner` = `navto`.`owner` AND FIND_IN_SET(`navto`.`lctn`,`users`.`lctn`) AND `navto`.`lctn` = (SELECT `lctn` FROM `maps` WHERE `map` = '".$_REQUEST['smap']."')");
    }
    echo mysql_error();
    ?>
    <input type="hidden" name="str2" value="<?
    for ($i=0; $i<mysql_num_rows($nc1); $i++){
    $resc1=mysql_fetch_array($nc1);
    echo"$resc1[sern];";
    }
    ?>">
  • phpdude

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

    Spritz 28 сентября 2009 г. 4:14, спустя 48 минут 22 секунды

    SHtoRM, ебать!
    Сапожник без сапог
  • Trej Gun

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

    Spritz 28 сентября 2009 г. 4:30, спустя 15 минут 48 секунд

    в IE нельзя задизейблить option
    Спустя 26 сек.
    и код у тебя пиздец
  • md5

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

    Spritz 28 сентября 2009 г. 4:34, спустя 3 минуты 42 секунды

    насчет disabled в ИЕ есть хак на жс
    http://akosta.info/jscripts/option-disabled.js
    все умрут, а я изумруд

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