Перейти к содержанию
СофтФорум - всё о компьютерах и не только

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


Рекомендуемые сообщения


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

<?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>"); ?>
Ссылка на комментарий
Поделиться на другие сайты


После

$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>	 ");}}
Изменено пользователем Darhazer
Ссылка на комментарий
Поделиться на другие сайты


После

$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>	 ");}}

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

Ссылка на комментарий
Поделиться на другие сайты


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

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

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

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

href="\$t

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

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

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

Ссылка на комментарий
Поделиться на другие сайты


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

<?//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 с различном цветом и все будеть так как надо ;)

Ссылка на комментарий
Поделиться на другие сайты


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

<?//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}?

Ссылка на комментарий
Поделиться на другие сайты

Т.е. в файле с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";
Ссылка на комментарий
Поделиться на другие сайты

Должно быть:

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

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

Ссылка на комментарий
Поделиться на другие сайты


НУ это потому что я написал 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>

Изменено пользователем Darhazer
Ссылка на комментарий
Поделиться на другие сайты

Для публикации сообщений создайте учётную запись или авторизуйтесь

Вы должны быть пользователем, чтобы оставить комментарий

Создать учетную запись

Зарегистрируйте новую учётную запись в нашем сообществе. Это очень просто!

Регистрация нового пользователя

Войти

Уже есть аккаунт? Войти в систему.

Войти
  • Последние посетители   0 пользователей онлайн

    • Ни одного зарегистрированного пользователя не просматривает данную страницу
×
×
  • Создать...