Здравствуйте. Есть две таблицы "users" с полями "id_user, surname, name, patronymic, и ещё много полей" и "base_phone" с полями "id_user, inv, int, ForAll, ext, port". Есть список и текстовые поля для второй таблицы "base_phone". Заполняем список первой таблицей "users". по двойному щелчку пользователь из списка вносится в текстовое поле "id пользователь". Задача. Нужно чтобы пошла проверка по второй таблице "base_phone" и заполнила остальные поля. Вопрос. КАК? Я уже и так и эдак. не получается. Заранее благодарен. Вот код: Код (Text): <html> <head> <title>Phone Edit</title> <meta http-equiv="content-type\" content=\"text/html; charset=windows-1251\"> <meta http-equiv=\"content-language\" content=\"ru\"> <META http-equiv="Content-Type" content="text/html; charset=windows-1251"> <SCRIPT> var whichinfos var x,y function showinfos(thisinfos) { if (document.all) { whichinfos=eval("document.all."+thisinfos+".style") whichinfos.visibility="visible" followmouse() } if (document.layers) { whichinfos=eval("document."+thisinfos) whichinfos.visibility="visible" followmouse() } } function followmouse() { if (document.all) { whichinfos.posLeft=x+20 whichinfos.posTop=y-100 var timer=setTimeout("followmouse()",200) } if (document.layers) { whichinfos.left=10 whichinfos.top=10 var timer=setTimeout("followmouse()",200) } } function hideinfos() { if (document.all || document.layers) { whichinfos.visibility="hidden" } } function handlerMM(e) { x = (document.layers) ? e.pageX : document.body.scrollLeft+event.clientX y = (document.layers) ? e.pageY : document.body.scrollTop+event.clientY } if (document.layers) { document.captureEvents(Event.MOUSEMOVE); } if (document.all || document.layers) { document.onmousemove = handlerMM; } </SCRIPT> <SCRIPT> var thistitle function createmetatags() { allnewcode="" thistitle3=document.forma1.user_phone.value if (thistitle!="") { allnewcode+=thistitle3 } document.forma1.user_id_1.value=allnewcode } </SCRIPT> <SCRIPT> var name123 function poisk_usera() { createmetatags(); name123=document.forma1.user_id_1.value; document.forma1.inv_1.value=document.forma1.user_id_1.value; <? //print "user_id_1 = $user_id_1<BR>"; $db1=mysql_connect('host', 'user', 'pass'); mysql_data_seek($db1, 0); mysql_select_db('corp'); // or die ("невозможно выбрать базу"); $query1="select * from base_phone where (id_user LIKE '$user_id_1')"; mysql_query ("set character_set_client='cp1251'"); mysql_query ("set character_set_results='cp1251'"); mysql_query ("set collation_connection='cp1251_general_ci'"); //print $query."<BR>"; $result1=mysql_query($query1); $num_results1=mysql_num_rows($result1); for ($i=0;$i<$num_results1;$i++) { $row1=mysql_fetch_array($result1); alert ($row1['id_user']); } ?> alert ("Java = "+document.forma1.user_id_1.value+"\nPHP = <? print $user_id_1; ?>\nЗапрос = <? print $query1; ?>") this.form.user_id_1.focus(); this.form.user_id_1.select(); } </SCRIPT> </head> <!-- Комментарии --> <BODY bgcolor="#E7E7E7" background="http://gifka.gif" > <table width="100%" border="0" cellspacing="0" cellpadding="5" align="center"> <tr valign="top"> <td width="130"> <?php require_once("ind_left.php"); ?> </td> <td> <?php require_once("access.php"); ?> <?php require_once("error_php.php"); ?> <?php $db=mysql_connect('host', 'user', 'pasw'); mysql_select_db('corp') or die ("невозможно выбрать базу"); $query="select * from users ORDER BY surname"; mysql_query ("set character_set_client='cp1251'"); mysql_query ("set character_set_results='cp1251'"); mysql_query ("set collation_connection='cp1251_general_ci'"); $result=mysql_query($query); $num_results=mysql_num_rows($result); print "<table width=100% align=center cellspacing=1 bgcolor=#3300FF>"; print "<font color=#898989>"; print "<form name=forma1 action='bd_phone_edit.php' method=post>"; print "<tr><td align=center bgcolor=#dddddd width=150>id пользователя</td>"; print "<td align=center bgcolor=#dddddd width=50><input type=text name='user_id_1' size=10></td>"; print "<td align=center bgcolor=#dddddd width=50><input name=qweasd1 type=submit value='<- Добавить'></td>"; print "<td align=center bgcolor=#dddddd rowspan=7>"; print "<select type='text' name='user_phone' size=10 onchange='user_id_1.innerText=this.options[this.selectedIndex].value;' ondblclick=poisk_usera()>"; //print "<select type='text' name='user_phone' size=10>"; for ($i=0;$i<$num_results;$i++) { $row=mysql_fetch_array($result); echo '<option value='.$row['id_user'].'>'.$row['surname'].' '.$row['name'].' '.$row['patronymic']; } print "</td></tr>"; print"<tr><td align=center bgcolor=#dddddd>id телефона</td>"; print"<td align=center bgcolor=#dddddd><input type=text name=inv_1 size=10></td>"; print"<td align=center bgcolor=#dddddd width=50 rowspan=6></td></tr>"; print"<tr><td align=center bgcolor=#dddddd>Внутренний</td>"; print"<td align=center bgcolor=#dddddd><input type=text name=int_1 size=10></td></tr>"; print"<tr><td align=center bgcolor=#dddddd>Для всех</td>"; print"<td align=center bgcolor=#dddddd><input type=text name=ForAll_1 size=10></td></tr>"; print"<tr><td align=center bgcolor=#dddddd>Внешний</td>"; print"<td align=center bgcolor=#dddddd><input type=text name=ext_1 size=10></td></tr>"; print"<tr><td align=center bgcolor=#dddddd>Розетка</td>"; print"<td align=center bgcolor=#dddddd><input type=text name=port_1 size=10></td></tr>"; print"<tr><td align=center bgcolor=#dddddd></td>"; print"<td align=center bgcolor=#dddddd><input name=qweasd type=button value='Сохранить'></td></tr>"; //print"<td align=center bgcolor=#dddddd><input name=qweasd type=submit value='Сохранить'></td></tr>"; print"</select></form>"; print"</font></table>"; print "$forma1"; echo mysql_result($result,2); // outputs third employee's name print "<BR>"; echo mysql_num_rows($result); mysql_close($db); mysql_free_result($result); ?> </td> </tr> </table> </body> </html>
Для начала определимся, что база у тебя одна, а в ней две таблицы. Такую выборку можно сделать с помощью объединения. Об этом читай в мануале по mysql (JOIN) или тут же в форуме есть много похожих вопросов.
Пасиб. С таблицами определился Один запрос разве подойдёт? Ведь я сначала заполняю список первой таблицей, потом делаю действия (двойной клик) и только после этого мне нужна вторая таблица.
php - язык, который позволят создавать серверные приложения, то есть тебе надо либо сразу все данные получить, а потом с помощью JS манипулировать ими, либо перезагружать страницу, либо гибрид этого - AJAX. Можешь, конечно, разбить на два запроса. После первого запроса собрать все id_user в массив, а потом сделать второй запрос, где будет PHP: $sql = 'SELECT id_user, inv, int, ForAll, ext, port FROM base_phone WHERE id_user IN ('.implode(',' $id_user_array).')';
I. Вариант Вот на этом и застопорился так сказать - или в массив загонять или обновлять страницу. В массив загонять не хочу. А то потом не разберусь. Просто php, java, mysql занялся пару недель назад. Делаю всё набегами. А усовершенствовать код потом можно. Меня другое интересует - переменная $user_id_1. По двойному клику в списке вызывается poisk_usera где, 1. из списка берётся id пользователя и копирует в текстовое поле "id пользователь" (имя user_id_1). затем 2. через php вызывается другая таблица. Но... я даже alert с проверкой сделал, но понять не могу методом java id даёт, а через php, вызовом того же $user_id_1 - нет. и запрос соответственно не проходит. выдаёт например: java = 20 php = запрос = select * from base_phone where (id_user LIKE '') II. Вариант Если перезагружать страницу, то из текстовых полей исчезают данные. Как это исправить тоже не знаю.
Итак Дубль 2. JavaScript (это не Java!) выполняется на клиентской стороне (то есть в браузере), PHP - выполняется на сервере. То есть просиходит так: браузером запрашиваем страницу, сервер там что-то типа делает и исполняется PHP-код, сервер нам отдает странцу. После того, как пхп выполнил свою работу больше он уже не будет "работать". Дальше страница попала в браузер и тут будет исполняться JS. Взаимодействовать JS-код и PHP напрямую не могу, только если посредством т.н. AJAXa. То есть без AJAXа данные из php можно "передать" в ЯваСкрипт-код, но не обрано. Это значит, что в php просто нет этой переменной $user_id_1 Для перезагрузки без потери данных, их можно или сохранить в куках, или передать через GET/POST. P.S. Если честно код твой не смотрел даже, так как там слишком много лишнего. Единственное, что успел заметить, что Код (Text): <meta http-equiv="content-type\" content=\"text/html; charset=windows-1251\"> повторяется.
))) спасибо за объяснение Тогда вот так Заполяем редактируемое поле user_id_1 значением 20. Принты все выводятся, редактируемое поле user_id_1 заполнено, а остальные редактируемые поля -нет. Всмысле почему заполняется только одно редактируемое поле, а не все? Пишет: Запрос =select * from base_phone where (id_user LIKE '20') ----------------------------------------- Вывод из переменных 0 id_user 20 inv 6235 int 706 ForAll 1 ext 11-11-11 port 106-02 ----------------------------------------- Вывод из массива 0 id_user 20 inv 6235 int 706 ForAll 1 ext 11-11-11 port 106-02 id пользователя 20 id телефона Внутренний Для всех Внешний Розетка Вот код: Код (Text): <?php global $user_id_1, $inv_1, $int_1, $ForAll_1, $ext_1, $port_1; // Начало - Поиск в таблице base_phone $db1=mysql_connect('host', 'user', 'pass'); mysql_select_db('corp'); $query1="select * from base_phone where (id_user LIKE '$user_id_1')"; mysql_query ("set character_set_client='cp1251'"); mysql_query ("set character_set_results='cp1251'"); mysql_query ("set collation_connection='cp1251_general_ci'"); $result1=mysql_query($query1); $num_results1=mysql_num_rows($result1); for ($i=0;$i<$num_results1;$i++) { $row1=mysql_fetch_array($result1); $user_id_1= $row1['id_user']; $inv_1= $row1['inv']; $int_1= $row1['int']; $ForAll_1= $row1['ForAll']; $ext_1= $row1['ext']; $port_1= $row1['port']; print "Запрос =".$query1."<BR>"; print "-----------------------------------------<BR>"; print "Вывод из переменных ".$i."<BR>"; print "id_user ".$user_id_1."<BR>"; print "inv ".$inv_1."<BR>"; print "int ".$int_1."<BR>"; print "ForAll ".$ForAll_1."<BR>"; print "ext ".$ext_1."<BR>"; print "port ".$port_1."<BR>"; print "-----------------------------------------<BR>"; print "Вывод из массива ".$i."<BR>"; print "id_user ".$row1['id_user']."<BR>"; print "inv ".$row1['inv']."<BR>"; print "int ".$row1['int']."<BR>"; print "ForAll ".$row1['ForAll']."<BR>"; print "ext ".$row1['ext']."<BR>"; print "port ".$row1['port']."<BR>"; } // Конец - Поиск в таблице base_phone // Вставить данные из переменных print "<BR>"; print "<form name=forma1 action='bd_phone_edit.php' method=post>"; print"id пользователя <input type=text name=user_id_1 size=10 value={$_POST['user_id_1']}>"; print"<input name=qweasd1 type=submit value='Проверка'>"; print "<BR>"; print"id телефона <input type=text name=inv_1 size=10 value={$_POST['inv_1']}>"; print "<BR>"; print"Внутренний <input type=text name=int_1 size=10 value={$_POST['int_1']}>"; print "<BR>"; print"Для всех <input type=text name=ForAll_1 size=10 value={$_POST['ForAll_1']}>"; print "<BR>"; print"Внешний <input type=text name=ext_1 size=10 value={$_POST['ext_1']}>"; print "<BR>"; print"Розетка <input type=text name=port_1 size=10 value={$_POST['port_1']}>"; print "<BR>"; print"<input name=qweasd type=button value='Сохранить'></form>"; ?>
Гм А как ты его заполнил? Вообще результат предыдущей выборки надо было в массив скинуть. Например, все ид пользователей сохранить в $userids, а как с ними дальше поступать, я вроде еще в первом посте своем писал... Не используй в данном случае LIKE, пиши id_user='$user_id_1' обычно для обработки результата выборки используют цикл while () PHP: while ($row = mysql_fetch_assoc($result)) echo '<pre>'; print_r($row); echo '</pre>'; }
Всё вроде. Сделал для эксперимента отдельный файл. Предполагается что пользователь уже выбрал user_id из списка и значение записалось в id_user_1. Жмакаем "Проверка" и вуаля... со всякими проверками. PHP: <? $db1=mysql_connect('host', 'user', 'pass'); // or die ("невозможно подключиться"); mysql_select_db('corp') or die ("невозможно выбрать таблицу"); $query1="select * from base_phone where id_user=$user_id_1"; $result1=mysql_query($query1); $num_results1=mysql_num_rows($result1); if ($num_results1==0) { $inv_1= ""; $int_1= ""; $ForAll_1= ""; $ext_1= ""; $port_1= ""; } else { for ($i=0;$i<$num_results1;$i++) { $row1=mysql_fetch_array($result1); $user_id_1= $row1['id_user']; $inv_1= $row1['inv']; $int_1= $row1['int']; $ForAll_1= $row1['ForAll']; $ext_1= $row1['ext']; $port_1= $row1['port']; } } mysql_close($db1); mysql_free_result($result1); print "Запрос =".$query1."<BR>"; print "-----------------------------------------<BR>"; print "Вывод из переменных ".$i."<BR>"; print "id_user ".$user_id_1."<BR>"; print "inv ".$inv_1."<BR>"; print "int ".$int_1."<BR>"; print "ForAll ".$ForAll_1."<BR>"; print "ext ".$ext_1."<BR>"; print "port ".$port_1."<BR>"; print "-----------------------------------------<BR>"; print "Вывод из массива ".$i."<BR>"; print "id_user ".$row1['id_user']."<BR>"; print "inv ".$row1['inv']."<BR>"; print "int ".$row1['int']."<BR>"; print "ForAll ".$row1['ForAll']."<BR>"; print "ext ".$row1['ext']."<BR>"; print "port ".$row1['port']."<BR>"; print "<BR>"; print "<form name=forma1 action='bd_phone_edit_4.php' method=post>"; print "id пользователя <input type=text name=user_id_1 size=10 value='$user_id_1'>"; print "<input name=qweasd1 type=submit value='Проверка'>"; print "<BR>"; print "id телефона <input type=text name=inv_1 size=10 value='$inv_1'>"; print "<BR>"; print "Внутренний <input type=text name=int_1 size=10 value='$int_1'>"; print "<BR>"; print "Для всех <input type=text name=ForAll_1 size=10 value='$ForAll_1'>"; print "<BR>"; print "Внешний <input type=text name=ext_1 size=10 value='$ext_1'>"; print "<BR>"; print "Розетка <input type=text name=port_1 size=10 value='$port_1'>"; print "<BR>"; print "<input name=qweasd type=button value='Сохранить'></form>"; echo '<pre>'; print_r ($row1); echo '</pre>'; ?> Сбасибо, что так сказать "Направил"...
XAOC_303 Советую тебе почитать http://phpfaq.ru/, так как твой скрипт в реальных условиях использовать нельзя ни в коем случае.
пасиб а если так? bd_ph_1.php PHP: $db=mysql_connect('host', 'user1', 'pass'); mysql_select_db('corp') or die ("невозможно выбрать базу"); include "post_1.php"; $done1=val1(array($surname_1, $int_ph_1, $ext_ph_1)); if ($done1!="сцуко") { $query="SELECT * FROM base_phone, users WHERE (base_phone.id_user=users.id_user"; if ($surname_1<>'') { $query.=" && users.surname LIKE '" .$surname_1."%'";} if ($int_ph_1<>'') { $query.=" && base_phone.int_ph LIKE '".$int_ph_1."%'";} if ($ext_ph_1<>'') { $query.=" && base_phone.ext_ph LIKE '".$ext_ph_1."%'";} $query.=")"; } else { $query.="SELECT * FROM base_phone, users WHERE (base_phone.id_user=users.id_user)"; } $result=mysql_query($query); ... post_1.php PHP: function val1 ($array2) { $vowels = array("~", "`", "!", "@", "\\", "#", "№", "$", ";", "^", ":", "?", "*", "(", ")", "_", "=", "+", "|", "/", "{", "}", "[", "]", "'", "<", ">", ".", "&", ","); $done1=""; for ($i1=0;$i1<count($array2);$i1++) { $array2[$i1]= str_replace($vowels, "сцуко", $array2[$i1]); if ($done1!="сцуко") { if (substr_count($array2[$i1], "сцуко")>0) {$done1="сцуко";} else {$done1= "намана";} } } return $done1; } [/code]