Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
PHP на примерах (2 издание). Авторы: Кузнецов М.В., Симдянов И.В. PHP Puzzles. Авторы: Кузнецов М.В., Симдянов И.В. Социальная инженерия и социальные хакеры. Авторы: Кузнецов М.В., Симдянов И.В. Программирование. Ступени успешной карьеры. Авторы: Кузнецов М.В., Симдянов И.В. Самоучитель MySQL 5. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум MySQL

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Фрагмент текста до и после искомого слова
 
 автор: skazi   (20.05.2007 в 21:07)   письмо автору
 
 

Совсем недавно писал на вашем форуме помочь с поиском по БД, вот кое-что смастерил:

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 полям( т.е. таблица для нвоостей и для текста, поиск должен проходить по полям с текстом и по заголовкам в каждой из этих таблиц)

   
 
 автор: cheops   (21.05.2007 в 01:02)   письмо автору
 
   для: skazi   (20.05.2007 в 21:07)
 

$row['name'] и $text в этих скриптах - это одно и тоже.

   
 
 автор: skazi   (21.05.2007 в 01:04)   письмо автору
 
   для: cheops   (21.05.2007 в 01:02)
 

В этом я разобрался, $string это то что мы ищим, а как вывести результат?

   
 
 автор: mr Bin   (21.05.2007 в 02:12)   письмо автору
 
   для: 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) == ) 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 
"Ваш запрос слишком короткий"
}
?> 

   
 
 автор: skazi   (21.05.2007 в 23:06)   письмо автору
 
   для: mr Bin   (21.05.2007 в 02:12)
 

Да, все работает, только немного напутали с кавычками { }

Спасибо!

   
 
 автор: skazi   (21.05.2007 в 23:24)   письмо автору
 
   для: mr Bin   (21.05.2007 в 02:12)
 

Только вот еще что.. Этот скрипт ищет только первый текст, а мне нужно все что найдет скрипт. Куда вставить echo $s1.'<b>'.$needle.'</b> '.$s2; чтобы выводилось все, что найдет скрипт...

   
 
 автор: skazi   (22.05.2007 в 17:26)   письмо автору
 
   для: skazi   (21.05.2007 в 23:24)
 

поммогите пожалуйста

   
 
 автор: mr Bin   (22.05.2007 в 18:34)   письмо автору
 
   для: skazi   (22.05.2007 в 17:26)
 

Не могу утверждать, попробуйте поменять эту строчку:

$needle= ''.$name.''; $s1= ''; $s2=''; $len= 3;

на эту:

$needle.= ''.$name.''; $s1.= ''; $s2.=''; $len.= 3; 

   
 
 автор: skazi   (22.05.2007 в 18:39)   письмо автору
 
   для: mr Bin   (22.05.2007 в 18:34)
 

Поменял, но ничего не изменилось.
.. проблема еще существует :(

   
 
 автор: mr Bin   (22.05.2007 в 18:51)   письмо автору
 
   для: 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) == ) { 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
?>

   
 
 автор: skazi   (22.05.2007 в 23:01)   письмо автору
 
   для: mr Bin   (22.05.2007 в 18:51)
 

Спасибо. Теперь все норм работает.

   
 
 автор: mr Bin   (22.05.2007 в 23:21)   письмо автору
 
   для: skazi   (22.05.2007 в 23:01)
 

Слава богу :)

   
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования