Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737
Форумы портала PHP.SU :: Как протащить переменные через несколько страниц???

 PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи


 Страниц (1): [1]   

> Описание: Как протащить переменные через несколько страниц???
foboss26
Отправлено: 12 Июня, 2007 - 11:50:27
Post Id


Новичок


Покинул форум
Сообщений всего: 6
Дата рег-ции: Июнь 2007  


Помог: 0 раз(а)




Привет, есть проблема!
Делаю поисковую форму, но не знаю как протащить данные на несколько страниц, сама форма выглядит так:
CODE (text):
скопировать код в буфер обмена
  1.  
  2. print "<form name='podborka' action = 'podborka.php?cat=".$cat."&p' method='post'>";
  3. print '<input name="cat" type="hidden" value="'.$cat.'">';
  4. print '<div class="s2">Цена</div>  от: <input class="form_price" name="prot" type="text" value="'.$prot.'">  ';
  5. print 'до: <input class="form_price" name="prdo" type="text" value="'.$prdo.'"> руб.<br>';
  6. print '<div class="s2">Производители:</div>';
  7. print '<input name="podbor" type="hidden" value="">';
  8. print '<input type="checkbox" name="a" value="a" onclick="checkAll(document.podborka.vend)"> Все производители<br>';
  9. $i=1;
  10. while ($vendor = mysql_fetch_assoc($res_price)) {
  11. if ($vendor['vendor'] <> "") {
  12. print '<input id = "vend" name="P1['.$vendor['vendor'].']" type="checkbox" value="ON"';
  13. if ($P1[$vendor['vendor']] == "ON") {print "checked"; }
  14. print '> '.$vendor['vendor'].'<br>';
  15. }
  16. $i++;
  17. }
  18. print '<br><input type="submit" class = "formsubsearch" value="Подобрать">';
  19. print "</form>";
  20.  


Данные из формы передаются, обрабатываются и формируют запрос к БД, но если результат разбивается на несколько страниц, скажем на 2-3, то при переходе на 2 или 3 страницы ничего не выводится, запрос тереяется.
Подскажите как можно сохранить запрос при POST методе с многостраничным выводом?
Метод GET не подходит, запросы бывают настолько емкими, что просто не могут разместиться в строке URL
Очень надеюсь, на помощь !
 
 Top
evgenijj
Отправлено: 12 Июня, 2007 - 12:14:12
Post Id



Участник


Покинул форум
Сообщений всего: 1212
Дата рег-ции: Авг. 2006  
Откуда: Москва


Помог: 10 раз(а)




 
 Top
foboss26
Отправлено: 12 Июня, 2007 - 13:05:51
Post Id


Новичок


Покинул форум
Сообщений всего: 6
Дата рег-ции: Июнь 2007  


Помог: 0 раз(а)




evgenijj пишет:
http://www.php.su/articles/?cat=examples&page=062

