mjc66 Posted June 18, 2007 Report Share Posted June 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>"); ?> Link to comment Share on other sites More sharing options...
Darhazer Posted June 19, 2007 Report Share Posted June 19, 2007 (edited) После $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 June 19, 2007 by Darhazer Link to comment Share on other sites More sharing options...
mjc66 Posted June 19, 2007 Author Report Share Posted June 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> ");}} Спасибо за ответ, все получилось! Link to comment Share on other sites More sharing options...
mjc66 Posted June 19, 2007 Author Report Share Posted June 19, 2007 Спасибо за ответ, все получилось! Еще вопрос, т.е. сразу 3-и вопроса: 1. Результатом поиска является таблица, в которой по результатам поиска может быть несколько строк, так вот нужно, чтобы осуществлялось чередование цвета фона этих строк. Как это сделать? 2. Ссылка "Найти на странице" ведет нас на ту страницу где находится выбранный товар, так вот нужно чтобы эта страница открывалась и показывала при помощи выделения каким-нибудь цветом тот самый выбранный товар. Умные люди предложили следующий вариант: href="\$t \"?id=\"$t[id]\" но при таком раскладе при переходе по ссылке получаю сообщение об ошибке 404 т.е. как я понимаю скрипт благополучно определяет id товара, но результат не может вставить в дизайн страницы. Подскажите как решить эту проблему. 3. Если при незаполненном поле поиска нажать кнопку "Найти", то выводится вся БД, как исключить такую возможность? Link to comment Share on other sites More sharing options...
Darhazer Posted June 19, 2007 Report Share Posted June 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 с различном цветом и все будеть так как надо ;) Link to comment Share on other sites More sharing options...
mjc66 Posted June 19, 2007 Author Report Share Posted June 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}? Link to comment Share on other sites More sharing options...
mjc66 Posted June 19, 2007 Author Report Share Posted June 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"; Link to comment Share on other sites More sharing options...
Darhazer Posted June 20, 2007 Report Share Posted June 20, 2007 Должно быть: $class = ( $i % 2 == 0 ) ? "odd" : "even"; Link to comment Share on other sites More sharing options...
mjc66 Posted June 20, 2007 Author Report Share Posted June 20, 2007 Должно быть: $class = ( $i % 2 == 0 ) ? "odd" : "even"; Даже незнаю, как выразить Тебе свою благодарность-слова и чувства переполняют и путаются. Вобщем все работает и все как надо. Но осталась мааааленькая проблемка: если не вводить в поле поиска ничего и нажимать на "Найти", то появляется нужная фраза "Необходимо заполнить поле поиска!", однако при этом обрезается низ страницы, имеется ввиду поля где у меня копирайт стоит, всякие там счетчики, строка с адресами фирмы. Как это исправить? Link to comment Share on other sites More sharing options...
Darhazer Posted June 20, 2007 Report Share Posted June 20, 2007 (edited) НУ это потому что я написал 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 June 20, 2007 by Darhazer Link to comment Share on other sites More sharing options...
Recommended Posts
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 accountSign in
Already have an account? Sign in here.
Sign In Now