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

Форум PHP

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

 

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

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

тема: Вопрос по старой теме (поиск по фотографиям).
 
 автор: Алл   (02.02.2005 в 05:54)   письмо автору
 
 

Посмотри ссылку:
http://www.softtime.ru/forum/read.php?id_forum=1&id_theme=1625&page=1

   
 
 автор: cheops   (03.02.2005 в 01:32)   письмо автору
 
   для: Алл   (02.02.2005 в 05:54)
 

Попробуйте вот этот скрипт.

   
 
 автор: Алл   (07.02.2005 в 06:59)   письмо автору
 
   для: cheops   (03.02.2005 в 01:32)
 

Есть некоторые недочеты в скрипте.

<?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(
"К сожалению ничего не найдено. Попробуйте другие ключевые слова."); 
  }
  
// Число фотографий на одной странице
  
$pnumber 2;
  
// Стартовая точка
  
if(empty($_GET['start'])) $start 1;
  else 
$start $_GET['start'];
  
// Общее число фотографий в результатах поиска
  
$total count($photo_path);
  
// Счётчик
  
$j 1;
  
// Выводим фотографии 
  
foreach($photo_path as $pathp
  { 
    if(
$j <= $startcountinue;
    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
    }
    if(
$j $start $pnumber) break;
  } 
  echo 
"</table>"
  
// Выводим ссылки на другие темы
  
$number = (int)($total/$pnumber);
  if((float)(
$total/$pnumber) - $number != 0$number++;
  echo 
"<tr><td class=bottomtabletema colspan=5><div class=leftblock><p class=texthelp>Сообщения: ";
  for(
$i 1$i<=$number$i++)
  {
      if(
$number == $i)
      {
        echo 
"<a href=search.php?start=$start&name=".$_GET[name].">[".(($i 1)*$pnumber 1)."-$total]</a>";
      }
      else
      {
        echo 
"<a href=search.php?start=$start&name=".$_GET[name].">[".(($i 1)*$pnumber 1)."-".$i*$pnumber."]</a>";
      }
    }
?>

Если выводиться всего три фотографии, то появляются окошки [1-2][3-3] , а как сделать, чтобы вторая появлялась при больше 30 фоток. Допустим при 26- [1-26], при 13- [1-13], при 42- [1-30][31-42].Вот примерно так реально?
И эти ссылки [.....] [......] при выводе скрипта портят html код который находиться слева (внедряясь туда), чтобы этого не было, надо изменить строчку.

echo "<tr><td class=bottomtabletema colspan=5><div class=leftblock><p class=texthelp>Сообщения: ";

на

echo "<tr><td class=bottomtabletema colspan=5><div class=centerblock><p class=texthelp>Сообщения: ";

Да?

   
 
 автор: cheops   (07.02.2005 в 09:22)   письмо автору
 
   для: Алл   (07.02.2005 в 06:59)
 

1) Первое легко настраивается (я просто оставил для теста) найдите в скрипте строку
<?php
  
// Число фотографий на одной странице 
  
$pnumber 2;
?>

и измените её на
<?php
  
// Число фотографий на одной странице 
  
$pnumber 30;
?>

2)Со вторым вопросом лучше обратиться на http://www.softtime.ru/forum/index.php?id_forum=4 - дизайн это уже не по моей части :)))

   
 
 автор: Алл   (09.02.2005 в 06:22)   письмо автору
 
   для: cheops   (07.02.2005 в 09:22)
 

Вроде разобрался, У меня еще есть вопрос, к этой теме он явно не относиться, но все же.
Могу ли я вставлять JS в PHP и будет ли от этого меняться смысл (вопрос по баннерам). Допустим Есть страница ban.php вида

<?php
JavaScript 
//идет код баннера 
?>

После все это может включиться во все страницы внизу примерно так?

<?php
include "ban.php"
?>

   
 
 автор: cheops   (09.02.2005 в 09:27)   письмо автору
 
   для: Алл   (09.02.2005 в 06:22)
 

Да можно, но к JS следует относится как к обычному HTML, т.е. либо выводить его в не тэгов <?php ?>, либо при помощи операторов echo, print и т.п.

   
 
 автор: glsv (Дизайнер)   (09.02.2005 в 11:31)   письмо автору
 
   для: Алл   (09.02.2005 в 06:22)
 

Только небольшая поправка.

<?php 
  
echo "JavaScript //идет код баннера";
?> 

В данном случае вы будете вынуждены отслеживать применение кавычек, так как они у вас уже используются в операторе echo.

