| 
			| 
					
						| Tatyana | 
								|  | «  : 01-06-2009 04:22 »  |  | 
 
 У меня такая проблема. Есть база в MySQL. В ней много таблиц.  На главной странице сайта форма для поиска (html, передача данных методом post).  Нужно сделать поиск по базе. Я пишу вот такой код: <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"  "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd "> <html xmlns="http://www.w3.org/1999/xhtml "> <head> <meta http-equiv="Content-Type" content="text/html; charset=windows-1251"> <title>Untitled Document</title> </head> <body> <form action="" method=post> <div align="right"> <table width="100%" border="0">   <tr>     <td width="50%" height="124"></td>     <td width="50%">    <br />Введите слово для поиска    <input type="text" name="search" size="50" />    <input type="submit" value="Найти!" name="submit">     </td>   </tr> </table> </div> </form> <table width="90%" border="0" bgcolor="#FFFFCC">   <tr>     <td colspan="2"><div align="center">       <p><b>Добро пожаловать на сайт ООО "ПРОМЭК"</b></p>       <p align="center"> На нашем сайте представлен католог продукции для металлургии  и машиностроения.  Если вас заинтересовало что-то из нашей продукции, вы можете связаться с нами по  телефонам указанным в <a href="AboutCompany.html">контактной информации</a>, либо  оставьте свои координаты (заполнив <a href="KontInform.php">форму</a>) и наш менеджер  свяжется с Вами в ближайшее время.</p>       <p>Спасибо что посетили наш сайт!</p>     </div></td>   </tr> </table> <? error_reporting(E_ERROR); $conn=odbc_connect('KatalogSQL','Татьяна','gbnth'); if (!$conn) {         exit("Connection Failed: " . $conn);  } $_POST['search'] =  substr(htmlspecialchars(trim($_POST['search'])), 0, 100); $sql="select Name, Gruppa_ID from Pokovki where Name LIKE "%$_POST['search']%"; $rs=odbc_exec($conn,$sql); $nf=odbc_num_fields($rs); if (!$rs) {      exit("Error in SQL"); }  echo "<table border=1>\n";  //заголовок таблицы echo "<tr>"; for($i=0; $i<$nf;$i++){    $field=odbc_field_name($rs,$i);    echo "<th>".$field."</th>\n"; } echo "</tr>\n"; while(odbc_fetch_row($rs)){    echo "<tr>";    for($j=0;$j<$nf;$j++){       $val=odbc_result($rs,$j);       echo "<td>".$val."</td> ";    }    echo "\n</tr>\n"; } echo "</table>"; odbc_free_result($rs); odbc_close($conn); ?> </body> </html>Пока запрос написала только для одной таблицы. Но поиск не работает! Как исправить???  Заранее спасибо. |  
						| 
								|  |  
								|  |  Записан | 
 
 Smile, though your heart is achingSmile, even though it's breaking ©
 |  |  | 
	| 
			| 
					
						| McZim | 
								|  | « Ответ #1 : 01-06-2009 06:13 »  |  | 
 
 Tatyana, а если в консоли выполнить твой запрос, он будет работать? |  
						| 
								|  |  
								|  |  Записан | 
 
 The CBO without stats is like a morning without coffee. (c) T.Kyte. |  |  | 
	| 
			| 
					
						| Sla | 
								|  | « Ответ #2 : 01-06-2009 06:18 »  |  | 
 
 зачем так много слов?select Name, Gruppa_ID from Pokovki where Name LIKE "%ЧТО-ТО%";
 в пхп-админ - работает?
 |  
						| 
								|  |  
								|  |  Записан | 
 
 Мы все учились понемногу... Чему-нибудь и как-нибудь. |  |  | 
	| 
			| 
					
						| Chaa | 
								|  | « Ответ #3 : 01-06-2009 06:21 »  |  | 
 
 У вас строчка $sql="select Name, Gruppa_ID from Pokovki where Name LIKE "%$_POST['search']%";неправильно написана с точки зрения синтаксиса пхп. Должно быть $sql="select Name, Gruppa_ID from Pokovki where Name LIKE '%".$_POST['search']."%'"; |  
						| 
								|  |  
								|  |  Записан | 
 |  |  | 
	| 
			| 
					
						| Tatyana | 
								|  | « Ответ #4 : 01-06-2009 06:37 »  |  | 
 
 Tatyana, а если в консоли выполнить твой запрос, он будет работать?
 пишу в Query Analyzer: select Name, Gruppa_ID from Pokovki where Name LIKE 'Полые поковки' 'Полые поковки' - это одно из значений в таблице. Запрос работает. Выводит нужные мне данные. Но когда в самом  файле пишу : "select Name, Gruppa_ID from Pokovki where Name LIKE '%$_POST['search']%' "; не работает. Т.е. никакой ошибки не выдает, но и таблицу не рисует.... select Name, Gruppa_ID from Pokovki where Name LIKE "%ЧТО-ТО%";
 Что значит LIKE "%ЧТО-ТО%"    Мне же нужно искать конкретное слово введенное пользователем в форму.... Не понимаю.... У вас строчка $sql="select Name, Gruppa_ID from Pokovki where Name LIKE "%$_POST['search']%";неправильно написана с точки зрения синтаксиса пхп. Должно быть $sql="select Name, Gruppa_ID from Pokovki where Name LIKE '%".$_POST['search']."%'";Спасибо, исправила. |  
						| 
								|  |  
								|  |  Записан | 
 
 Smile, though your heart is achingSmile, even though it's breaking ©
 |  |  | 
	| 
			| 
					
						| Chaa | 
								|  | « Ответ #5 : 01-06-2009 06:44 »  |  | 
 
 Попробуйте заменить error_reporting(E_ERROR);на Может какие-то ошибки всплывут. |  
						| 
								|  |  
								|  |  Записан | 
 |  |  | 
	| 
			| 
					
						| Tatyana | 
								|  | « Ответ #6 : 01-06-2009 06:49 »  |  | 
 
 Попробуйте заменить error_reporting(E_ERROR);на Может какие-то ошибки всплывут.изменила, но ошибок никаких не выдаёт.... я вот думаю, может сделать какую-то дополнительную форму или страницу на которую выводить результат?  |  
						| 
								|  |  
								|  |  Записан | 
 
 Smile, though your heart is achingSmile, even though it's breaking ©
 |  |  | 
	| 
			| 
					
						| Sla | 
								|  | « Ответ #7 : 01-06-2009 06:56 »  |  | 
 
 как ты делаешь отладку?в какой кодировке таблица?
 сделай
 после
 $sql="select Name, Gruppa_ID from Pokovki where Name LIKE "%$_POST['search']%";
 echo $sql;
 
 
 |  
						| 
								|  |  
								|  |  Записан | 
 
 Мы все учились понемногу... Чему-нибудь и как-нибудь. |  |  | 
	| 
			| 
					
						| McZim | 
								|  | « Ответ #8 : 01-06-2009 06:58 »  |  | 
 
 В $_POST['search'] у тебя нужно слово? |  
						| 
								|  |  
								|  |  Записан | 
 
 The CBO without stats is like a morning without coffee. (c) T.Kyte. |  |  | 
	| 
			| 
					
						| Tatyana | 
								|  | « Ответ #9 : 01-06-2009 07:00 »  |  | 
 
 как ты делаешь отладку?
 эээ... просто запускаю файл с кодом....   в какой кодировке таблица?
 <meta http-equiv="Content-Type" content="text/html; charset=windows-1251"> ты это имеешь ввиду??? сделай после$sql="select Name, Gruppa_ID from Pokovki where Name LIKE "%$_POST['search']%";
 echo $sql;
 
 сделала, без изменений.... |  
						| 
								|  |  
								|  |  Записан | 
 
 Smile, though your heart is achingSmile, even though it's breaking ©
 |  |  | 
	| 
			| 
					
						| Tatyana | 
								|  | « Ответ #10 : 01-06-2009 07:01 »  |  | 
 
 В $_POST['search'] у тебя нужно слово?
 Да,  у меня есть форма (html), в ней есть поле ввода <input type="text" name="search" size="50" /> Нужно искать в базе введенное слово. |  
						| 
								|  |  
								|  |  Записан | 
 
 Smile, though your heart is achingSmile, even though it's breaking ©
 |  |  | 
	| 
			| 
					
						| Chaa | 
								|  | « Ответ #11 : 01-06-2009 07:05 »  |  | 
 
 И что вообще выдает скрипт? Посмотрите в браузере исходный текст страницы, и покажите нам здесь. |  
						| 
								|  |  
								|  |  Записан | 
 |  |  | 
	| 
			| 
					
						| McZim | 
								|  | « Ответ #12 : 01-06-2009 07:07 »  |  | 
 
 Tatyana, я это прекрасно вижу по твоему коду, я спрашиваю о другом, после вот этого: _POST['search'] =  substr(htmlspecialchars(trim($_POST['search'])), 0, 100); у тебя в $_POST['search'] остается нужное слово?
 а Слава тебя спросил про это: echo $sql; в том смысле что на страничке должен напечататься твой запрос, который ты пытаешься выполнить.
 |  
						| 
								|  |  
								|  |  Записан | 
 
 The CBO without stats is like a morning without coffee. (c) T.Kyte. |  |  | 
	| 
			| 
					
						| Tatyana | 
								|  | « Ответ #13 : 01-06-2009 07:09 »  |  | 
 
 И что вообще выдает скрипт? Посмотрите в браузере исходный текст страницы, и покажите нам здесь.
 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd "> <html xmlns="http://www.w3.org/1999/xhtml "> <head> <meta http-equiv="Content-Type" content="text/html; charset=windows-1251"> <title>Untitled Document</title> </head> <body> <table width="100%" border="0">   <tr>     <td width="50%" height="124"></td>     <td width="50%"> <form id="frmSearch" name="frmSearch" method="post" action="">   <label><br />   <br />  Введите слово для поиска   <input type="text" name="textfield" />   </label>   <label>   <input type="submit" name="Submit" value="Найти!" onclick="" />   </label> <p><label></label>   </p> </form>    </td>   </tr> </table> <table width="90%" border="0" bgcolor="#FFFFCC">   <tr>     <td colspan="2"><div align="center">       <p><b>Добро пожаловать на сайт ООО "ПРОМЭК"</b></p>       <p align="center"> На нашем сайте представлен католог продукции для металлургии и машиностроения.  Если вас заинтересовало что-то из нашей продукции, вы можете связаться с нами по телефонам указанным в <a href="AboutCompany.html">контактной информации</a>, либо оставьте свои координаты (заполнив <a href="KontInform.php">форму</a>) и наш менеджер свяжется с Вами в ближайшее время.</p>       <p>Спасибо что посетили наш сайт!</p>     </div></td>   </tr> </table> </body> </html> |  
						| 
								|  |  
								|  |  Записан | 
 
 Smile, though your heart is achingSmile, even though it's breaking ©
 |  |  | 
	| 
			| 
					
						| Sla | 
								|  | « Ответ #14 : 01-06-2009 07:10 »  |  | 
 
 я так понимаю, что возможно не происходит подключения к базеи как это ничего не вывело?
 
 тогда хочу такого
 
 $sql="select Name, Gruppa_ID from Pokovki where Name LIKE "%$_POST['search']%";
 echo "sql = $sql";
 
 
 |  
						| 
								|  |  
								|  |  Записан | 
 
 Мы все учились понемногу... Чему-нибудь и как-нибудь. |  |  | 
	| 
			| 
					
						| McZim | 
								|  | « Ответ #15 : 01-06-2009 07:11 »  |  | 
 
 Tatyana, а давай скриншот, до и после выполнения. |  
						| 
								|  |  
								|  |  Записан | 
 
 The CBO without stats is like a morning without coffee. (c) T.Kyte. |  |  | 
	| 
			| 
					
						| Tatyana | 
								|  | « Ответ #16 : 01-06-2009 07:12 »  |  | 
 
 Tatyana, я это прекрасно вижу по твоему коду, я спрашиваю о другом, после вот этого: _POST['search'] =  substr(htmlspecialchars(trim($_POST['search'])), 0, 100); у тебя в $_POST['search'] остается нужное слово?
 хм.. ну по-идее да... я точно не могу сказать...  Во всяком случае, когда я делала отправку писем с сайта, я введенные слова в поле ввода "доставала"  именно так )) |  
						| 
								|  |  
								|  |  Записан | 
 
 Smile, though your heart is achingSmile, even though it's breaking ©
 |  |  | 
	| 
			| 
					
						| McZim | 
								|  | « Ответ #17 : 01-06-2009 07:14 »  |  | 
 
 Tatyana, как это ты не можешь сказать точно? Ты просто выведи на ту же страницу до выполнения эту переменную! |  
						| 
								|  |  
								|  |  Записан | 
 
 The CBO without stats is like a morning without coffee. (c) T.Kyte. |  |  | 
	| 
			| 
					
						| Chaa | 
								|  | « Ответ #18 : 01-06-2009 07:15 »  |  | 
 
 Судя по тому, что инструкции не выполняются, у вас пхп на сервере настроен неправильно. Нужно разбираться. Для начала заставьте работать скрипт Насколько я понимаю, вы работаете под Windows на IIS. Попробуйте вместо писать чтобы случайно не путатлось с ASP. |  
						| 
								|  |  
								|  |  Записан | 
 |  |  | 
	| 
			| 
					
						| Sla | 
								|  | « Ответ #19 : 01-06-2009 07:18 »  |  | 
 
 сделай следующее <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN""http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
 <html xmlns="http://www.w3.org/1999/xhtml">
 <head>
 <meta http-equiv="Content-Type" content="text/html; charset=windows-1251">
 <title>Untitled Document</title>
 </head>
 <body>
 <form action="search.php" method=post>
 <div align="right">
 <table width="100%" border="0">
 <tr>
 <td width="50%" height="124"></td>
 <td width="50%">
 <br />Введите слово для поиска
 <input type="text" name="search" size="50" />
 <input type="submit" value="Найти!" name="submit">
 </td>
 </tr>
 </table>
 </div>
 </form>
 </body>
 </html>
 
создаешь файл search.php примерно с таким кодом <?phperror_reporting(E_ERROR);
 $conn=odbc_connect('KatalogSQL','Татьяна','gbnth');
 if (!$conn) {
 exit("Connection Failed: " . $conn);
 }
 $_POST['search'] =  substr(htmlspecialchars(trim($_POST['search'])), 0, 100);
 echo "строка ".$_POST['search']."<br>";
 $sql="select Name, Gruppa_ID from Pokovki where Name LIKE "%$_POST['search']%";
 echo "sql = $sql <br>";
 $rs=odbc_exec($conn,$sql);
 $nf=odbc_num_fields($rs);
 if (!$rs) {
 exit("Error in SQL");
 }
 echo "<table border=1>\n";
 //заголовок таблицы
 echo "<tr>";
 for($i=0; $i<$nf;$i++){
 $field=odbc_field_name($rs,$i);
 echo "<th>".$field."</th>\n";
 }
 echo "</tr>\n";
 while(odbc_fetch_row($rs)){
 echo "<tr>";
 for($j=0;$j<$nf;$j++){
 $val=odbc_result($rs,$j);
 echo "<td>".$val."</td> ";
 }
 echo "\n</tr>\n";
 }
 echo "</table>";
 odbc_free_result($rs);
 odbc_close($conn);
 ?>
 
Результат в студию |  
						| 
								|  |  
								|  |  Записан | 
 
 Мы все учились понемногу... Чему-нибудь и как-нибудь. |  |  | 
	| 
			| 
					
						| Tatyana | 
								|  | « Ответ #20 : 01-06-2009 07:28 »  |  | 
 
 сделай следующее.....
 Результат в студию
 
 Работает!!!!!!!!!!!!    ) Надо только внешний вид подкорректировать    |  
						| 
								| 
 
										 2.JPG  (12.66 Кб - загружено 1035 раз.)
									 |  
								|  |  Записан | 
 
 Smile, though your heart is achingSmile, even though it's breaking ©
 |  |  | 
	| 
			| 
					
						| Sla | 
								|  | « Ответ #21 : 01-06-2009 07:30 »  |  | 
 
 суду все яно   |  
						| 
								|  |  
								|  |  Записан | 
 
 Мы все учились понемногу... Чему-нибудь и как-нибудь. |  |  | 
	| 
			| 
					
						| Tatyana | 
								|  | « Ответ #22 :  01-06-2009 07:35 »   |  | 
 
 хм.. у меня ещё один вопрос... А как мне теперь cделать, чтобы  поиcк был по всем таблицам в базе??? По идее, нужно прописаnь во фразе FROM имена всех таблиц... Но у меня их 30 штук....  Во фразе фром можно использовать "*" ? |  
						| 
								|  |  
								|  |  Записан | 
 
 Smile, though your heart is achingSmile, even though it's breaking ©
 |  |  | 
	| 
			| 
					
						| McZim | 
								|  | « Ответ #23 : 01-06-2009 07:36 »  |  | 
 
 Tatyana, нет нельзя, у тебя во всех таблицах одна и та же информация? |  
						| 
								|  |  
								|  |  Записан | 
 
 The CBO without stats is like a morning without coffee. (c) T.Kyte. |  |  | 
	| 
			| 
					
						| Tatyana | 
								|  | « Ответ #24 : 01-06-2009 07:40 »  |  | 
 
 Tatyana, нет нельзя, у тебя во всех таблицах одна и та же информация?
 Нет, информация разная, но столбец Name (по которому идёт поиск - есть во всех таблицах) |  
						| 
								|  |  
								|  |  Записан | 
 
 Smile, though your heart is achingSmile, even though it's breaking ©
 |  |  | 
	| 
			| 
					
						| Sla | 
								|  | « Ответ #25 : 01-06-2009 07:44 »  |  | 
 
 делать union
 
 |  
						| 
								|  |  
								|  |  Записан | 
 
 Мы все учились понемногу... Чему-нибудь и как-нибудь. |  |  | 
	| 
			| 
					
						| Chaa | 
								|  | « Ответ #26 : 01-06-2009 07:53 »  |  | 
 
 А что мешает информацию о всей продукции поместить в одну таблицу? |  
						| 
								|  |  
								|  |  Записан | 
 |  |  | 
	| 
			| 
					
						| McZim | 
								|  | « Ответ #27 : 01-06-2009 07:56 »  |  | 
 
 Tatyana, хорошо бы услышать вообще общую картину что необходимо получить. В разные отчеты нужны разные данные, значит разные запросы, пусть даже 30 штук.Sla, я думаю union на 30 таблицах будет выглядеть громоздко и работать будет не быстро.
 |  
						| 
								|  |  
								|  |  Записан | 
 
 The CBO without stats is like a morning without coffee. (c) T.Kyte. |  |  | 
	| 
			| 
					
						| McZim | 
								|  | « Ответ #28 : 01-06-2009 07:58 »  |  | 
 
 Chaa, я думаю что есть определенная архитектура, которую не будут переделывать, пусть даже она не верная.Tatyana, можно например хранимой процедурой предварительно готовить вьюху, с нужной информацией, а из нее выводить информацию на страницу.
 |  
						| 
								|  |  
								|  |  Записан | 
 
 The CBO without stats is like a morning without coffee. (c) T.Kyte. |  |  | 
	| 
			| 
					
						| Tatyana | 
								|  | « Ответ #29 : 01-06-2009 08:03 »  |  | 
 
 Ребята!! Спасибо большое за помошь! Все ваши советы учту!! Ещё раз спасибо! |  
						| 
								|  |  
								|  |  Записан | 
 
 Smile, though your heart is achingSmile, even though it's breaking ©
 |  |  | 
	|  |