ФорумПрограммированиеPHP для идиотов → И снова Select

И снова Select

  • relictx

    Сообщения: 307 Репутация: N Группа: Адекваты

    Spritz 8 июня 2009 г. 6:22

    Снова здравствуйте, уважаемые эксперты!

    Укажите и поправьте, если не сложно, мою ошибку.
    Проблема в следующем. Делаю выпадающие селекты. Данные беру из бд. Вроде все работает. Но когда я хочу сделать 2 такие формы, назначая уникальные имена и айдишники селектам, с применением переменной, ничего не получается.

    Отрывок из кода для сравнения(рабочий):

    php:

    <?php
    include ("connect.php");

    function obraz()
    {
    $obraz_id = isset($_POST['obraz_id'])?$_POST['obraz_id']:NULL;

    $query = "SELECT * FROM `".PREFIX."obraz`";
    $res = mysql_query($query);
    $select = "<select id=\"obraz_id\" name=\"obraz_id\" onchange=\"Obraz()\" >
    <option value='0'>……….</option>";
       while($row = mysql_fetch_array($res))
       {
       $select .= "<option ";
           if($row['obraz_id'] == $obraz_id)
           $select .="selected=\"selected\"";
       $select .= " value='".$row['obraz_id']."'>".$row['name']."</option>\r\n";
       }
    $select .= "</select>";
    return     $select;
    }
    ?>



    Javascript:

    function Obraz()
    {
    div_select = "predmet";
    d.getElementById('uch').innerHTML = '';
    var a = d.getElementById('obraz_id').value;
    query = "obraz_id="+a;
    Request(query);
    }


    Так все работает. Чтобы использовать эти селекты на одной странице еще раз как минимум, нужно назначить какую то численную переменную уникальным именам и айдишникам селектов, а так же создать хидден поле и брать значение у него для жабаскрипта. Так и делаю:

    php:

    <?php

    function obraz()
    {
    $obraz_id = isset($_POST['obraz_id'.$j])?$_POST['obraz_id'.$j]:NULL;

    $query = "SELECT * FROM `".PREFIX."obraz`";
    $res = mysql_query($query);
    $select = "<select id=\"obraz_id".$j."\" name=\"obraz_id".$j."\" onchange=\"Obraz()\" >
    <option value='0'>……….</option>";
       while($row = mysql_fetch_array($res))
       {
       $select .= "<option ";
           if($row['obraz_id'] == $obraz_id)
           $select .="selected=\"selected\"";
       $select .= " value='".$row['obraz_id']."'>".$row['name']."</option>\r\n";
       }
    $select .= "</select>";
    return     $select;
    }

    ?>


    Javascript:

    j=parseFloat(document.form1.j.value);

    function Obraz()
    {
    div_select = "predmet";
    d.getElementById('uch').innerHTML = '';
    var a = d.getElementById('obraz_id'+j).value;
    query = "obraz_id"+j+"="+a;
    Request(query);
    }


    $j передается, проверял. Видимо что то не так делаю, когда назначаю именам и айдишникам значения. Вот такая прабла…
  • adw0rd

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

    Spritz 8 июня 2009 г. 6:29, спустя 6 минут 13 секунд

    alert(query);
    и результат в студию
    adw/0
  • relictx

    Сообщения: 307 Репутация: N Группа: Адекваты

    Spritz 9 июня 2009 г. 2:57, спустя 20 часов 28 минут 4 секунды


    alert(query);
    и результат  в студию


    Показывает номера id селектов, если брать рабочий скрипт. Если назначать переменную j айдишникам, как показано в нерабочем коде, то алерт выдает: требуется объект или query, определение отстутсвует. То есть ошибка где то здесь:

    $select = "<select id=\"obraz_id".$j."\" name=\"obraz_id".$j."\" onchange=\"Obraz()\" >
    <option value='0'>……….</option>";


    или в js-ке:

    var a = d.getElementById('obraz_id'+j).value;
    query = "obraz_id"+j+"="+a;
  • adw0rd

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

    Spritz 9 июня 2009 г. 7:33, спустя 4 часа 36 минут 12 секунд

    j=parseFloat(document.form1.j.value);
    alert('#1 ' + j);
    function Obraz()
    {
    div_select = "predmet";
    d.getElementById('uch').innerHTML = '';
    alert('#2 ' + j);
    var a = d.getElementById('obraz_id'+j).value;
    alert('#3' + a);
    query = "obraz_id"+j+"="+a;
    alert('#4' + query);
    Request(query);
    }


    Результаты в студию, по порядку вывода алертов!
    Вы умеете отлаживать, у вас стоит firebug?
    adw/0

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