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

Форум PHP

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

 

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

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

тема: Aлл, текстовый поиск по фотографиям
 
 автор: cheops   (27.12.2004 в 13:33)   письмо автору
 
 

Это продолжение темы http://www.softtime.ru/forum/read.php?id_forum=1&id_theme=981
Хм... а может вы дадите прямой URL на страницу, где уже расставлены ключевые слова, чтобы я мог отладить скрипт на примере этой страницы.

   
 
 автор: Алл   (27.12.2004 в 14:23)   письмо автору
 
   для: cheops   (27.12.2004 в 13:33)
 

хорошо, посылаю письмо. Надеюсь поможите, но на сайте имя форме не дано.

   
 
 автор: cheops   (27.12.2004 в 15:10)   письмо автору
 
   для: Алл   (27.12.2004 в 14:23)
 

Готово, почитайте комментарий к search.php.

   
 
 автор: Алл   (29.12.2004 в 06:13)   письмо автору
 
   для: cheops   (27.12.2004 в 15:10)
 

cheops, посмотрел я на скрипт, запустил его, в принципе он рабочий, но выдает в итоге не совсем то что надо. Какие бы слова не вбивались в поиск он все равно выдает полный список ссылок где лежат картинки и не выводит фоторгафии.

   
 
 автор: cheops   (29.12.2004 в 08:17)   письмо автору
 
   для: Алл   (29.12.2004 в 06:13)
 

Фотографии сложно извлечь из цельного HTML, в этом случае нужно создавать либо таблицу, а ещё проще текстовый файл со списком фотографий и ключевых слов для этой фотографии - это позволит выводить их непосредственно на странице результатов.

PS Хм... странно у меня выводилось лишь несколько ссылок.

   
 
 автор: Алл   (29.12.2004 в 09:02)   письмо автору
 
   для: cheops   (29.12.2004 в 08:17)
 

ясно, я так понял необходимо вставить все фотографии в один txt документ, да? вместе с ключевыми словами. А как тогда поиск будет выводить допустим лишь одно фото из многих. Если использовать данный скрипт он просто выведет ссылку на txt шник и все.

   
 
 автор: cheops   (29.12.2004 в 13:32)
 
   для: Алл   (29.12.2004 в 09:02)
 

Если у нас будет такой текстовый файл мы реализуем другую систему поиска, она не будет завязана на подразделы, а конечная страница будет сразу выводить все найденные фотографии.

   
 
 автор: Алл   (30.12.2004 в 06:42)   письмо автору
 
   для: cheops   (29.12.2004 в 13:32)
 

Хорошо, приступаю к созданию текстового файла, тоько один вопрос, в нем должны размещаться сами фоторгафии или ссылки где они находятся?

   
 
 автор: cheops   (30.12.2004 в 10:09)   письмо автору
 
   для: Алл   (30.12.2004 в 06:42)
 

Ссылки, т.е. что вроде
image/тра-та-та.jpg город, собор, здание, солнечный день
image/тра-та-та.jpg город, вокзал, здание, солнечный день 

   
 
 автор: Алл   (10.01.2005 в 07:34)   письмо автору
 
   для: cheops   (30.12.2004 в 10:09)
 

текстовый докутент создан под именем base.txt, чем должен отличаться скрипт от предыдущего?

   
 
 автор: cheops   (10.01.2005 в 11:19)   письмо автору
 
   для: Алл   (10.01.2005 в 07:34)
 

Да скрипт должен отличаться, я сегодня вечером постараюсь его создать.

   
 
 автор: cheops   (10.01.2005 в 22:04)   письмо автору
 
   для: Алл   (10.01.2005 в 07:34)
 

Давайте от этого скрипта отталкиваться - он просто ищет фотографии и выводит их одну под другой.
<?php 
  
// Имя файла с путями к фотографиям и ключевыми словами
  
$filename " base.txt";
  
// Помещаем содержимое файла в массив $photo_line
  
$photo_line file($filename); 
  
// Проверяем то, что передано в форме
  // дабы исключить взлом 
  
$_GET['name'] = str_replace("."," ",$_GET[name]);
  
$_GET['name'] = str_replace("'"," ",$_GET[name]);
  
$_GET['name'] = str_replace('"'," ",$_GET[name]);
  if(empty(
$_GET['name']))
  {
    echo 
"Текстовое поле осталось не заполненным - введите слово для поиска";
  }
  
// В цикле ищем вхождения
  
