всем привет!помогите пожалуйста новичку =)
задача у меня такая - есть бд автомобилей, водителей и т.д. нужно при выборе из списка автомобиля формировать список водителей, выбирать водителя и заполнять ещё 2 поля.и при нажатии на ссылку "добавить" добавляется новая строка.и в ней должно то же самое работать.
Пользуясь статьёй
http://pyha.ru/articles/php/ajax-select/ , написала код на php и js. ошибка в том, что когда во второй и последующих строчках выбираю автомобиль, то изменяется не текущий список автомобилей(в этой строчке), а список из верхней(первой) строчки
Используется 2 файла:
<html>
<head><LINK REL=STYLESHEET TYPE="text/css" HREF="style.css">
<title>Ввод данных - касса</title>
</head>
<body>
<h2> <center>Касса - сдано за план</center> </h2> <br>
<?php
include("mysql.inc");
?>
<form action="kassa_result.php" method="post">
Дата: <input type="date" name="date" ><br></br>
<span id="table">
<table width = "90%" border = "0" cellpadding="2" cellspacing = "0" BGCOLOR=DCDCDC>
<tr>
<td ><b>Гос. № а/м</b></td>
<td ><b>Водитель</b></td>
<td ><b>Сумма на план</b></td>
<td ><b>Сумма за ремонт и з/ч</b></td>
<td><a href="#" onclick="return addline();">добавить</a></td>
</tr>
<tr id="newline" nomer="[0]">
<td>
<script language="JavaScript" src="JsHttpRequest.js"></script>
<script language="JavaScript">
function doload(value){
var req=new JsHttpRequest();
req.onreadystatechange=function(){
if(req.readyState==4) document.getElementById("result[<?= $HTTP_POST_VARS['count']?>]").innerHTML=req.responseText;}
req.open(null,"kassa_help.php",true);
req.send({auto:value});}
</script>
<!– Создаем форму –>
<!– Теперь пихаем в нее первый select –>
<select name="auto[0]" onchange="doload(this.value);">
<option value="no" selected>Выберите номер…</option>
<?php
$sql = mysql_query("SELECT * FROM auto order by number_gos");
while ($auto = mysql_fetch_object($sql)) {
echo "<option value = \"$auto->auto_ID\">$auto->number_gos</option>";
}
?>
</select>
<br><br>
</td>
<!– Вставляем тэг с нашим идентификатором, вместо которого у нас будет появляться второй select –>
<td>
<div id="result[<?= $HTTP_POST_VARS['count']?>]" ></div>
</td>
<td><input type = "text" name = sum_plan[0]></td>
<td><input type = "text" name = sum_rem[0]></td>
<td valign="top"><a href="#" onclick="return rmline(0);">удалить</a></td>
</tr>
<!– Теперь вставляем кнопку и закрываем форму. –>
</table>
</span>
<input type="hidden" name="count" value="0">
<script language="JavaScript">
function addline()
{
c=++document.getElementById('count').value; // увеличиваем счётчик строк
s=document.getElementById('table').innerHTML; // получаем HTML-код таблицы
s=s.replace(/[\r\n]/g,''); // вырезаем все символы перевода строк
re=/(.*)(<tr id=.*>)(<\/table>)/gi;
// это регулярное выражение позволяет выделить последнюю строку таблицы
s1=s.replace(re,'$2'); // получаем HTML-код последней строки таблицы
// заменяем все цифры к квадратных скобках
s2=s1.replace(/\[\d+\]/gi,'['+c+']');
// на номер новой строки
s2=s2.replace(/(rmline\()(\d+\))/gi,'$1'+c+')');
// заменяем аргумент функции rmline на номер новой строки
s=s.replace(re,'$1$2'+s2+'$3');
// создаём HTML-код с добавленным кодом новой строки
document.getElementById('table').innerHTML=s;
// возвращаем результат на место исходной таблицы
return false; // чтобы не происходил переход по ссылке
}
function rmline(q)
{
s=document.getElementById('table').innerHTML;
s=s.replace(/[\r\n]/g,'');
re=new RegExp('<tr id="?newline"? nomer="?\\['+q+'.*?<\\/tr>','gi');
// это регулярное выражение позволяет выделить строку таблицы с заданным номером
s=s.replace(re,'');
// заменяем её на пустое место
document.getElementById('table').innerHTML=s;
return false;
}
</script>
<input type="submit" value="Отправить">
</form>[/php]
второй - "kassa_help.php"
[php]<?
include("mysql.inc");
require("JsHttpRequest.php"); //Подключаем библиотеку
$JsHttpRequest=new JsHttpRequest("windows-1251"); //Создаем экземпляр класса, указываю рабочую кодировку.
//Далее все просто. В зависимости от выбранного параметра в первом select`e, заполняем переменную $html необходимым кодом.
$auto = ($HTTP_POST_VARS['auto']);
echo $count = ($HTTP_POST_VARS['count']);
$sql = mysql_query("SELECT distinct driver_id FROM list where `auto_ID` = '$auto'");
$n= mysql_num_rows($sql);
if ($n>0){ ?>
<select name = "driver[<?= $count?>]"><?
while($d = mysql_fetch_array($sql)) {
//$driver_id = $d->driver_ID;
$sqll = mysql_query("SELECT * FROM driver where `driver_id` ='$d[0]' ");
while ($driver = mysql_fetch_object($sqll)) {
echo "<option value = \"$driver->driver_ID\">$driver->surname $driver->name $driver->sec_name</option>";
}
} ?> </select> <?}
else echo "Сначала заполните ПЛ!";
?>