mjc66 Опубликовано 18 июня, 2007 Жалоба Поделиться Опубликовано 18 июня, 2007 Сделал с горем пополам поисковый скрипт, вроде работает, но хотелось бы внести изменение: что и куда надо вставить в скрипт, если поиск завершился ничем т.е. товар не найден и выводилась бы фраза типа: "По вашему запросу ничего не найдено"??? Код скрипта: <?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>"); ?> Ссылка на комментарий Поделиться на другие сайты Поделиться
Darhazer Опубликовано 19 июня, 2007 Жалоба Поделиться Опубликовано 19 июня, 2007 (изменено) После $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> ");}} Изменено 19 июня, 2007 пользователем Darhazer Ссылка на комментарий Поделиться на другие сайты Поделиться
mjc66 Опубликовано 19 июня, 2007 Автор Жалоба Поделиться Опубликовано 19 июня, 2007 После $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> ");}} Спасибо за ответ, все получилось! Ссылка на комментарий Поделиться на другие сайты Поделиться
mjc66 Опубликовано 19 июня, 2007 Автор Жалоба Поделиться Опубликовано 19 июня, 2007 Спасибо за ответ, все получилось! Еще вопрос, т.е. сразу 3-и вопроса: 1. Результатом поиска является таблица, в которой по результатам поиска может быть несколько строк, так вот нужно, чтобы осуществлялось чередование цвета фона этих строк. Как это сделать? 2. Ссылка "Найти на странице" ведет нас на ту страницу где находится выбранный товар, так вот нужно чтобы эта страница открывалась и показывала при помощи выделения каким-нибудь цветом тот самый выбранный товар. Умные люди предложили следующий вариант: href="\$t \"?id=\"$t[id]\" но при таком раскладе при переходе по ссылке получаю сообщение об ошибке 404 т.е. как я понимаю скрипт благополучно определяет id товара, но результат не может вставить в дизайн страницы. Подскажите как решить эту проблему. 3. Если при незаполненном поле поиска нажать кнопку "Найти", то выводится вся БД, как исключить такую возможность? Ссылка на комментарий Поделиться на другие сайты Поделиться
Darhazer Опубликовано 19 июня, 2007 Жалоба Поделиться Опубликовано 19 июня, 2007 Дорабативаю скрипт с ответов на всех три вопроса и немного коментариев: <?//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 с различном цветом и все будеть так как надо ;) Ссылка на комментарий Поделиться на другие сайты Поделиться
mjc66 Опубликовано 19 июня, 2007 Автор Жалоба Поделиться Опубликовано 19 июня, 2007 Дорабативаю скрипт с ответов на всех три вопроса и немного коментариев: <?//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}? Ссылка на комментарий Поделиться на другие сайты Поделиться
mjc66 Опубликовано 19 июня, 2007 Автор Жалоба Поделиться Опубликовано 19 июня, 2007 Т.е. в файле с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"; Ссылка на комментарий Поделиться на другие сайты Поделиться
Darhazer Опубликовано 20 июня, 2007 Жалоба Поделиться Опубликовано 20 июня, 2007 Должно быть: $class = ( $i % 2 == 0 ) ? "odd" : "even"; Ссылка на комментарий Поделиться на другие сайты Поделиться
mjc66 Опубликовано 20 июня, 2007 Автор Жалоба Поделиться Опубликовано 20 июня, 2007 Должно быть: $class = ( $i % 2 == 0 ) ? "odd" : "even"; Даже незнаю, как выразить Тебе свою благодарность-слова и чувства переполняют и путаются. Вобщем все работает и все как надо. Но осталась мааааленькая проблемка: если не вводить в поле поиска ничего и нажимать на "Найти", то появляется нужная фраза "Необходимо заполнить поле поиска!", однако при этом обрезается низ страницы, имеется ввиду поля где у меня копирайт стоит, всякие там счетчики, строка с адресами фирмы. Как это исправить? Ссылка на комментарий Поделиться на другие сайты Поделиться
Darhazer Опубликовано 20 июня, 2007 Жалоба Поделиться Опубликовано 20 июня, 2007 (изменено) НУ это потому что я написал 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> Изменено 20 июня, 2007 пользователем Darhazer Ссылка на комментарий Поделиться на другие сайты Поделиться
Рекомендуемые сообщения
Для публикации сообщений создайте учётную запись или авторизуйтесь
Вы должны быть пользователем, чтобы оставить комментарий
Создать учетную запись
Зарегистрируйте новую учётную запись в нашем сообществе. Это очень просто!
Регистрация нового пользователяВойти
Уже есть аккаунт? Войти в систему.
Войти