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

Форум PHP

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

 

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

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

тема: при переходе на другую страницу теряет значение
 
 автор: alik   (21.11.2004 в 16:37)
 
 

Помогите пожалуйста!!! Проблема в передаче значения.
Я делаю поиск по определенному полю. Находит и вытягивает похожие слова и базы.
Но если похожих слов много делаю ограничение: на 1 страницу 7 записей, и соответственно вывожу ссылки на другие странице.
Проблема в том, что при нажатии на другую страницу теряется поисковое слово и выводятся все ссылки.
Я так понял что ошибка в использовании метода $_POST, но как решить проблему я незнаю.
Файл top.php

<form enctype='multipart/form-data' action=search.php method=post>
<input type=hidden name=action value=post>
<input type=text maxLength=256 name=search size=40 value='<? echo $search?>'>
<input type=submit class=find value="Найти!">
<input type=hidden name=id_name value=<? echo $_GET['id_name']; ?>>
</form>

Файл search.php

<?
include "connect.php";
include 
"top.php";
$phrase=$_POST['search'];
$pnumber 7;
if(
$page == ""$page=1;
$begin = ($page 1)*$pnumber;
$find mysql_query("SELECT * FROM firma WHERE name LIKE '%$phrase%' order by id_name desc limit $begin$pnumber;");
$tot mysql_query("SELECT count(*) from firma WHERE name LIKE '%$phrase%';");
if(
mysql_num_rows($find)>0

 if(
$find && $tot)
 {
  
$total mysql_fetch_array($tot);
  
$number = (int)($total['count(*)']/$pnumber);
  if((float)(
$total['count(*)']/$pnumber)-$number != 0$number++;
  for(
$i 1$i<=$number$i++)
  {
   if(
$number == $i)
   {
    if(
$page == $i) echo "[".(($i 1)*$pnumber 1)."-".$total['count(*)']."]";
    else echo 
"<a href=search.php?page=".$i.">[".(($i 1)*$pnumber 1)."-".$total['count(*)']."]</a>";
   }
   else
   {
    if(
$page == $i) echo "[".(($i 1)*$pnumber 1)."-".$i*$pnumber."]";
    else echo 
"<a href=search.php?page=".$i.">[".(($i 1)*$pnumber 1)."-".$i*$pnumber."]</a>";
   }
  }
  while (
$query=mysql_fetch_array($find))
   {
    
//показую найденое
   

 }
}
else echo 
"к сожалению ничего не найдено по <b>$phrase</b>";
include 
"bottom.php";
?>

   
 
 автор: cheops   (21.11.2004 в 18:24)   письмо автору
 
   для: alik   (21.11.2004 в 16:37)
 

Можно засовать поисковое слово в сессии: для этого в файле формы и обработчика поместить инициализацию
<?php
  session_start
();
?>

В обработчике поместить ключевое слово в сессию:
<?php
  session_start
();
  
$phrase=$_POST['search'];
  if(!
empth($phrase))
  {
    
$_SESSION['phrase'] = $phrase;
  }
  else
  {
    
$phrase $_SESSION['phrase'];
  }
  include 
"connect.php"
  include 
"top.php";
?>

   
 
 автор: Akira   (21.11.2004 в 19:46)   письмо автору
 
   для: cheops   (21.11.2004 в 18:24)
 

Поправляем =)
<?php 
  session_start
(); 
  
$phrase=$_POST['search']; 
  if(!empty(
$phrase)) 
  { 
    
$_SESSION['phrase'] = $phrase
  } 
  else 
  { 
    
$phrase $_SESSION['phrase']; 
  } 
  include 
"connect.php"
  include 
"top.php"
?>

   
 
 автор: alik   (22.11.2004 в 02:26)
 
   для: Akira   (21.11.2004 в 19:46)
 

Спасибо заработало. Но остался вопрос: "Когда нужно закрывать сессии? Или они через время закрываются? Или их вообще ненадо закрывать?"

   
 
 автор: cheops   (22.11.2004 в 09:38)   письмо автору
 
   для: alik   (22.11.2004 в 02:26)
 

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

http://www.softtime.ru/forum/read.php?id_forum=1&id_theme=773

   
 
 автор: alik   (22.11.2004 в 23:45)
 
   для: cheops   (22.11.2004 в 09:38)
 

А глюков не будет(с сессиями), если не закрывать !?!?!

   
 
 автор: cheops   (23.11.2004 в 00:13)   письмо автору
 
   для: alik   (22.11.2004 в 23:45)
 

Глюк возможен, если не выставлено время жизни сессии, если будут исчерпаны дискрипторы, но во-первых это очень сложно, во-вторых админ об этом будет знать раньше вас, в третьих на коммерческих и бесплатных хостингах отсутсвие директивы для времени жизни крайне маловероятно...

   
Rambler's Top100
вверх

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