[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Сессия или не сессия?
Pingvinenok_Lolo
Привет форумчанам!!!
Есть форма поиска с двумя параметрами. Мне надо чтобы по умолчанию(когда пользователь заходит на сайт) из БД выбирались какие-то значения, все оно хорошо, НО когда перехожу по ссылке Подробно(т.е. посылаю новый $_GET-запрос), пер-е $mr и $mо возвращаются значениям по умолчанию, а мне надо, чтобы сохранялись значения полученные из формы. Как сохранять эти значения? Хотела сделать с помощью сессии, но в пер-е ничего не заноситься. Подскажите пожалуйста в чем проблема и как это лучше сделать?
<?php
$title = array("Дата","Район", "Кол-во комнат", "Площадь", "Цена", "Контакты", "Фото");

$little_image = "./photo/little/";
$full_image = "./photo/full/";

if (!isset($mr) && !isset($mo))
{
$mr = "Квартира";
$mo = "Купить";
}

if (isset ($_POST['seek']))
{
$mr = clearData($_POST['mr']);
$mo =clearData($_POST['mo']);
}

if (!empty($_GET['details'])) // переход по ссылке Подробной информации
{
$id = (int)($_GET['details']);
echo $id;
$sql_d = "SELECT `date_dec`, `operation`, `estate_type`, `rooms`, `floor`,`square_all`, `square_live`,
`square_k`, `wall`, `street`, `area_of_kerch`, `house`, `year`, `price`, `price_currency`,
`price_comment`, `photo`, `publication`, `zem_uch`, `target`, `name_object`, `comment`,
`contacts` FROM `table_main` WHERE `id`='"
.$id."'";
$data_d = mysql_query ($sql_d) or die (my_err_sql ());
$item_d = mysql_fetch_array ($data_d);
$sql_photo = "SELECT `photo_name` FROM `photo` WHERE `id`='".$id."'";
$photo = mysql_query($sql_photo) or die (my_err_sql());

require_once "./templates/detail.php"; // форма вывода подробного объявления
}

echo $mr." -> ".$mo;
echo "<table border=\"1\">";
echo "<tr>";
foreach ($title as $value)
{
echo "<td align=\"center\"> ".$value." </td>";
}
echo "</tr>";

$sql = "SELECT `id`, `date_dec`, `operation`, `estate_type`, `rooms`, `floor`,`square_all`, `square_live`,
`square_k`, `wall`, `street`, `area_of_kerch`, `house`, `year`, `price`, `price_currency`,
`price_comment`, `photo`, `publication`, `zem_uch`, `target`, `name_object`, `comment`,
`contacts` FROM `table_main` WHERE `operation`='"
.$mo."' AND `estate_type`='".$mr."'";
$data = mysql_query($sql) or die (my_err_sql());

while ($item = mysql_fetch_array ($data)) // вывoд всех объявлений
{
$id = (int) ($item['id']);
$sql_photo = "SELECT `photo_name` FROM `photo` WHERE `id`='".$id."'";
$photo = mysql_query($sql_photo) or die (my_err_sql());
$p = mysql_fetch_array ($photo);
echo "<tr>
<td>"
.$item["date_dec"]."</td>
<td>"
.$item["area_of_kerch"]."</td>";
if (($mr == "Квартира") || ($mr == "Дом"))
{
echo "<td>".$item["rooms"]."</td>";
}
else echo "<td> - </td>";
echo "<td>".$item["square_all"]."</td>
<td>"
.$item["price"]." ".$item["price_currency"]."</td>
<td>"
.$item["contacts"]."</td>";
echo '<td><img src="'.$little_image.$p['photo_name'].'" alt="" /></td>';
echo '<td><a href="main.php?item=estate&details='.$id.'">Подробней</a></td>';
echo "</tr>";
}
echo "</table>";
?>

Чего-то с сессиями пыталась начудить
session_start();
if (isset ($_POST['seek']))
{

$mr = $_SESSION['mr'];
$mo = $_SESSION['mo'];
}




Спустя 1 день, 1 час, 52 минуты, 13 секунд (2.04.2012 - 21:24) Pingvinenok_Lolo написал(а):
Люди добрые! Подскажите пожалуйста! Как составить условие, чтобы по умолчанию выводилась одна инфа, а при выборе из формы другая информация, и эта инфа должна сохранятся, пока пользователь не выберет другие параметры поиска?!
Сделала так, все равно выводится то, что после else
session_start();
if (isset ($_POST['seek']))
{
$_SESSION['object'] = clearData($_POST['mr']);
$_SESSION['operation'] = clearData($_POST['mo']);
}
else
{
$_SESSION['object'] = "Квартира";
$_SESSION['operation'] = "Купить";
}

Спустя 15 минут, 25 секунд (2.04.2012 - 21:40) Игорь_Vasinsky написал(а):
а кнопа в форме с name="seek" ?

вообще можешь оставить

if(isset($_POST))

Спустя 13 минут, 15 секунд (2.04.2012 - 21:53) Pingvinenok_Lolo написал(а):
Цитата (Игорь_Vasinsky @ 2.04.2012 - 18:40)
а кнопа в форме с name="seek" ?
вообще можешь оставить
if(isset($_POST))


да, имя кнопки "seek", если я оставлю просто if(isset($_POST)), переменные mo и mr - не идентифицированны будут
вот форма (код, обрабатывающий форму в первом посте)
<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>

Спустя 3 минуты, 27 секунд (2.04.2012 - 21:56) Игорь_Vasinsky написал(а):
про тернарную операцию не слышали?

$var = isset($_POST['key']) ? $_POST['key'] : 'myvar';

Спустя 23 минуты (2.04.2012 - 22:19) Pingvinenok_Lolo написал(а):
Цитата (Игорь_Vasinsky @ 2.04.2012 - 18:56)
про тернарную операцию не слышали?
$var = isset($_POST['key']) ? $_POST['key'] : 'myvar';

Тернарная операция это сокращенное if...else, действует так же, если условие истинно выполняется первое условие, если ложно выполняется второе условие. И как ее применить к моей задаче?

Спустя 5 часов, 54 минуты, 48 секунд (3.04.2012 - 04:14) Игорь_Vasinsky написал(а):
вот так и применить laugh.gif

т.е. если есть POST - то переменная примет значение POST, если его нет - то установленное тобой.

Спустя 7 часов, 10 минут, 19 секунд (3.04.2012 - 11:24) Pingvinenok_Lolo написал(а):
Цитата (Игорь_Vasinsky @ 3.04.2012 - 01:14)
вот так и применить :lol:
т.е. если есть POST - то переменная примет значение POST, если его нет - то установленное тобой.

И в чем смысл? Это тоже самое, что я делаю с помощью if...else. проблема в том, что всегда выполняется только else, условие if пропускается. Я спрашиваю как правильно составить условие, а не какими какими операторами пользоваться

session_start();
$v1 = isset($_SESSION['operation']) ? $_SESSION['operation'] : 'Купить';
$v2 = isset($_SESSION['object']) ? $_SESSION['object'] : 'Квартира';


session_start();
if (isset ($_POST['seek']))
{
$_SESSION['object'] = clearData($_POST['mr']);
$_SESSION['operation'] = clearData($_POST['mo']);
}
else
{
$_SESSION['object'] = "Квартира";
$_SESSION['operation'] = "Купить";
}


Спустя 5 минут, 30 секунд (3.04.2012 - 11:30) Pingvinenok_Lolo написал(а):
Ребята!!! Помогите пожалуйста правильно записать это условие!!! Уже четвертый день над этим скриптом бьюсь, ничего хорошего не приходит! :'(

Спустя 20 минут, 15 секунд (3.04.2012 - 11:50) Игорь_Vasinsky написал(а):
Цитата
ер-е $mr и $mо возвращаются значениям по умолчанию, а мне надо, чтобы сохранялись значения полученные из формы. Как сохранять эти значения?


аААА... так бы и одним предложением можно было озвучить вопрос: как сохранить состояние select для формы - так?

Спустя 25 минут, 29 секунд (3.04.2012 - 12:16) Pingvinenok_Lolo написал(а):
Цитата (Игорь_Vasinsky @ 3.04.2012 - 08:50)
Цитата
ер-е $mr и $mо возвращаются значениям по умолчанию, а мне надо, чтобы сохранялись значения полученные из формы. Как сохранять эти значения?

аААА... так бы и одним предложением можно было озвучить вопрос: как сохранить состояние select для формы - так?

Почти так. Надо, чтобы эти данные, полученные из <select> сохранялись в скрипте на протяжении всего его выполнения или пока не будут выбраны другие значения <select>
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.