Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   установить значение в input относительно select-та (https://javascript.ru/forum/misc/12590-ustanovit-znachenie-v-input-otnositelno-select-ta.html)

gudzik 25.10.2010 11:58

установить значение в input относительно select-та
 
только подумал о изучении JavaScripts, как уже очень нужно скриптик...

вопрос такой:

есть таблица, в ней название товара насвание поставщика и цена товара.

как сделать так, что бы в форме при выборе в первом "select"-те названия товара и при выборе в другом "select"-те названия фирмы в "input" автоматом проставлялась цена

помогите кто может

MadGest 25.10.2010 16:05

Предлагаю такие варианты.

1.Отсылаешь форму на сервер тот обрабатывает данные, считает цену и назад возвращает её клиенту а потом уже при помощи JavaScript устанавливаешь её в input.

2.По событию onchange получаешь выбранные значения. Анализируешь их и передаешь дальше в функцию в которой алгоритм высчитывания цены и потом устанавливаешь значение в input.

gudzik 25.10.2010 16:32

у меня примерно такая формочка, какой вариант мне более подходит?

<form name="form1" method="post" action="warehouse_nakl.php">
  
                <p><label class="cat10">Товар</label> </p>                      
                <select name="tovar_id" class="vvid0">
                <?
                  $result = mysql_query("SELECT id,SUBSTR(NAME,1,20) AS name FROM goods",$db);
                  if (mysql_num_rows($result) > 0)
                     {
	                  $myrow = mysql_fetch_array($result);
                      do
                        {
	                     printf("<option value='%s'>%s</option>",$myrow["id"],$myrow["name"]);
	                    }
                      while ($myrow = mysql_fetch_array($result));
                     }
                ?>
                </select>
				
              <label class="cat10">Поставщик </label>
               <select name="firma" class="vvid01" >
                <?
                $result = mysql_query("SELECT id,SUBSTR(NAME,1,20) AS name FROM firma",$db);
                if (mysql_num_rows($result) > 0)
                   {
                   $myrow = mysql_fetch_array($result);
                   do
                     {
                     printf("<option value='%s'>%s</option>",$myrow["id"],$myrow["name"]);
                     }
                   while ($myrow = mysql_fetch_array($result));
                   }
                ?>
      			</select>				
                <label class="cat21">Цена
                <input type="text" name="price" id="2" maxlength="15" size="15" class="vvid">
                </label>

                <p>
                <label>
                <input type="submit" name="submit" id="submit"  value="Ok" class="forma">
                </label>
                </p>

vladlen 25.10.2010 17:36

Да любой! Смотря че нужно.

ОФФТОП:
Только
<?php
$result = mysql_query("SELECT id,SUBSTR(NAME,1,20) AS name FROM goods",$db);
if (mysql_num_rows($result)){
  while ($myrow = mysql_fetch_array($result))
    printf("<option value='%s'>%s</option>",$myrow["id"],$myrow["name"]);
}
?>

Несколько более компактная запись, да и условие я бы тоже похерил, но так надежнее.

gudzik 25.10.2010 18:04

Любой это тогда когда знаком с JS, а я только сегодня приступаю к знакомству с ним. а скриптец нужен уже на завтра...

vladlen 26.10.2010 02:33

Если нужно быстро, то это в раздел работа. И нехер так языки программирования изучать, какими бы они примитивными не были. Заплати денег веб мастеру и он вкрутит тебе "лампочку" :)

gudzik 26.10.2010 16:10

посидел, попихтел и вот что сообразил:

<script language="javascript" type="text/javascript">
/*Создаем объект XMLHttpRequest*/
var xmlHttp = new XMLHttpRequest();

function callServer() {
  // Получить tovar_id и firma из web-формы
  var tovar_id = document.getElementByName("tovar_id").value;
  var firma = document.getElementByName("firma").value;
  // Продолжать только если есть значения обоих полей
  if ((tovar_id == null) || (tovar_id == "")) return;
  if ((firma == null) || (firma == "")) return;

  // Создать URL для подключения
  var url = "price.php?tovar_id=" + escape(tovar_id) + "&firma=" + escape(firma);

  // Открыть соединение с сервером
  xmlHttp.open("GET", url, true);

  // Установить функцию для сервера, которая выполнится после его ответа
  xmlHttp.onreadystatechange = updateInput;

  // SПередать запрос
  xmlHttp.send(null);
}

//Обработка ответа от сервера
function updateInput() {
  if (xmlHttp.readyState == 4) {
    var rez = xmlHttp.responseText;
    document.getElementById("2").value = rez;
  }
}
</script>


если че не так то подправте пожалуйста....

gudzik 26.10.2010 16:15

только вот не знаю правильно ли я делаю файл "price.php" и по какому принцыпу он возвращает результат, а сделал так:

<?
include("blocks/db.php");
if (isset($_GET['tovar_id'])) {$tovar_id = $_GET['tovar_id']; if ($tovar_id == '') {unset($tovar_id);} }
if (isset($_GET['firma'])) {$firma = $_GET['firma']; if ($firma == '') {unset($firma);} }
$result = mysql_query("SELECT price FROM warehouse WHERE goods_id='$tovar_id' AND firma='$firma'",$db);
$myrow = mysql_fetch_array($rezult);
$price=$myrow['price'];
?>


так в input-e мне видает ошыбку "<font color=ff0000><br /> <b>Notice</b>: Undefined variable: rezult in <b>C:\webserver\www\boohgalter\warehouse\price.php </b> on line <b>6</b><br /> </font><font color=ff0000><br /> <b>Warning</b>: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in <b>C:\webserver\www\boohgalter\warehouse\price.php </b> on line <b>6</b><br /> </font>"

подскажите че не так

gudzik 26.10.2010 16:23

ошыбку нашел и исправил... но теперь в input-е ничево не происходит

gudzik 26.10.2010 17:02

ура! заработало! добавил в файл

echo $price;


и заработало!


Часовой пояс GMT +3, время: 01:05.