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

Форум PHP

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

 

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

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

тема: Ссылка в выводе скрипта
 
 автор: Алл   (20.01.2005 в 06:53)   письмо автору
 
 

Эта тема является неким продолжением темы: Алл, текстовый поиск по фотографиям. Меня очень интересует, каким образом можно сделать так, чтобы фотографии, выведенные в результате скрипта поиска реагировали на ссылку (в форме вывода результатов) т.е. как сделать, чтобы при клике на фото выявленного при работе скрипта открывалась html страничка.
Необходимо ли делать еще одну базу и можно ли усовершенствовать предыдущий скрипт или необходимо составлять новый.

   
 
 автор: cheops   (20.01.2005 в 07:41)   письмо автору
 
   для: Алл   (20.01.2005 в 06:53)
 

Имеется ввиду исходная HTML-страница? Т.е. там где фотография изначально базируется?

   
 
 автор: Алл   (20.01.2005 в 13:02)   письмо автору
 
   для: cheops   (20.01.2005 в 07:41)
 

Нет, здесь имеется ввиду, HTML страница, на которой распологается информация по конкретной фотографии,
(такие страницы есть на каждую фотографию)
Допустим если фото-020023.jpg, то страница на эту фотку называется -020023.htm

   
 
 автор: cheops   (20.01.2005 в 18:42)   письмо автору
 
   для: Алл   (20.01.2005 в 13:02)
 

Т.е. её из имени фотографии можно сформировать? Например, при помощи кода
<?php 
  $filename 
"020023.jpg";
  echo 
substr($filename,0,strlen($filename)-4).".htm";
?>

   
 
 автор: Алл   (21.01.2005 в 03:59)   письмо автору
 
   для: cheops   (20.01.2005 в 18:42)
 

а если код нужен для всех фотографий, и чтобы он начинал работать при клике в выводе результатов на фото?
Его реально запихать в скрипт поиска?

   
 
 автор: cheops   (21.01.2005 в 12:56)   письмо автору
 
   для: Алл   (21.01.2005 в 03:59)
 

Т.е. в поиске в нашей старой теме? http://www.softtime.ru/forum/read.php?id_forum=1&id_theme=1273
Это можно внедрить примерно следующим образом
<?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
  { 
    
// Формируем ссылку на HTML-страницу
    
$pathh =  substr($pathp,0,strlen($pathp)-4).".htm";
    echo 
"<a href=$pathh><IMG src=$pathp width=779 height=106 border=0></a><br>"
  } 
?>

   
 
 автор: Алл   (24.01.2005 в 06:54)   письмо автору
 
   для: cheops   (21.01.2005 в 12:56)
 

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

<html>..........
<?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
  { 
    
// Формируем ссылку на HTML-страницу 
    
$pathh =  substr($pathp,0,strlen($pathp)-4).".htm"
    echo 
"<div align=center><a href=$pathh><IMG src=$pathp width=175 height=118 border=0></a><br></div>"
  } 
?>
......</html>

1. Как сделать чтобы фотографии выводились по три в горизонтали (а не по одной, как сейчас) ?
2. Если ключевое слово не найдено в базе выводится ошибка, необходимо опять через параметр if сделать так, чтобы если слово в базе не найдено, выводилось примерно следующие: На Ваш запрос ничего не обнаружено? Куда должен вставляться if ? и как примерно будет выглядеть строка?

   
 
 автор: cheops   (24.01.2005 в 09:35)   письмо автору
 
   для: Алл   (24.01.2005 в 06:54)
 

Можно примерно следующим образом
<html>.......... 
<?php 
  Error_Reporting
(E_ALL & ~E_NOTICE); 
  
$photo_path = array();
  
// Имя файла с путями к фотографиям и ключевыми словами 
  
$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
    } 
  } 
  
$cut 1;
  echo 
"<table>";
  
// Выводим фотографии 
  