foreach($photo_line as $lines
  { 
    
// Проверяем входит ли в состав строки искомое
    // слово - если входит - запоминаем его номер.
    
if(preg_match("|".$_GET['name']."|i"$lines))
    {
      
$path substr($lines,0,strpos($lines," "));
      
$photo_path[] = $path;
    }
  }
  
// Выводим фотографии
  
foreach($photo_path as $pathp)
  {
    echo 
"<IMG src=$pathp width=779 height=106 border=0><br>";
  }
?>

PS Этот код следует поместить в search.php.

   
 
 автор: Алл   (14.01.2005 в 06:26)   письмо автору
 
   для: cheops   (10.01.2005 в 22:04)
 

Попробоват тестировать следующий код

<?php 
Error_Reporting
(E_ALL & ~E_NOTICE);
// Имя файла с путями к фотографиям и ключевыми словами 
$filename " base.txt"
// Помещаем содержимое файла в массив $photo_line 
$photo_line file($filename); 
// Проверяем то, что передано в форме 
// дабы исключить взлом 
$_GET['name'] = str_replace("."," ",$_GET[name]); 
$_GET['name'] = str_replace("'"," ",$_GET[name]); 
$_GET['name'] = str_replace('"'," ",$_GET[name]); 
if(empty(
$_GET['name'])) 

echo 
"Текстовое поле осталось не заполненным - введите слово для поиска"

// В цикле ищем вхождения 
foreach($photo_line as $lines

// Проверяем входит ли в состав строки искомое 
// слово - если входит - запоминаем его номер. 
if(preg_match("|".$_GET['name']."|i"$lines)) 

$path substr($lines,0,strpos($lines," ")); 
$photo_path[] = $path


// Выводим фотографии 
foreach($photo_path as $pathp

echo 
"<IMG src=$pathp width=779 height=106 border=0><br>"

?>

Выдает следующие ошибки
Warning: file( base.txt): failed to open stream: No such file or directory in z:\home\test1.ru\www\search.php on line 6
Текстовое поле осталось не заполненным - введите слово для поиска
Warning: Invalid argument supplied for foreach() in z:\home\test1.ru\www\search.php on line 17

Warning: Invalid argument supplied for foreach() in z:\home\test1.ru\www\search.php on line 28

   
 
 автор: cheops   (14.01.2005 в 13:20)   письмо автору
 
   для: Алл   (14.01.2005 в 06:26)
 

А файл base.txt расположен в той же директории, что и search.php?

   
 
 автор: Алл   (17.01.2005 в 08:29)   письмо автору
 
   для: cheops   (14.01.2005 в 13:20)
 

Ошибку я нашел, скрипт заработал (ковычки в 4 строке (base.txt)).
Но проблемма в том, что в результате выводиться не только фото которые соответствуют поиску, но и остальные, а так же строка говорящая что надо ввести слово в форму поиска. т.е. все подряд.

   
 
 автор: cheops   (17.01.2005 в 13:25)   письмо автору
 
   для: Алл   (17.01.2005 в 08:29)
 

Да, нужно переписать скрипт следующим образом
<?php 
Error_Reporting
(E_ALL & ~E_NOTICE); 
// Имя файла с путями к фотографиям и ключевыми словами 
$filename " base.txt"
// Помещаем содержимое файла в массив $photo_line 
$photo_line file($filename); 
// Проверяем то, что передано в форме 
// дабы исключить взлом 
$_GET['name'] = str_replace("."," ",$_GET[name]); 
$_GET['name'] = str_replace("'"," ",$_GET[name]); 
$_GET['name'] = str_replace('"'," ",$_GET[name]); 
if(empty(
$_GET['name'])) 

exit (
"Текстовое поле осталось не заполненным - введите слово для поиска"); 

// В цикле ищем вхождения 
foreach($photo_line as $lines

// Проверяем входит ли в состав строки искомое 
// слово - если входит - запоминаем его номер. 
if(preg_match("|".$_GET['name']."|i"$lines)) 

$path substr($lines,0,strpos($lines," ")); 
$photo_path[] = $path


// Выводим фотографии 
foreach($photo_path as $pathp

echo 
"<IMG src=$pathp width=779 height=106 border=0><br>"

?> 

В форме текстовое поле называется name?

   
 
 автор: Алл   (18.01.2005 в 06:24)   письмо автору
 
   для: cheops   (17.01.2005 в 13:25)
 

Скрипт работает уже лучше, но постоянно выдает чтобы ввели слово в текстовом поле, я в форме прописывал name как name и обзывал его и по другому, но результат не меняется
<FORM align="center" name="name" action="search.php" method="post"><INPUT name="name" size="20" type="text" vspace="7".......
Примерно так, если совместить оба варианта.
Так как подумал, что он (скрипт) не видит само текстовое поле
Может проблемма все-таки в скрипте?

   
 
 автор: Алл   (18.01.2005 в 14:33)   письмо автору
 
   для: Алл   (18.01.2005 в 06:24)
 

Может быть подскажите мне в чем ошибка?

   
 
 автор: cheops   (18.01.2005 в 14:53)   письмо автору
 
   для: Алл   (18.01.2005 в 06:24)
 

Хм... у нас форма и поле называются одинаково... name и name - попробуйте переименовать форму... Кроме того, не могли бы вы подробнее рассказать о действиях которые приводят к сбою? Чтобы я мог их воспроизвести?

   
 
 автор: Алл   (19.01.2005 в 06:44)   письмо автору
 
   для: cheops   (18.01.2005 в 14:53)
 

это я для примера назвал форму name, на самом деле я пробовал именовать и форму, и поле по очереди, результат вывода скрипта не менялся. А выдает он во всех случаях только одну текстовую строчку : Текстовое поле осталось не заполненным - введите слово для поиска. Причем не важно соответствует ли вводимое текстовое слово ключевому или нет,
вот так из крайности в крайность, Если помните, в предыдущем варианте скрипта он выводил все подряд.

   
 
 автор: cheops   (19.01.2005 в 12:59)   письмо автору
 
   для: Алл   (19.01.2005 в 06:44)
 

Я понял в чём проблема, в форме стоит метод POST:
 method="post" 

а в обработчике ожидается метод GET - следует либо в форме поставить метод GET, либо в обработчике заменить все $_GET на $_POST

   
 
 автор: Алл   (20.01.2005 в 06:43)   письмо автору
 
   для: cheops   (19.01.2005 в 12:59)
 

Вот и правда, спасибо, а то я тут уже голову сломал пытаясь понять в чем ошибка. У меня правда есть еще один вопрос, наверное надо создать новую тему, так как в эту он немного не вписывается. тема будет называться "Ссылка в выводе скрипта".

   
Rambler's Top100
вверх

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