Второй способ лишен этих недостатков.
<?php
include "ban.php";
?>.

   
 
 автор: Алл   (10.02.2005 в 06:07)   письмо автору
 
   для: glsv (Дизайнер)   (09.02.2005 в 11:31)
 

ок, насчет баннеров все понятно, ну а с моими баранами опять проблемма.
Почему в выводе фоток из скрипта надпись допустим: Сообщения [1-16] [17-17]наезжает на последние выведенные фотографии?
Я чуть изменил строчку

echo "<tr><td class=bottomtabletema colspan=5><div class=leftblock><p class=texthelp>Сообщения: "; 

на

echo "<tr><td class=bottomtabletema colspan=5><div align=center class=leftblock><p class=texthelp>Сообщения: "; 

может поэтому?

И почему независимо сколько выставляю $pnumber = все фото появляются на одной странице, меняются только вид допустим: Сообщения [1-16] [17-17] при17 фоток при $pnumber =16; и т.д. (а фото так и рассполагаються на одной странице)

   
 
 автор: Алл   (11.02.2005 в 06:08)   письмо автору
 
   для: Алл   (10.02.2005 в 06:07)
 

cheops что делать?

   
 
 автор: cheops   (11.02.2005 в 07:16)   письмо автору
 
   для: Алл   (10.02.2005 в 06:07)
 

Хм... вообще-то не должно быть так: оба условия if в цикле foreach присутствуют?

   
 
 автор: Алл   (11.02.2005 в 13:48)   письмо автору
 
   для: cheops   (11.02.2005 в 07:16)
 

Тогда в чем ошибка?

   
 
 автор: cheops   (11.02.2005 в 22:07)   письмо автору
 
   для: Алл   (11.02.2005 в 13:48)
 

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

   
 
 автор: Алл   (14.02.2005 в 06:19)   письмо автору
 
   для: cheops   (11.02.2005 в 22:07)
 

Прикрепляю файл полностью в каком сейчас он виде

   
 
 автор: Алл   (15.02.2005 в 06:02)   письмо автору
 
   для: Алл   (14.02.2005 в 06:19)
 

Есть какие-нибудь мысли по этому поводу?

   
 
 автор: cheops   (15.02.2005 в 12:28)   письмо автору
 
   для: Алл   (15.02.2005 в 06:02)
 

Спасибо, что напомнили о себе :)))
Исправьте пожалуйста блок
<?php
  
// Выводим фотографии 
  
foreach($photo_path as $pathp
  { 
    if(
$j <= $startcountinue
    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
    } 
    if(
$j $start $pnumber) break; 
  } 
?>

на
<?php
  
// Выводим фотографии 
  
foreach($photo_path as $pathp
  { 
    if(
$j <= $startcountinue
    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
    } 
    if(
$j $start $pnumber) break; 
    
$j++;
  } 
?>

   
 
 автор: Алл   (17.02.2005 в 08:28)   письмо автору
2.5 Кб
 
   для: cheops   (15.02.2005 в 12:28)
 

Заменил, но все осталось по старому (все фото на одной странице)
Зато наконец-то разобрался с дизайном. Прилагаю файл с тем что есть.

   
 
 автор: cheops   (17.02.2005 в 08:56)   письмо автору
 
   для: Алл   (17.02.2005 в 08:28)
 

Попробуйте переправить блок
<?php
  
// Счётчик 
  
$j 1
  
// Выводим фотографии 
  
foreach($photo_path as $pathp
  { 
    if(
$j <= $startcountinue
    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
    } 
    if(
$j $start $pnumber) break; 
    
$j++; 
  }
?>

на
<?php
  
// Счётчик 
  
$j 0
  
// Выводим фотографии 
  
foreach($photo_path as $pathp
  { 
    
$j++;
    if(
$j <= $startcountinue
    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
    } 
    if(
$j $start $pnumber) break; 
  }
?>

   
 
 автор: Алл   (18.02.2005 в 06:08)   письмо автору
 
   для: cheops   (17.02.2005 в 08:56)
 

Все осталось по старому :(

   
 
 автор: cheops   (18.02.2005 в 12:51)   письмо автору
 
   для: Алл   (18.02.2005 в 06:08)
 

Хм... вообще говоря странно. Попробуйте в самом начае злополучно цикла foreach вывести значение
<?php
  
echo ($j $start)." - ".$pnumber."<br>";
?>

   
 
 автор: Алл   (21.02.2005 в 05:01)   письмо автору
 
   для: cheops   (18.02.2005 в 12:51)
 

Поместил, скрипт выдает вообще какую то галематью типа
-1-1
0-2
и т.д.
потом идут фотографии.

   
 
 автор: cheops   (21.02.2005 в 09:32)   письмо автору
 
   для: Алл   (21.02.2005 в 05:01)
 

Хм... странно, т.е. $pnumber изменяется в каждом цикле... вроде бы негде - в качестве последней цифры идёт $pnumber или $j?

   
 
 автор: Алл   (21.02.2005 в 12:00)   письмо автору
 
   для: cheops   (21.02.2005 в 09:32)
 

вроде $pnumber

   
 
 автор: Алл   (22.02.2005 в 06:05)   письмо автору
 
   для: Алл   (21.02.2005 в 12:00)
 

хотя в новом скрипте фото стали выводиться $pnumber-1 когда идет разграничение уже на вторую страницу (но по прежнему выводятся фсе фото (теперь за исключением последней))

   
 
 автор: cheops   (22.02.2005 в 09:50)   письмо автору
 
   для: Алл   (22.02.2005 в 06:05)
 

Выложите пожалуйста ещё раз то, что сейчас есть - я попробую потестировать на своей машине.

   
 
 автор: Алл   (22.02.2005 в 12:21)   письмо автору
2.5 Кб
 
   для: cheops   (22.02.2005 в 09:50)
 

Выкладываю то, что сейчас есть.

   
 
 автор: Алл   (24.02.2005 в 06:43)   письмо автору
 
   для: Алл   (22.02.2005 в 12:21)
 

Так в чем ошибка скрипта?

   
 
 автор: cheops   (24.02.2005 в 10:03)   письмо автору
 
   для: Алл   (24.02.2005 в 06:43)
 

Попробуйте вот это скрипт

   
 
 автор: Алл   (25.02.2005 в 06:25)   письмо автору
 
   для: cheops   (24.02.2005 в 10:03)
 

Скрипт стал работать по страничкам как надо, только появилась такая ошибка. Он не выводит последнюю фотографию на каждой странице. (хотя умерация выводиться правильно). Допустим фоток 17 на первой страничке [1-16] выводиться 15 фотографий, а на второй [17-17] ни одной.

   
 
 автор: Алл   (25.02.2005 в 12:24)   письмо автору
 
   для: Алл   (25.02.2005 в 06:25)
 

Как быть?

   
 
 автор: cheops   (25.02.2005 в 12:39)   письмо автору
 
   для: Алл   (25.02.2005 в 12:24)
 

Хм... а вы не можете выложить файл base.txt с этими 17 фотографиями?

   
 
 автор: Алл   (25.02.2005 в 13:36)   письмо автору
 
   для: cheops   (25.02.2005 в 12:39)
 

Допустим вот фото на всю природу.

   
 
 автор: cheops   (25.02.2005 в 22:33)   письмо автору
 
   для: Алл   (25.02.2005 в 13:36)
 

Попробуйте этот вариант.

   
 
 автор: Алл   (02.03.2005 в 06:09)   письмо автору
 
   для: cheops   (25.02.2005 в 22:33)
 

Попробовал. Тут такое дело. Когда запросу соответствуют 16 и более фоток, первая страница выодиться как положенно, но вторая опять на одну меньше. Допустим фоток удовлетворяющих запрос 19. На первой странице [1-16] и выводиться все правильно, а на второй [17-19], а выводиться всего две. Такая же ситуация и если фоток меньше 16, допустим три, получается что [1-3] а выводиться всего две

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

ошибка не может быть в цикле foreach?

   
 
 автор: Алл   (03.03.2005 в 06:11)   письмо автору
 
   для: Алл   (02.03.2005 в 10:39)
 

Посмотрите пожалуйста.

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

Я помню, просто вчера что-то не разобрался... мистика какая-то, буду разбираться сегодня (нужно было обязательно выспаться).

   
 
 автор: cheops   (04.03.2005 в 09:53)   письмо автору
 
   для: cheops   (03.03.2005 в 06:49)
 

Попробуйте вот этот вариант

PS Если что-то не заладится - заведите, пожалуйста, новую тему, а то это уже слишком длиная.

   
 
 автор: Димитрий   (11.03.2005 в 16:48)   письмо автору
 
   для: Алл   (02.02.2005 в 05:54)
 

У меня есть кое какой скрипт:

В работе скрипт можно посмотреть по адресу:
http://webmasteram.wallst.ru/fons.htm

   
Rambler's Top100
вверх

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