foreach($photo_path as $pathp
  { 
    if(
$cut == 1) echo "<tr>";
    
// Формируем ссылку на HTML-страницу 
    
$pathh =  substr($pathp,0,strlen($pathp)-4).".htm"
    echo 
"<td><div align=center><a href=$pathh><IMG src=$pathp width=175 height=118 border=0></a><br></div></td>"
    
$cut++;
    if(
$cut == 3)
    {
      echo 
"</tr>";
      
$cut 1;
    }
  } 
  echo 
"</table>";
?> 
......</html>

   
 
 автор: Алл   (24.01.2005 в 14:35)   письмо автору
 
   для: cheops   (24.01.2005 в 09:35)
 

А как быть со вторым вопросом?

   
 
 автор: cheops (из ННГУ)   (24.01.2005 в 18:18)
 
   для: Алл   (24.01.2005 в 14:35)
 

Хм...
<?php
$photo_path 
= array(); 
?>

в начале скрипта не помогло?

   
 
 автор: Алл   (25.01.2005 в 05:59)   письмо автору
 
   для: cheops (из ННГУ)   (24.01.2005 в 18:18)
 

Да нет, что-то не помогает. Все по старому.!

   
 
 автор: cheops   (25.01.2005 в 14:13)   письмо автору
 
   для: Алл   (25.01.2005 в 05:59)
 

Попробуйте после первого цикла foreach поставить код
<?php
  
if(!empty($photo_path)) 
  {
     exit(
"К сожалению ничего не найдено. Попробуйте другие ключевые слова.");
  }
?>

   
 
 автор: Алл   (26.01.2005 в 06:13)   письмо автору
 
   для: cheops   (25.01.2005 в 14:13)
 



<html>.......... 
<?php 
  Error_Reporting
(E_ALL & ~E_NOTICE); 
  
$photo_path = array(); 
  
// Имя файла с путями к фотографиям и ключевыми словами 
  
$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(!empty(
$photo_path)) 
  { 
     exit(
"К сожалению ничего не найдено. Попробуйте другие ключевые слова."); 
  } 
 
  { 
    
// Проверяем входит ли в состав строки искомое 
    // слово - если входит - запоминаем его номер. 
    
if(preg_match("|".$_GET['name']."|i"$lines)) 
    { 
      
$path substr($lines,0,strpos($lines," ")); 
      
$photo_path[] = $path
    } 
  } 
  
$cut 1
  echo 
"<table>"
  
// Выводим фотографии 
  
foreach($photo_path as $pathp
  { 
    if(
$cut == 1) echo "<tr>"
    
// Формируем ссылку на HTML-страницу 
    
$pathh =  substr($pathp,0,strlen($pathp)-4).".htm"
    echo 
"<td><div align=center><a href=$pathh><IMG src=$pathp width=175 height=118 border=0></a><br></div></td>"
    
$cut++; 
    if(
$cut == 3
    { 
      echo 
"</tr>"
      
$cut 1
    } 
  } 
  echo 
"</table>"
?> 
......</html>

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

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

А нет, я имел ввиду
<html>.......... 
<?php 
  Error_Reporting
(E_ALL & ~E_NOTICE); 
  
$photo_path = array(); 
  
// Имя файла с путями к фотографиям и ключевыми словами 
  
$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
    } 
  } 
  
$cut 1
  echo 
"<table>"
  if(empty(
$photo_path)) 
  { 
     exit(
"К сожалению ничего не найдено. Попробуйте другие ключевые слова."); 
  } 
  
// Выводим фотографии 
  
foreach($photo_path as $pathp
  { 
    if(
$cut == 1) echo "<tr>"
    
// Формируем ссылку на HTML-страницу 
    
$pathh =  substr($pathp,0,strlen($pathp)-4).".htm"
    echo 
"<td><div align=center><a href=$pathh><IMG src=$pathp width=175 height=118 border=0></a><br></div></td>"
    
$cut++; 
    if(
$cut == 3
    { 
      echo 
"</tr>"
      
$cut 1
    } 
  } 
  echo 
"</table>"
?> 
......</html>

   
 
 автор: Алл   (31.01.2005 в 06:08)   письмо автору
 
   для: cheops   (26.01.2005 в 11:25)
 

Все работает, огромное спасибо.

P.S. Извините, что так долго пытался разобраться.

   
 
 автор: Алл   (01.02.2005 в 10:52)   письмо автору
 
   для: Алл   (31.01.2005 в 06:08)
 

Накаркал.
У меня появился еще один вопрос.
Как сделать так, чтобы на одну страницу выводилось не более 30 фотографий, а остальные выводились на след. странице того же вывода? А то одно ключевое слово соответствует аж 45 фоткам (и места много занимает, и грузиться дольше)

   
Rambler's Top100
вверх

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