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

Форум PHP

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

 

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

вид форума:
Линейный форум (новые сообщения вниз) Структурный форум

тема: Сессия не работает?

Сообщения:  [1-10]   [11-11] 

 
 автор: Trololo   (03.04.2012 в 17:45)   письмо автору
 
   для: confirm   (03.04.2012 в 17:17)
 

>PS. А вообще-то, у вас ведь загрузка по умолчанию, это только при условии, что не было вообще выбора, а любой выбор сохранять, тогда проще
>]Эффект тот же будет, если я правильно понимаю задачу.
Да, именно так, второй вариант более логичен, хотя возьму на заметку оба :) Теперь все выполняется как задумано. Можно покорять php дальше :) Спасибо Вам большое пребольшое за помощь!!!! Всего Вам хорошего, чего душа пожелает!!!!!

  Ответить  
 
 автор: confirm   (03.04.2012 в 17:17)   письмо автору
 
   для: Trololo   (03.04.2012 в 17:00)
 

<?
session_start
();
if(!isset(
$_SESSION['seek']) && !$_POST) {
   
$_SESSION['seek']['object'] = "Квартира";
   
$_SESSION['seek']['operation'] = "Купить"
} else if(
$_POST) {
   
$_SESSION['seek']['object'] = $_POST['mr'];
   
$_SESSION['seek']['operation'] = $_POST['mo']; 
}
if(isset(
$_GET['seek'])) print_r($_SESSION['seek']);
?>
<form method="post">
<input name="mr" value="mr" />
<input name="mo" value="mo" />
<input type="submit" value="Send" />
</form>
<a href="?seek">GET</a>

PS. А вообще-то, у вас ведь загрузка по умолчанию, это только при условии, что не было вообще выбора, а любой выбор сохранять, тогда проще:
<?
session_start
();
if(!isset(
$_SESSION['seek'])) {
   
$_SESSION['seek']['object'] = "Квартира";
   
$_SESSION['seek']['operation'] = "Купить"

if(
$_POST) {
   
$_SESSION['seek']['object'] = $_POST['mr'];
   
$_SESSION['seek']['operation'] = $_POST['mo']; 
}
if(isset(
$_GET['seek'])) print_r($_SESSION['seek']);
?>
<form method="post">
<input name="mr" value="mr" />
<input name="mo" value="mo" />
<input type="submit" value="Send" />
</form>
<a href="?seek">GET</a>
Эффект тот же будет, если я правильно понимаю задачу.

  Ответить  
 
 автор: Trololo   (03.04.2012 в 17:00)   письмо автору
 
   для: confirm   (03.04.2012 в 16:27)
 

>Вам надо проверять - если не установлена переменная в сессии и не было POST запроса, то установить ее и указать значение по умолчанию, в противном случае указать ей POST-значение.
Написала такое условие:
if (!isset($_SESSION['object']) && !isset($_SESSION['operation']) && !isset($_POST['seek']))
{
    $_SESSION['object'] = "Квартира";
    $_SESSION['operation'] = "Купить";
}
else
{
    $_SESSION['object'] = clearData($_POST['mr']);
    $_SESSION['operation'] = clearData($_POST['mo']);
}

теперь php ругается на пер-е $_POST['mr'] и $_POST['mo'] Notice: Undefined index: mr in /home/user/php_work/New/html/user/estate_user.php on line 52 Notice: Undefined index: mo in /home/user/php_work/New/html/user/estate_user.php on line 53
т.е. в блоке else, я понимаю что php видит эти переменные как неидентифицированные, но я их получаю из формы, тогда как их правильно объявить?

  Ответить  
 
 автор: confirm   (03.04.2012 в 16:27)   письмо автору
 
   для: Trololo   (03.04.2012 в 16:17)
 

Ну так это запрос к одному и тому же скрипту. И тогда все правильно, как вы действуете, так и получается. Первый запуск скрипта (вывод формы) - это выдал сервер пользователю ее и забыл об всем. Отправляется форма - опять запрос этого же скрипта, но то состояние сервера, которое было при первом запуске его, включая все переменные, которые вы могли установить, этого уже нет, и массив POST будет пуст, естественно, при третьем запросе его - ссылкой.
Вам надо проверять - если не установлена переменная в сессии и не было POST запроса, то установить ее и указать значение по умолчанию, в противном случае указать ей POST-значение.

  Ответить  
 
 автор: Trololo   (03.04.2012 в 16:17)   письмо автору
 
   для: confirm   (03.04.2012 в 16:12)
 

в main.php находится форма поиска, в main.php подключаю estate_user.php - обрабатываю эту форму и вывожу данные из БД
p.s. ой, прочитайте пожалуйста мой предыдущий пост, описала проблему как можно подробней, если это поможет )

  Ответить  
 
 автор: Trololo   (03.04.2012 в 16:14)   письмо автору
 
   для: confirm   (03.04.2012 в 15:48)
 

