За последние 24 часа нас посетили 19589 программистов и 1657 роботов. Сейчас ищут 1548 программистов ...

Вопрос. Не знаю, как обозвать...

Тема в разделе "JavaScript и AJAX", создана пользователем amen, 9 фев 2010.

  1. amen

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

    С нами с:
    18 сен 2009
    Сообщения:
    298
    Симпатии:
    0
    Адрес:
    Узбекистан
    Помогите пожалуйста с такой задачкой:
    Есть раскрывающийся список:

    HTML:
    1.     <select>
    2.         <option><?php echo $obj['wk1']; ?></option>
    3.         <option><?php echo $obj['wk2']; ?></option>
    4.         <option><?php echo $obj['wk3']; ?></option>
    5.         <option><?php echo $obj['wk4']; }?></option>
    6.     </select>
    Чуть ниже:

    PHP:
    1.         <?php
    2.  
    3.         while($row2 = mysql_fetch_assoc($res2))
    4.         {
    5.             ?>
    6.            
    7.             <tr><td>
    8.             <?php echo $row2['name']; ?>
    9.             </td>
    10.             <td><?php echo '';?></td>
    11.             </tr><br />
    12.             <?
    13.            
    14.  
    15.         }
    16.         ?>
    Напротив названия услуги ($row2['name']) нужно вывести цену, так, что
    если список стоит в позиции
    <option><?php echo $obj['wk1']; ?></option>
    цена будет выводиться
    $row2['price_wk1']
    если
    <option><?php echo $obj['wk1']; ?></option>
    соответственно
    <td><?php echo $row2['price_wk1'];?></td>
    Всего 4 категории.
     
  2. Kreker

    Kreker Старожил

    С нами с:
    8 апр 2007
    Сообщения:
    5.433
    Симпатии:
    0
    В JSON законвертируйте все цены.
     
  3. amen

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

    С нами с:
    18 сен 2009
    Сообщения:
    298
    Симпатии:
    0
    Адрес:
    Узбекистан
    Kreker, а можно пример просто с яваскриптом? Не имею понятия, что такое JSON (((
     
  4. Kreker

    Kreker Старожил

    С нами с:
    8 апр 2007
    Сообщения:
    5.433
    Симпатии:
    0
    http://ru2.php.net/json_encode

    HTML:
    1. <select onchange="changePrice(this.value)">
    2. ...
    3. <td id="price"></td>
    4. ...
    5.  
    [js]
    prices = eval('{'+<?php echo json_encode($data); ?>+'}');
    function changePrice(val) {
    document.getElementById('price').innerHTML = prices[val];
    }
    [/js]
     
  5. amen

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

    С нами с:
    18 сен 2009
    Сообщения:
    298
    Симпатии:
    0
    Адрес:
    Узбекистан
    Kreker, что-то не работает(

    HTML:
    1.     <select>
    2.         <option onchange="changePrice(this.value)"><?php echo $obj['wk1']; ?></option>
    3.         <option onchange="changePrice(this.value)"><?php echo $obj['wk2']; ?></option>
    4.         <option onchange="changePrice(this.value)"><?php echo $obj['wk3']; ?></option>
    5.         <option onchange="changePrice(this.value)"><?php echo $obj['wk4']; }?></option>
    6.     </select>
    7.     <input type="text" name="time" value="time">
    8.     <br><br>
    9.         <h2><font color="maroon">Base services: </font></h2>
    10.  
    11.         <script>
    12.         prices = eval('{'+<?php echo json_encode($data); ?>+'}');
    13.         function changePrice(val) {
    14.         document.getElementById('price').innerHTML = prices[val];
    15.         }
    16.         </script>
    17.  
    18.         <?php
    19.  
    20.  
    21.        while($row2 = mysql_fetch_assoc($res2))
    22.        {
    23.            ?>
    24.            
    25.             <tr><td>
    26.             <?php echo $row2['name']; ?>
    27.             </td></tr>
    28.             <td id="price"></td><br/>
    29.             <?
    30.            
    31.  
    32.        }
    33.        ?>
    По-моему между этими тегами что-то должно быть?

    HTML:
    1. <td id="price"></td>
     
  6. Kreker

    Kreker Старожил

    С нами с:
    8 апр 2007
    Сообщения:
    5.433
    Симпатии:
    0
    :)
    Подумай хорошо. Тут не в тегах дело. Ошибка в логике. Критичная на 100%.
     
  7. Padaboo

    Padaboo Старожил
    Команда форума Модератор

    С нами с:
    26 окт 2009
    Сообщения:
    5.242
    Симпатии:
    1
    Kreker
    А я думал только в питоне такая фишка есть) спс не знал)
    amen
    либо так должно быть в цикле, у тебя это в строчку выведет
    HTML:
    1.  
    2. <tr>
    3.   <td>
    4.      <?php echo $row2['name']; ?>
    5.    </td>
    6.    <td id="price">
    7.    </td>
    8. </tr>
    либо так, в столбик
    HTML:
    1.  
    2. <tr>
    3.    <td>
    4.       <?php echo $row2['name']; ?>
    5.    </td>
    6. </tr>
    7. <tr>
    8.    <td id="price">
    9.    </td>
    10. </tr>
    а то что то у тебя между <td></td>нету <tr></tr>
     
  8. amen

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

    С нами с:
    18 сен 2009
    Сообщения:
    298
    Симпатии:
    0
    Адрес:
    Узбекистан
    Нет, не могу понять. В яваскрипте я почти 0. Будьте так добры, ткните носом, в чём ошибка?
     
  9. Padaboo

    Padaboo Старожил
    Команда форума Модератор

    С нами с:
    26 окт 2009
    Сообщения:
    5.242
    Симпатии:
    1
    Вот тут ты в теги загружаешь свой прайс...когда меняешь селект...
    [js]document.getElementById('price').innerHTML = prices[val];[/js]
    идёт оно сюда
    HTML:
    1. <td id="price"></td>
    а вот тут у тебя вытаскивается цена
    [js]prices = eval('{'+<?php echo json_encode($data); ?>+'}');[/js]
    но ведь ты ее до этого нигде не использовал переменная $data до этого нигде не встречается...
     
  10. Kreker

    Kreker Старожил

    С нами с:
    8 апр 2007
    Сообщения:
    5.433
    Симпатии:
    0
    Что-то типа такого:
    PHP:
    1.  
    2. <select onchange="changePrice(this.value)">
    3.      <option name="wk1"><?php echo $obj['wk1']; ?></option>
    4.      <option name="wk2"><?php echo $obj['wk2']; ?></option>
    5.      <option name="wk3"><?php echo $obj['wk3']; ?></option>
    6.      <option name="wk4"><?php echo $obj['wk4']; ?></option>
    7.  </select>
    8. <?php
    9. $data = array();
    10. $id = 0;
    11. while($row2 = mysql_fetch_assoc($res2)) {
    12. $data[] = array('wk1' => $row2['price_wk1'],'wk2' => $row2['price_wk2'],'wk3' => $row2['price_wk3']);
    13.             ?>
    14.            
    15.             <tr><td>
    16.             <?php echo $row2['name']; ?>
    17.             </td>
    18.             <td id="price<?php echo $id; ?>"></td>
    19.             </tr><br />
    20.             <?
    21.             $i++;
    22.  
    23. }
    24. ?>
    25. <script type="text/javascript">
    26. prices = eval('{'+<?php echo json_encode($data); ?>+'}');
    27. function changePrice(val) {
    28.     for (i in prices) {
    29.         document.getElementById('price'+i).innerHTML = prices[i][val];
    30.     }
    31. }
    32. </script>
     
  11. amen

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

    С нами с:
    18 сен 2009
    Сообщения:
    298
    Симпатии:
    0
    Адрес:
    Узбекистан
    Нет...не работает(((

    [js]<div class="forms">
    <form action="index.php" method="POST">

    <h1>

    <?php while($obj = mysql_fetch_assoc($res))
    {
    echo $obj['name'];

    ?></h1>

    <select onchange="changePrice(this.value)">
    <option><?php echo $obj['wk1']; ?></option>
    <option><?php echo $obj['wk2']; ?></option>
    <option><?php echo $obj['wk3']; ?></option>
    <option><?php echo $obj['wk4']; ?></option>
    </select>
    <?php } ?>
    <input type="text" name="time" value="time">
    <br><br>
    <h2><font color="maroon">Base services: </font></h2>



    <?php
    $data = array();
    $id = 0;
    $i=1;
    while($row2 = mysql_fetch_assoc($res2))
    {
    $data[] = array('wk1' => $row2['price_wk1'],
    'wk2' => $row2['price_wk2'],
    'wk3' => $row2['price_wk3'],
    'wk4' => $row2['price_wk4']);
    ?>

    <tr><td>
    <?php echo $row2['name']; ?>
    </td>
    <td id="price<?php echo $id; ?>"></td></tr><br/>
    <?
    $i++;
    }
    print_r($data);
    ?>
    <script type="text/javascript">
    prices = eval('{'+<?php echo json_encode($data); ?>+'}');
    function changePrice(val)
    {
    for (i in prices)
    {
    document.getElementById('price'+i).innerHTML = prices[val];
    }

    }[/js]

    Может до этого какие-нибудь библиотеки нужно подключить?
     
  12. Kreker

    Kreker Старожил

    С нами с:
    8 апр 2007
    Сообщения:
    5.433
    Симпатии:
    0
    Ну что я могу сделать? Только посоветовать разобрать принцип работы и отладить. Не мне же поставили задачу сделать.