А можно по этому примеру чуть подробнее?
дополняю, к форме:
CODE (text):
скопировать код в буфер обмена
  1.  
  2. if (isset($_POST['P1'])) {
  3.         reset($_POST['P1']);
  4.         $vendors = "";
  5.         $i = 0;
  6.     while (list($key, $val) = each($_POST['P1'])) {
  7.         if ($i == "0") {
  8.  
  9.         }else{
  10.                 $vendors .= "=";
  11.         }
  12.         if ($val == "ON") {
  13.             $vendors .= $key;
  14.                 //print $key."<br>";
  15.         }
  16.         $i++;
  17.     }
  18. }
  19.  
  20.     //print $vendors;
  21.     if (!empty($vendors)) {
  22.         $vendor_search = explode("=",$vendors);
  23.         $venelem=count($vendor_search);
  24.     }
  25.  
  26.     if (!empty($prot) && !empty($prdo)) {
  27.     $price = "AND `price` >= '".$prot."' AND `price` <= '".$prdo."'";
  28.     }elseif (!empty($prot) && empty($prdo)) {
  29.     $price = "AND `price` >= '".$prot."'";
  30.     }elseif (empty($prot) && !empty($prdo)) {
  31.     $price = "AND `price` <= '".$prdo."'";
  32.     }else{
  33.     $price = "";
  34.     }
  35.     //print $venelem;
  36.     if (!empty($vendors)) {
  37.  
  38.          $zapros = "";
  39.          for ($j=0;$j<$venelem;) {
  40.                 if ($j == "0") {
  41.  
  42.                 }else{
  43.                         $zapros .= " OR ";
  44.                 }
  45.                  $zapros .= "`vendor` = '".$vendor_search[$j]."' ".$price." AND `cat_cat` = '".$cat."' AND `status` = '0'";
  46.  
  47.                  $j++;
  48.          }
  49.     }else{
  50.  
  51.                  $zapros .= "`cat_cat` = '".$cat."' ".$price." AND `status` = '0'";
  52.  
  53.  
  54.     }
  55.  
  56.  
  57.  
  58.  
  59.  
  60.     $querycount = "SELECT COUNT(*) as cnt FROM `price` WHERE ".$zapros." ";
  61.     $querycountz = mysql_query($querycount);
  62.     $count = mysql_result($querycountz, 0, 0);
  63.     //print $querycount;
  64.     print "<br>По запросу найдено: ".$yacount." товаров";
  65. if ($count > 0) {
  66. $res_price = mysql_query("SELECT * FROM `price` WHERE ".$zapros." LIMIT ".($lines_per_page * ($yap - 1)).", ".$lines_per_page);
  67. while ($row_price = mysql_fetch_assoc($res_price));
  68.  

А запрос все равно пропадает. ((
 
 Top
Стас
Отправлено: 12 Июня, 2007 - 13:34:25
Post Id


Частый гость


Покинул форум
Сообщений всего: 147
Дата рег-ции: Май 2007  


Помог: 0 раз(а)

[+]


Попробуй сессии, если я правильно понял.
 
 Top
evgenijj
Отправлено: 12 Июня, 2007 - 13:38:09
Post Id



Участник


Покинул форум
Сообщений всего: 1212
Дата рег-ции: Авг. 2006  
Откуда: Москва


Помог: 10 раз(а)




Стас пишет:
Попробуй сессии, если я правильно понял.

Растешь!

foboss26
Каким образом данные из формы у тебя будут доступны на 2-ой странице?
 
 Top
foboss26
Отправлено: 12 Июня, 2007 - 13:49:30
Post Id


Новичок


Покинул форум
Сообщений всего: 6
Дата рег-ции: Июнь 2007  


Помог: 0 раз(а)




Цитата:

Каким образом данные из формы у тебя будут доступны на 2-ой странице?

они остануться в форме, в полях где их ввели. И будут там на протяжении всей выдачи результата поиска.
 
 Top
evgenijj
Отправлено: 12 Июня, 2007 - 13:59:33
Post Id



Участник


Покинул форум
Сообщений всего: 1212
Дата рег-ции: Авг. 2006  
Откуда: Москва


Помог: 10 раз(а)




foboss26 пишет:
Цитата:

Каким образом данные из формы у тебя будут доступны на 2-ой странице?

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

Да, но когда пользователь переходит на вторую страницу результатов поиска, он не нажимает кнопку "Искать" (т.е. не отправляет данные формы). Он просто щелкает по ссылке
<a href="search.php?page=2">2</a>
Так откуда ты будешь брать переменные формы ($_POST["prdo"], $_POST["prot"]) чтобы сформироать запрос к БД?
 
 Top
foboss26
Отправлено: 12 Июня, 2007 - 14:43:30
Post Id


Новичок


Покинул форум
Сообщений всего: 6
Дата рег-ции: Июнь 2007  


Помог: 0 раз(а)




evgenijj пишет:
foboss26 пишет:
Цитата:

Каким образом данные из формы у тебя будут доступны на 2-ой странице?

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

Да, но когда пользователь переходит на вторую страницу результатов поиска, он не нажимает кнопку "Искать" (т.е. не отправляет данные формы). Он просто щелкает по ссылке
<a href="search.php?page=2">2</a>
Так откуда ты будешь брать переменные формы ($_POST["prdo"], $_POST["prot"]) чтобы сформироать запрос к БД?


Тогда попробую на сессии сделать, только подскажите как затолкать массив переменных $_POST['P1'] в сессию, в форме это выглядит так name="P1['.$vendor['vendor'].']"
 
 Top
evgenijj
Отправлено: 12 Июня, 2007 - 14:57:59
Post Id



Участник


Покинул форум
Сообщений всего: 1212
Дата рег-ции: Авг. 2006  
Откуда: Москва


Помог: 10 раз(а)




Просто $_SESSION["P1"] = $_POST["P1"]
PHP:
скопировать код в буфер обмена
  1.  
  2. <?PHP
  3. $arr1 = array( 1 => "first", 2 => "second" );
  4. $arr2 = $arr1;
  5. foreach( $arr2 as $k => $v ) echo $k."->".$v."<br/>";
  6. ?>
  7.  

Результат:
1->first
2->second

Тебе можно сделать очень просто
$_SESSION["search"] = $_POST;
и в дальнейшем вместо $_POST["var"] обращаться к $_SESSION["search"]["var"]
 
 Top
foboss26
Отправлено: 12 Июня, 2007 - 15:50:18
Post Id


Новичок


Покинул форум
Сообщений всего: 6
Дата рег-ции: Июнь 2007  


Помог: 0 раз(а)




evgenijj пишет:
Просто $_SESSION["P1"] = $_POST["P1"]
PHP:
скопировать код в буфер обмена
  1.  
  2. <?PHP
  3. $arr1 = array( 1 => "first", 2 => "second" );
  4. $arr2 = $arr1;
  5. foreach( $arr2 as $k => $v ) echo $k."->".$v."<br/>";
  6. ?>
  7.  

Результат:
1->first
2->second

Тебе можно сделать очень просто
$_SESSION["search"] = $_POST;
и в дальнейшем вместо $_POST["var"] обращаться к $_SESSION["search"]["var"]


Благодарю, за ценные советы ))
Стало работать, только если меняешь запрос поиска, сессия отдает данные полученные ранее, и возвращаются предидущие результаты ((
 
 Top
evgenijj
Отправлено: 12 Июня, 2007 - 16:02:36
Post Id



Участник


Покинул форум
Сообщений всего: 1212
Дата рег-ции: Авг. 2006  
Откуда: Москва


Помог: 10 раз(а)




Цитата:
Стало работать, только если меняешь запрос поиска, сессия отдает данные полученные ранее, и возвращаются предидущие результаты ((

Не надо все так понимать буквально ($_SESSION["search"] = $_POST) -- неплохо и свою голову подключать

<input type="submit" name = "search" value="Подобрать">

if ( isset( $_POST["search"] ) ) $_SESSION["search"] = $_POST;
 
 Top
foboss26
Отправлено: 12 Июня, 2007 - 16:24:24
Post Id


Новичок


Покинул форум
Сообщений всего: 6
Дата рег-ции: Июнь 2007  


Помог: 0 раз(а)




evgenijj пишет:
Цитата:
Стало работать, только если меняешь запрос поиска, сессия отдает данные полученные ранее, и возвращаются предидущие результаты ((

Не надо все так понимать буквально ($_SESSION["search"] = $_POST) -- неплохо и свою голову подключать

<input type="submit" name = "search" value="Подобрать">

if ( isset( $_POST["search"] ) ) $_SESSION["search"] = $_POST;


Спасибо!!!!!!Радость Все получилось, даже лучше чем хотел изначально Радость Все познаётся в учении, а я только учусь.
 
 Top
Страниц (1): [1]
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« Программирование на PHP »


Все гости форума могут просматривать этот раздел.
Только зарегистрированные пользователи могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 



Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB