Jump to content

Доработка скрипта


Recommended Posts


Сделал с горем пополам поисковый скрипт, вроде работает, но хотелось бы внести изменение: что и куда надо вставить в скрипт, если поиск завершился ничем т.е. товар не найден и выводилась бы фраза типа: "По вашему запросу ничего не найдено"??? Код скрипта:

<?php    print("<table border='1' cellspacing='2' cellpadding='1' class='search'><caption align=top class='search'>Результат поиска:</caption><tr><td width='35%' class='search_top' align='center'><b>Наименование товара</b></td><td width='20%' class='search_top' align='center'><b>Страница в каталоге</b></td><td width='30%' class='search_top' align='center'><b>Группа товаров</b></td></tr>"); //connection to MySQL  $db_host = "localhost";  $db_user = "login";  $db_password = "password";  $db_name = "my_db";  $connection = mysql_connect ($db_host, $db_user, $db_password) or die ('error connection');  mysql_select_db($db_name, $connection); //variables 	@$id =$_GET['id']; 	@$name =$_GET['name']; 	@$page =$_GET['page']; 	@$group_production =$_GET['group_production']; //chekboxes  if (isset($id)) { 	 $srch='id';} //id - имя столбца в таблице  if (isset($name)) { 	 $srch='name';} //name - имя столбца в таблице  if (isset($page)) { 	 $srch='page';} //page - имя столбца в таблице  if (isset($group_production)) { 	 $srch='group_production';} //group_production - имя столбца в таблице 	@$query = "SELECT * FROM production WHERE $srch like '%$name%' ";    $result = mysql_query($query) or die('Ошибка запроса');		while($t = @mysql_fetch_array($result)) {		 print("	  	 <tr> 	   <td  width='35%' class='search'><font color='#CC0000'>$t[name]</font></td> 	   <td  width='20%' class='search'><font color='#0000CC'><a href=$t

>Найти на странице</a></font></td> 	   <td  width='30%' class='search'><font color='#CC0000'>$t[group_production]</font></td> 	  </tr> 	 "); }  print("</table>"); ?>
Link to comment
Share on other sites


После

$result = mysql_query($query) or die('Ошибка запроса');

делаем так:

if ( mysql_num_rows($result) == 0 ) {  print(" <tr><td colspan='3'>По вашему запросу ничего не найдено</td></tr>");} else {while($t = @mysql_fetch_array($result)) {		 print("	  	 <tr>	   <td  width='35%' class='search'><font color='#CC0000'>$t[name]</font></td>	   <td  width='20%' class='search'><font color='#0000CC'><a href=$t

>Найти на странице</a></font></td>	   <td  width='30%' class='search'><font color='#CC0000'>$t[group_production]</font></td>	  </tr>	 ");}}

А вообще, было бы хорошо переделать скрипт так чтоб вывод html-а начинался после выполнение запроса

if ( mysql_num_rows($result) == 0 ) {  print(" По вашему запросу ничего не найдено");} else {print("<table border='1' cellspacing='2' cellpadding='1' class='search'><caption align=top class='search'>Результат поиска:</caption><tr><td width='35%' class='search_top' align='center'><b>Наименование товара</b></td><td width='20%' class='search_top' align='center'><b>Страница в каталоге</b></td><td width='30%' class='search_top' align='center'><b>Группа товаров</b></td></tr>");  while($t = @mysql_fetch_array($result)) {		 print("	  	 <tr>	   <td  width='35%' class='search'><font color='#CC0000'>$t[name]</font></td>	   <td  width='20%' class='search'><font color='#0000CC'><a href=$t

>Найти на странице</a></font></td>	   <td  width='30%' class='search'><font color='#CC0000'>$t[group_production]</font></td>	  </tr>	 ");}}
Edited by Darhazer
Link to comment
Share on other sites


После

$result = mysql_query($query) or die('Ошибка запроса');

делаем так:

if ( mysql_num_rows($result) == 0 ) {  print(" <tr><td colspan='3'>По вашему запросу ничего не найдено</td></tr>");} else {while($t = @mysql_fetch_array($result)) {		 print("	  	 <tr>	   <td  width='35%' class='search'><font color='#CC0000'>$t[name]</font></td>	   <td  width='20%' class='search'><font color='#0000CC'><a href=$t

А вообще, было бы хорошо переделать скрипт так чтоб вывод html-а начинался после выполнение запроса

if ( mysql_num_rows($result) == 0 ) {  print(" По вашему запросу ничего не найдено");} else {print("<table border='1' cellspacing='2' cellpadding='1' class='search'><caption align=top class='search'>Результат поиска:</caption><tr><td width='35%' class='search_top' align='center'><b>Наименование товара</b></td><td width='20%' class='search_top' align='center'><b>Страница в каталоге</b></td><td width='30%' class='search_top' align='center'><b>Группа товаров</b></td></tr>");  while($t = @mysql_fetch_array($result)) {		 print("	  	 <tr>	   <td  width='35%' class='search'><font color='#CC0000'>$t[name]</font></td>	   <td  width='20%' class='search'><font color='#0000CC'><a href=$t

>Найти на странице</a></font></td>	   <td  width='30%' class='search'><font color='#CC0000'>$t[group_production]</font></td>	  </tr>	 ");}}

>Найти на странице</a></font></td>	   <td  width='30%' class='search'><font color='#CC0000'>$t[group_production]</font></td>	  </tr>	 ");}}

Спасибо за ответ, все получилось!

Link to comment
Share on other sites


Спасибо за ответ, все получилось!

Еще вопрос, т.е. сразу 3-и вопроса:

1. Результатом поиска является таблица, в которой по результатам поиска может быть несколько строк, так вот нужно, чтобы осуществлялось чередование цвета фона этих строк. Как это сделать?

2. Ссылка "Найти на странице" ведет нас на ту страницу где находится выбранный товар, так вот нужно чтобы эта страница открывалась и показывала при помощи выделения каким-нибудь цветом тот самый выбранный товар. Умные люди предложили следующий вариант:

href="\$t

\"?id=\"$t[id]\"

но при таком раскладе при переходе по ссылке получаю сообщение об ошибке 404 т.е. как я понимаю скрипт благополучно определяет id товара, но результат не может вставить в дизайн страницы. Подскажите как решить эту проблему.

3. Если при незаполненном поле поиска нажать кнопку "Найти", то выводится вся БД, как исключить такую возможность?

Link to comment
Share on other sites


Дорабативаю скрипт с ответов на всех три вопроса и немного коментариев:

<?//connection to MySQL$db_host = "localhost";$db_user = "login";$db_password = "password";$db_name = "my_db";$connection = mysql_connect ($db_host, $db_user, $db_password) or die ('error connection');mysql_select_db($db_name, $connection);//variables@$id =$_GET['id'];@$name =$_GET['name'];@$page =$_GET['page'];@$group_production =$_GET['group_production'];//chekboxesif ( empty($name ) ){//вопрос 3. не заполнено полеdie("Надо заполнить поле поиска");}if (isset($id)) {$srch='id';} //id - имя столбца в таблицеif (isset($name)) {	$srch='name';} //name - имя столбца в таблице	if (isset($page)) {		$srch='page';} //page - имя столбца в таблице		if (isset($group_production)) {			$srch='group_production';} //group_production - имя столбца в таблице			@$query = "SELECT * FROM production WHERE $srch like '%$name%' ";			$result = mysql_query($query) or die('Ошибка запроса');			if ( mysql_num_rows($result) == 0 ) {				print(" По вашему запросу ничего не найдено");			} else {				print("<table border='1' cellspacing='2' cellpadding='1' class='search'><caption align=top class='search'>Результат поиска:</caption><tr><td width='35%' class='search_top' align='center'><b>Наименование товара</b></td><td width='20%' class='search_top' align='center'><b>Страница в каталоге</b></td><td width='30%' class='search_top' align='center'><b>Группа товаров</b></td></tr>");				//Вопрос 1. Переменная i следит чередование цвета				$i = 0;				while($t = @mysql_fetch_array($result)) {					$i++;					$class = ( $i % 2 == 0 ) ? "odd" ? "even";					print('	 <tr class="'.$class.'">	   <td  width="35%" class="search"><font color="#CC0000">'.$t[name].'</font></td>	   <td  width="20%" class="search"><font color="#0000CC"><a href="'.$t

.'?id='.$t[id].'">Найти на странице</a></font></td>	   <td  width="30%" class="search"><font color="#CC0000">'.$t[group_production].'</font></td>	  </tr>');				}				print("</table>");			}?>

Надо сделать стиль .odd и .even с различном цветом и все будеть так как надо ;)

Link to comment
Share on other sites


Дорабативаю скрипт с ответов на всех три вопроса и немного коментариев:

<?//connection to MySQL$db_host = "localhost";$db_user = "login";$db_password = "password";$db_name = "my_db";$connection = mysql_connect ($db_host, $db_user, $db_password) or die ('error connection');mysql_select_db($db_name, $connection);//variables@$id =$_GET['id'];@$name =$_GET['name'];@$page =$_GET['page'];@$group_production =$_GET['group_production'];//chekboxesif ( empty($name ) ){//вопрос 3. не заполнено полеdie("Надо заполнить поле поиска");}if (isset($id)) {$srch='id';} //id - имя столбца в таблицеif (isset($name)) {	$srch='name';} //name - имя столбца в таблице	if (isset($page)) {		$srch='page';} //page - имя столбца в таблице		if (isset($group_production)) {			$srch='group_production';} //group_production - имя столбца в таблице			@$query = "SELECT * FROM production WHERE $srch like '%$name%' ";			$result = mysql_query($query) or die('Ошибка запроса');			if ( mysql_num_rows($result) == 0 ) {				print(" По вашему запросу ничего не найдено");			} else {				print("<table border='1' cellspacing='2' cellpadding='1' class='search'><caption align=top class='search'>Результат поиска:</caption><tr><td width='35%' class='search_top' align='center'><b>Наименование товара</b></td><td width='20%' class='search_top' align='center'><b>Страница в каталоге</b></td><td width='30%' class='search_top' align='center'><b>Группа товаров</b></td></tr>");				//Вопрос 1. Переменная i следит чередование цвета				$i = 0;				while($t = @mysql_fetch_array($result)) {					$i++;					$class = ( $i % 2 == 0 ) ? "odd" ? "even";					print('	 <tr class="'.$class.'">	   <td  width="35%" class="search"><font color="#CC0000">'.$t[name].'</font></td>	   <td  width="20%" class="search"><font color="#0000CC"><a href="'.$t

Надо сделать стиль .odd и .even с различном цветом и все будеть так как надо ;)


.'?id='.$t[id].'">Найти на странице</a></font></td>	   <td  width="30%" class="search"><font color="#CC0000">'.$t[group_production].'</font></td>	  </tr>');				}				print("</table>");			}?>

Т.е. в файле сss прописать стили для классов .odd и .even, типа .odd {BACKGROUND:#cccccc} и .even BACKGROUND:#ffffff}?

Link to comment
Share on other sites

Т.е. в файле сss прописать стили для классов .odd и .even, типа .odd {BACKGROUND:#cccccc} и .even BACKGROUND:#ffffff}?

Этот кусок у меня выглядит так:

 // Переменная i следит чередование цвета				$i = 0;				while($t = @mysql_fetch_array($result)) {					$i++;					$class = ( $i % 2 == 0 ) ".odd" ".even";					print('					<style> 		.odd{background:FFFF33}  		.even{background:00FF00}  		</style>	  <tr class="'.$class.'">

При поиске получаю сообщение об ошибке:Parse error: syntax error, unexpected T_CONSTANT_ENCAPSED_STRING in /home/elekoru3/public_html/search.php on line 235, т.е. в строке

$class = ( $i % 2 == 0 ) ".odd" ".even";
Link to comment
Share on other sites

Должно быть:

$class = ( $i % 2 == 0 ) ? "odd" : "even";

Даже незнаю, как выразить Тебе свою благодарность-слова и чувства переполняют и путаются. Вобщем все работает и все как надо. Но осталась мааааленькая проблемка: если не вводить в поле поиска ничего и нажимать на "Найти", то появляется нужная фраза "Необходимо заполнить поле поиска!", однако при этом обрезается низ страницы, имеется ввиду поля где у меня копирайт стоит, всякие там счетчики, строка с адресами фирмы. Как это исправить?

Link to comment
Share on other sites


НУ это потому что я написал die...

Переделаем вот так:

//chekboxes

if ( empty($name ) )

{

//вопрос 3. не заполнено поле

print("Надо заполнить поле поиска");

} else {

if (isset($id)) {

$srch='id';} //id - имя столбца в таблице

if (isset($name)) {

$srch='name';} //name - имя столбца в таблице

if (isset($page)) {

$srch='page';} //page - имя столбца в таблице

if (isset($group_production)) {

$srch='group_production';} //group_production - имя столбца в таблице

@$query = "SELECT * FROM production WHERE $srch like '%$name%' ";

$result = mysql_query($query) or die('Ошибка запроса');

if ( mysql_num_rows($result) == 0 ) {

print(" По вашему запросу ничего не найдено");

} else {

print("<table border='1' cellspacing='2' cellpadding='1' class='search'><caption align=top class='search'>Результат поиска:</caption><tr><td width='35%' class='search_top' align='center'><b>Наименование товара</b></td><td width='20%' class='search_top' align='center'><b>Страница в каталоге</b></td><td width='30%' class='search_top' align='center'><b>Группа товаров</b></td></tr>");

//Вопрос 1. Переменная i следит чередование цвета

$i = 0;

while($t = @mysql_fetch_array($result)) {

$i++;

$class = ( $i % 2 == 0 ) ? "odd" : "even";

print('

<tr class="'.$class.'">

<td width="35%" class="search"><font color="#CC0000">'.$t[name].'</font></td>

<td width="20%" class="search"><font color="#0000CC"><a href="'.$t

<td width="30%" class="search"><font color="#CC0000">'.$t[group_production].'</font></td>

</tr>');

}

print("</table>");

}

}


.'?id='.$t[id].'">Найти на странице</a></font></td>

Edited by Darhazer
Link to comment
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
 Share

  • Recently Browsing   0 members

    • No registered users viewing this page.
×
×
  • Create New...