|
|
|
| Эта тема является неким продолжением темы: Алл, текстовый поиск по фотографиям. Меня очень интересует, каким образом можно сделать так, чтобы фотографии, выведенные в результате скрипта поиска реагировали на ссылку (в форме вывода результатов) т.е. как сделать, чтобы при клике на фото выявленного при работе скрипта открывалась html страничка.
Необходимо ли делать еще одну базу и можно ли усовершенствовать предыдущий скрипт или необходимо составлять новый. | |
|
|
|
|
|
|
|
для: Алл
(20.01.2005 в 06:53)
| | Имеется ввиду исходная HTML-страница? Т.е. там где фотография изначально базируется? | |
|
|
|
|
|
|
|
для: cheops
(20.01.2005 в 07:41)
| | Нет, здесь имеется ввиду, HTML страница, на которой распологается информация по конкретной фотографии,
(такие страницы есть на каждую фотографию)
Допустим если фото-020023.jpg, то страница на эту фотку называется -020023.htm | |
|
|
|
|
|
|
|
для: Алл
(20.01.2005 в 13:02)
| | Т.е. её из имени фотографии можно сформировать? Например, при помощи кода
<?php
$filename = "020023.jpg";
echo substr($filename,0,strlen($filename)-4).".htm";
?>
|
| |
|
|
|
|
|
|
|
для: cheops
(20.01.2005 в 18:42)
| | а если код нужен для всех фотографий, и чтобы он начинал работать при клике в выводе результатов на фото?
Его реально запихать в скрипт поиска? | |
|
|
|
|
|
|
|
для: Алл
(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>";
}
?>
|
| |
|
|
|
|
|
|
|
для: 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 ? и как примерно будет выглядеть строка? | |
|
|
|
|
|
|
|
для: Алл
(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>
|
| |
|
|
|
|
|
|
|
для: cheops
(24.01.2005 в 09:35)
| | А как быть со вторым вопросом? | |
|
|
|
|
автор: cheops (из ННГУ) (24.01.2005 в 18:18) |
|
|
для: Алл
(24.01.2005 в 14:35)
| | Хм...
<?php
$photo_path = array();
?>
|
в начале скрипта не помогло? | |
|
|
|
|
|
|
|
для: cheops (из ННГУ)
(24.01.2005 в 18:18)
| | Да нет, что-то не помогает. Все по старому.! | |
|
|
|
|
|
|
|
для: Алл
(25.01.2005 в 05:59)
| | Попробуйте после первого цикла foreach поставить код
<?php
if(!empty($photo_path))
{
exit("К сожалению ничего не найдено. Попробуйте другие ключевые слова.");
}
?>
|
| |
|
|
|
|
|
|
|
для: 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>
|
Если так, то ошибки больше не выдает, но и результат о том, что фото не найдено и надо попробовать другие ключевые слова тоже.? | |
|
|
|
|
|
|
|
для: Алл
(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>
|
| |
|
|
|
|
|
|
|
для: cheops
(26.01.2005 в 11:25)
| | Все работает, огромное спасибо.
P.S. Извините, что так долго пытался разобраться. | |
|
|
|
|
|
|
|
для: Алл
(31.01.2005 в 06:08)
| | Накаркал.
У меня появился еще один вопрос.
Как сделать так, чтобы на одну страницу выводилось не более 30 фотографий, а остальные выводились на след. странице того же вывода? А то одно ключевое слово соответствует аж 45 фоткам (и места много занимает, и грузиться дольше) | |
|
|
|