Скрипт обрабатывает данные, полученные из формы и их же использует в запросах к БД и выводится красивая табличка с объектами, когда перехожу по ссылке Подробно, выводится конкретное объявление со всеми подробностями, но данные полученные из формы перезаписываются значениями по умолчанию и в таблице отображается уже не то, что выбрано пользователем, а Квартира -> Купить, т.е. то что идет после else в скрипте. Как сохранить значения, выбранные в форме, т.е. чтобы эти данные, полученные из <select> сохранялись в скрипте на протяжении всего его выполнения или пока не будут выбраны другие значения <select>
Извините, что много "воды лью", просто пока не знаю как объяснить языком программистов php :)

  Ответить  
 
 автор: confirm   (03.04.2012 в 16:12)   письмо автору
 
   для: Trololo   (03.04.2012 в 15:43)
 

Опа, сейчас только обратил внимание - в обоих случаях у вас main.php
О каких разных скриптах тогда речь?

  Ответить  
 
 автор: confirm   (03.04.2012 в 15:48)   письмо автору
 
   для: Trololo   (03.04.2012 в 15:43)
 

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

Ну можно сказать и так, а потому правильно имеете ввиду

>а получается, что когда перехожу на другую ссылку(или вызываю другой скрипт)

И правильно получается, так как вы получаете новые данные, и если не было при этом отправки методом POST, то окуда же им взяться?

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

  Ответить  
 
 автор: Trololo   (03.04.2012 в 15:43)   письмо автору
 
   для: confirm   (03.04.2012 в 15:31)
 

>Вы поясните вот этот момент:
>НО когда перехожу по ссылке Подробно(т.е. посылаю новый $_GET-запрос)
>а проверяете в условии $_POST['seek']
>как это все связано?
может никак и не связано, имела ввиду, что значения получаемые из формы должны сохранятся на протяжении работы данного скрипта, а получается, что когда перехожу на другую ссылку(или вызываю другой скрипт) значения этого скрипта опять записываются по умолчанию
форма поиска
<form action="main.php?item=estate" method="post">
   <tr>
<td width="70">Тип: </td>
<td><select name="mr" size="1">
        <option value=""></option>
        <option value="Квартира">Квартира</option>
        <option value="Дом">Дом/Дача</option>
        <option value="Гараж">Гараж</option>
        <option value="Коммерческая">Коммерческая</option>
        <option value="Участок">Участок</option>
        </select>
        </td>
</tr>
<tr>
<td width="70">Операция: </td>
<td><select name="mo" size="1">
        <option value=""></option>
        <option value="Купить">Купить</option>
        <option value="Продать">Продать</option>
        <option value="Сдать">Сдать</option>
        <option value="Снять">Снять</option>
        </select>
        </td>
</tr>
<tr>
    <td>   <input type="submit" name="seek" value="Найти!"></td>
</tr>
</form>

  Ответить  
 
 автор: confirm   (03.04.2012 в 15:31)   письмо автору
 
   для: Trololo   (03.04.2012 в 15:24)
 

Вы поясните вот этот момент:
НО когда перехожу по ссылке Подробно(т.е. посылаю новый $_GET-запрос)
а проверяете в условии $_POST['seek']
как это все связано?

  Ответить  

Сообщения:  [1-10]   [11-11] 

Форум разработан IT-студией SoftTime
Rambler's Top100
вверх

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