Здравствуйте, помогите реализовать поиск по сайту Скрипт самописный, а поиска нет на нем, да и в php я не разбираюсь может быть кто подскажет вот структура самой таблица [sql]CREATE TABLE IF NOT EXISTS `vws_wallpaper` ( `id` int(11) NOT NULL auto_increment, `img` varchar(250) default NULL COMMENT 'image and thumb same name', `name` varchar(250) default NULL, `artist` varchar(250) default NULL COMMENT 'artist name', `site` varchar(250) default NULL COMMENT 'artists site', `description` varchar(2000) default NULL, `tags` varchar(250) default NULL COMMENT 'comma seprated tags for easy reading', `size` varchar(20) default NULL COMMENT '1024x800 size', `dwn` int(11) NOT NULL default '0', `rank` int(11) NOT NULL default '0', `public` tinyint(1) NOT NULL default '1' COMMENT '0ending;1ublic;', `votes` int(11) NOT NULL default '0' COMMENT 'number of votes', `num_comments` int(11) default '0' COMMENT 'nuber of approved comments', `num_all_comments` int(11) default '0' COMMENT 'number of all comments, pending and approved for checking comment limit', `d1` int(11) NOT NULL, `d2` int(11) NOT NULL, `d3` int(11) NOT NULL, `d4` int(11) NOT NULL, `d5` int(11) NOT NULL, `d6` int(11) NOT NULL, `d7` int(11) NOT NULL, `week` int(11) NOT NULL, `ip` varchar(32) default NULL, `added_at` int(11) default NULL, `added_by` int(11) NOT NULL default '0', `off` tinyint(1) NOT NULL default '1', PRIMARY KEY (`id`), KEY `w_state` (`public`,`id`), KEY `w_dwn` (`dwn`), KEY `w_rank` (`rank`), KEY `w_week` (`week`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8 CHECKSUM=1 DELAY_KEY_WRITE=1 ROW_FORMAT=DYNAMIC AUTO_INCREMENT=1273 ;[/sql] Нужно искать в ячейке name, там названия новостей И как то вывести на страницу скажем 20 найденных статей. Если это не сложное что то, подскажите пожалуйста. Спасибо.
Это форма: HTML: <form action="action-search.php" method="post" name="form_s"> <input class="search_input" name="search" type="text" size="50" maxlength="60" onblur="if(this.value=='') this.value='Поиск '" onfocus="if(this.value =='Поиск' ) this.value=''" value="Поиск"> <input class="search_b" name="submit_s" type="submit" value="Найти"> </form> Это action-search.php: PHP: <?php if (isset($_POST['submit_s'])) { $submit_s = $_POST['submit_s']; } if (isset($_POST['search'])) { $search = $_POST['search']; } if (isset($submit_s)) { if (empty($search) or strlen($search) < 3) { exit ("<p>Поисковый запрос не введен, либо он менее 3-х символов.</p>"); } $search = trim($search); $search = stripslashes($search); $search = htmlspecialchars($search); } else { exit("<p>Вы обратились к файлу без необходимых параметров.</p>"); } ?> <?php $result = mysql_query("SELECT * FROM vws_wallpaper WHERE (name like '%".$search."%')"); if (!$result) { echo "<p>Запрос на выборку данных из базы не прошел. Напишите об этом администратору. <br> <strong>Код ошибки:</strong></p>"; exit(mysql_error()); } if (mysql_num_rows($result) > 0) { $myrow = mysql_fetch_array($result); do { printf ("".$myrow["name"].",'<br>'"); //Тут выводи как тебе надо.. } while ($myrow = mysql_fetch_array($result)); } else { echo "<p>Информация по Вашему запросу не найдена.</p>"; exit(); } ?>
раз уж тема зашла. PHP: <? function universal_like_escape($str) { return '%'.str_replace('*','%',addCslashes(mysql_real_escape_string(str_replace('\\','\\\\',$str)),'_% ')).'%'; } насколько эта функция универсальна для экранирования LIKE выражений? вместо Код (Text): $search = trim($search); $search = stripslashes($search); $search = htmlspecialchars($search);
ооо спасибо большое, раньше не смог выйти в интернет, только сейчас выбрался, сейчас попробую протестирую =) все разобрался добавил еще PHP: mysql_set_charset( 'utf8' ); а то не искала по русским символам Спасибо всем кто помог!
а если $search содержит несколько слов? как тут лучше сделать? просто разделить строку по словам и искать сначала в комбинации, а потом по каждому отдельно?