За последние 24 часа нас посетили 15747 программистов и 1664 робота. Сейчас ищут 790 программистов ...

Динамическое добавление значений в input

Тема в разделе "JavaScript и AJAX", создана пользователем alekslkta, 3 апр 2011.

  1. alekslkta

    alekslkta Активный пользователь

    С нами с:
    12 авг 2008
    Сообщения:
    32
    Симпатии:
    0
    Добрый день! Есть такая проблема , я хочу сделать так , чтобы после выбора значения с помощью тэга select из базы, остальные значения вставлялись в инпут автоматически. Т.е , у меня есть например селект клиенты, выбираю какого-нибудь и соответственно остальная информация об этом клиенте добавляется динамически в инпут поля. Реализацию я нашел, помоему даже на этом фороме :
    Есть индекс :
    HTML:
    1.  
    2. <script type="text/javascript" src="jquery.js"></script>
    3. </head>
    4.  
    5. <form method="post" action="#">
    6. <script type="text/javascript">
    7. $(function() {
    8.     $('#client').change(function()
    9. {
    10.     $.post('client.php',{id: $("#client option:selected").val()},
    11.     function(r){
    12.         if(r.length>0)
    13.             $("input#phone").val(r);}
    14.         );
    15. })
    16. });
    17.  
    18.     <select id="client">
    19.         <option selected="selected">--Select client--</option>
    20.                 <?php
    21.                include('db.php');
    22.                $sql=mysql_query("SELECT cl_id, name FROM tab_clients");
    23.                while($row=mysql_fetch_array($sql))
    24.                {
    25.                $id=$row['cl_id'];
    26.                $data=$row['name'];
    27.                echo '<option value="'.$id.'">'.$data.'</option>';
    28.                  } ?>
    29.     </select> <br/><br/>
    30. <input TYPE="text" NAME="phone" id="phone"/>
    31. <input TYPE="text" NAME="addr" id="addr"/>
    32. </form>
    33. </body>
    34.  
    Где выбирается из базы значение и затем передается в сценарий , где из вьюшки отсортировывется инфо для инпут

    PHP:
    1.  
    2. <?
    3.         $host = "localhost";
    4.         $user = "root";
    5.         $password = "";
    6.         $db = "pca_project";
    7.         mysql_connect ($host, $user, $password) or die("Ошибка соединения с сервером: " .mysql_error());
    8.         mysql_select_db ($db) or die("Ошибка соединения с базой данных : ".mysql_error());
    9.        
    10.         $lot = intval($_POST['id']);
    11.         $query = "SELECT * FROM vw_client_info WHERE cl_id ='$lot'";
    12.         $result = mysql_query ($query) or die("Неправильный запрос : " . mysql_error());
    13.            
    14.             if(mysql_num_rows($result)== '1')
    15.             {
    16.                  $row=mysql_fetch_assoc($result);
    17.                  $phone = $row['phone'];
    18.                  $addr = $row['addr'];
    19.                  print $phone;
    20.             }
    21.     ?>
    22.  
    вроде всё работает , но это если добавлять в инпут одно значение из вью, а как сделать чтобы передавалось ещё одно значение в следующий инпут. Т.е. у меня например клиент.телефон, клиент.адрес. Пытался сделать из пхп так :
    $phone = $row['phone'];
    $addr = $row['addr'];
    Он тогда в оба инпута закидывает два эти значения, т.е. не разделяет. Хоть я и передал в инпут разные ид :

    <input TYPE="text" NAME="phone" id="phone"/>
    <input TYPE="text" NAME="addr" id="addr"/>

    Заранее огромное спасибо.
     
  2. igordata

    igordata Суперстар
    Команда форума Модератор

    С нами с:
    18 мар 2010
    Сообщения:
    32.408
    Симпатии:
    1.768
    выброси всю инфу в массив в яваскрипте. и по выбранному id из селекта выбирай из массива все те значения, которые тебе интересны и пихай куда хочешь.
     
  3. alekslkta

    alekslkta Активный пользователь

    С нами с:
    12 авг 2008
    Сообщения:
    32
    Симпатии:
    0
    Вариант возможно неплохой...А каким образом можно передать ответные данные в jquery из php? Просто в моем случае ид передается в пхп где происходит селект по остальным данным о клиенте. Не могу понять каким образом можно передать результат селекта в js?

    Cпасибо!
     
  4. igordata

    igordata Суперстар
    Команда форума Модератор

    С нами с:
    18 мар 2010
    Сообщения:
    32.408
    Симпатии:
    1.768
    ну ты когда страничку отрисовываешь, ты пишешь echo "<script>" и после любые данные, предназначенные для явваскрипта. Только лучше данные писать прямо в скрипт, а методы вызывать изнутри $(document).ready(function() {

    результат селекта в js передается с помощью jquery и гугла "jquery get select value". Попробуй $('#client').val()

    только надо на событие вешаться, на изменение.
    <select id='client' onChange="process();">
     
  5. alekslkta

    alekslkta Активный пользователь

    С нами с:
    12 авг 2008
    Сообщения:
    32
    Симпатии:
    0
    Не, ну у меня так и реализовано :) И гугл особо не выдает то, что нужно. Дело в том что есть в хтмл :

    HTML:
    1.  
    2.  <select id="client">
    3.           <option selected="selected">--Select client--</option>
    4.                   <?php
    5.                  include('db.php');
    6.                  $sql=mysql_query("SELECT cl_id, name FROM tab_clients");
    7.                  while($row=mysql_fetch_array($sql))
    8.                  {
    9.                  $id=$row['cl_id'];
    10.                  $data=$row['name'];
    11.                  echo '<option value="'.$id.'">'.$data.'</option>';
    12.                   } ?>
    13.       </select> <br/><br/>
    14.   <input TYPE="text" NAME="phone" id="phone"/>
    15.   <input TYPE="text" NAME="addr" id="addr"/>
    16.  
    И есть ява скрипт :
    [js]
    script type="text/javascript">
    $(function() {
    $('#client').change(function()
    {
    $.post('client.php',{id: $("#client option:selected").val()},
    function(r){
    if(r.length>0)
    $("input#phone").val(r);}
    );
    })
    });

    </script>
    [/js]
    который получает и селекта ид , передаёт его в пхп сценарий $.post('client.php',{id: $("#client option:selected").val()}, где есть view
    PHP:
    1.  
    2.  $query = "SELECT * FROM vw_client_info WHERE cl_id ='$lot'";
    3.           $result = mysql_query ($query) or die("Неправильный запрос : " . mysql_error());
    4.              
    5.               if(mysql_num_rows($result)== '1')
    6.               {
    7.                   $row=mysql_fetch_assoc($result);
    8.                   $phone = $row['phone'];
    9.                   $addr = $row['addr'];
    10.                   print $phone;
    11.               }
    12.       ?>
    13.  
    Вооот...а дальше пхп возвращает значение в js -> print $phone; и дальше ява передает значение в <input>

    .
    [js]
    function(r){
    if(r.length>0)
    $("input#phone").val(r);}
    );
    [/js]
    Просто необходимо вернуть значение из пхп не только phone , но ещё и например адрес, отобранный из того же view. Но это не получается, потому что возвращается из пхп просто данные , без каких либо отдельныз переменных.
    Т.е. если я в пхп сделаю так :
    print $phone;
    print $addre;
    то вернётся строчка типа : 23232343 Moscow .... И эта строчка пойдет одинаково в оба инпута. А я бы хотел чтобы отдельно шло print $phone; <input TYPE="text" NAME="phone" id="phone"/> и отдельно print $addres; <input TYPE="text" NAME="phone" id="phone"/>.

    Вот как сделать это не пойму. Ведь у меня используется отбор из бд. Кто-нибудь знает? Подскажите плиз
     
  6. siiXth

    siiXth Активный пользователь

    С нами с:
    14 мар 2010
    Сообщения:
    1.447
    Симпатии:
    1
    мельком просмотрел , вижу фразу
    юзаем json , в пхп файле выводим в в массив который красиво выводим в ответе json

    http://www.php.ru/forum/viewtopic.php?t=32010