|
|
|
| Совсем недавно писал на вашем форуме помочь с поиском по БД, вот кое-что смастерил:
echo "<form method='get'>
<input type='text' name='name' value='search...'/>
<input type='submit' value='post'/>
</form>";
if ($name) {
if(strlen($name) >= 3) {
$query = "SELECT `name` FROM `table_name` WHERE `name` LIKE '%$name%'";
$result = mysql_query($query);
if (!$result) die(mysql_error());
if (mysql_num_rows($result) == 0 ) echo("По вашему запросу ничего не найдено");
for($i = 0; $i < mysql_num_rows($result);$i++) {
$row = mysql_fetch_array($result);
echo "<br/><b>".$row['name']."</b>";
} else {
echo "Ваш запрос слишком короткий";
}
На другом форуме я просил сделать нечто следущее:
"4-5 слов до искомого слова"...искомое слово..."4-5 слов после искомого слова"
Мне дали вот этот скрипт:
<?php
$text = 'this a (test) test string special for skzi string';
$needle = 'string';
$s1 = '';
$s2 = '';
$len = 3;
$array = explode(' ', $text);
$id = array_search($needle, $array);
$plus= $id+1;
$minus = $id-$len;
for($i=0;$i<$len;$i++){
$s1 .= $array[$minus].' ';
$s2 .= $array[$plus].' ';
$plus++;$minus++;
}
echo $s1.'<b>'.$needle.'</b> '.$s2;
?>
Но вставить в свой поиск я его не смог, помогите пожалуйста, буду очень признателен)
p.s. и как сделать запрос чтобы поиск проводился по 2 таблицам и в каждой таблице по 2 полям( т.е. таблица для нвоостей и для текста, поиск должен проходить по полям с текстом и по заголовкам в каждой из этих таблиц) | |
|
|
|
|
|
|
|
для: skazi
(20.05.2007 в 21:07)
| | $row['name'] и $text в этих скриптах - это одно и тоже. | |
|
|
|
|
|
|
|
для: cheops
(21.05.2007 в 01:02)
| | В этом я разобрался, $string это то что мы ищим, а как вывести результат? | |
|
|
|
|
|
|
|
для: skazi
(21.05.2007 в 01:04)
| | За корректность не отвечаю, не всегда получается сделать правильно, когда нет возможноти проверить скрипт:
<?php
echo "<form method='get'>
<input type='text' name='name' value='search...'/>
<input type='submit' value='post'/>
</form>";
if ($name) {
if(strlen($name) >= 3) {
$query = "SELECT `name` FROM `table_name` WHERE `name` LIKE '%$name%'";
$result = mysql_query($query);
if (!$result) die(mysql_error());
if (mysql_num_rows($result) == 0 ) echo("По вашему запросу ничего не найдено");
for($i = 0; $i < mysql_num_rows($result);$i++) {
$row = mysql_fetch_array($result);
$needle = ''.$name.''; $s1 = ''; $s2 = ''; $len = 3;
$array = explode(' ', $row['name']);
$id = array_search($needle, $array); $plus= $id+1; $minus = $id-$len;
for($i=0;$i<$len;$i++){
$s1 .= $array[$minus].' ';
$s2 .= $array[$plus].' ';
$plus++;$minus++;
}
echo $s1.'<b>'.$needle.'</b> '.$s2;
} else {
echo "Ваш запрос слишком короткий";
}
?>
|
| |
|
|
|
|
|
|
|
для: mr Bin
(21.05.2007 в 02:12)
| | Да, все работает, только немного напутали с кавычками { }
Спасибо! | |
|
|
|
|
|
|
|
для: mr Bin
(21.05.2007 в 02:12)
| | Только вот еще что.. Этот скрипт ищет только первый текст, а мне нужно все что найдет скрипт. Куда вставить echo $s1.'<b>'.$needle.'</b> '.$s2; чтобы выводилось все, что найдет скрипт... | |
|
|
|
|
|
|
|
для: skazi
(21.05.2007 в 23:24)
| | поммогите пожалуйста | |
|
|
|
|
|
|
|
для: skazi
(22.05.2007 в 17:26)
| | Не могу утверждать, попробуйте поменять эту строчку:
$needle= ''.$name.''; $s1= ''; $s2=''; $len= 3;
|
на эту:
$needle.= ''.$name.''; $s1.= ''; $s2.=''; $len.= 3;
|
| |
|
|
|
|
|
|
|
для: mr Bin
(22.05.2007 в 18:34)
| | Поменял, но ничего не изменилось.
.. проблема еще существует :( | |
|
|
|
|
|
|
|
для: skazi
(22.05.2007 в 18:39)
| | Попробуйте так:
<?php
echo "<form method='get'>
<input type='text' name='name' value='search...'/>
<input type='submit' value='post'/>
</form>";
if ($name) {
if(strlen($name) >= 3) {
$query = "SELECT `name` FROM `table_name` WHERE `name` LIKE '%$name%'"; $result = mysql_query($query);
if (!$result) die(mysql_error());
if (mysql_num_rows($result) == 0 ) { echo "По вашему запросу ничего не найдено"; }
while($row=mysql_fetch_array($result)) {
for($i=0; $i < mysql_num_rows($result); $i++) {
$needle = ''.$name.''; $s1 = ''; $s2 =''; $len = 3;
$array = explode(' ', $row['name']);
$id = array_search($needle, $array); $plus= $id+1; $minus = $id-$len;
for($i=0;$i<$len;$i++){ $s1.= $array[$minus].' '; $s2.= $array[$plus].' '; $plus++;$minus++; }
$rezz.= $s1.'<b>'.$needle.'</b> '.$s2;
}
}
} else { echo "Ваш запрос слишком короткий"; }
}
echo $rezz;
?>
|
| |
|
|
|
|
|
|
|
для: mr Bin
(22.05.2007 в 18:51)
| | Спасибо. Теперь все норм работает. | |
|
|
|
|
|
|
|
для: skazi
(22.05.2007 в 23:01)
| | Слава богу :) | |
|
|
|