пишем примитивный тырнет-магазин : помогите с сессиями в PHP

Ответить
 • Просмотры: 1
Аватара пользователя
E-mail

Re: пишем примитивный тырнет-магазин : помогите с сессиями в PHP

Сообщение E-mail »

koresaram
Цитата:



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



ну так и есть,

на странице zakaz.php



делаете sesion_start()

а далее читаете переменные, те что передали скрипту и записываете в ассоциативный массив $_SESSION

ну а после того как нажимаете "отправить заказ", уже на другой странице, например send.php делаете опять session_start() и читаете массив $_SESSION в тело письма
Аватара пользователя
koresaram

Re: пишем примитивный тырнет-магазин : помогите с сессиями в PHP

Сообщение koresaram »

PrisonerE-mail чего-то я недопонимаю блин 100%. дело еще в том, что



Код:

Код: Выделить всё

= $_REQUEST['ID'];

оно у меня динамическое. и плюс к этому на одной странице две формы. я вам сейчас поподробнее опишу что у меня творится.



Код:

Код: Выделить всё

<html>
<head>
  <title>Примитивный тырнет магазин</title>
</head>
<body>
<input type="hidden" name="action" value="post">
<form name='realtyform' action='realty.php' method=post>
<table border="1" cellpadding="0" cellspacing="0" style="border-collapse: collapse" bordercolor="#111111" width="100%" id="AutoNumber1">
  <tr>
    <td width="20%">
    <select size=9 name=direction[] multiple>
<option value=Север>Север</option>
<option value=Северо-Восток>Северо-Восток</option>
<option value=Восток>Восток</option>
<option value=Юго-Восток>Юго-Восток</option>
<option value=Юг>Юг</option>
<option value=Юго-Запад>Юго-Запад</option>
<option value=Запад>Запад</option>
<option value=Северо-Запад>Северо-Запад</option>
<option value=Центр>Центр</option>
</select>
     </td>
    <td width="50%">
    <select name=dogovor>
    <option value="аренда">Аренда</option>
    <option value="продажа">Продажа</option>
    <option value="" type="hidden" selected> </option>
    </select> <br>
    Площадь: от <input type=text name=minsquare value=""> до <input type=text name="maxsquare"  value=""><br>
    Цена: от <input type=text name="minprice" value=""> до <input type=text name="maxprice" value="">
    </td>
  </tr>
  <tr>
    <td width="100%" colspan="2"><INPUT TYPE=Submit VALUE=Искать style=font-size: 8pt> <input type=reset value=Сброс style=font-size: 8pt></td>
  </tr>
</table>
</form>
<?php
session_start();
$_SESSION['tovarIDs'] = $_REQUEST['$myrow[0]'];
echo 'В вашей корзине' . $_SESSION['tovarIDs'] . "<br>";
// Данные для MySQL сервера
$DBHost = "xxx"; // Хост
$DBUser = "xxx"; // Имя пользователя
$DBPassword = "xxx"; // Пароль
$DB="xxx"; //
// Подключаемся к MySQL серверу
$Link = mysql_connect($DBHost, $DBUser, $DBPassword);
  if(!$Link) die ("Невозможно подключиться к MySQL" .mysql_error());
// Выбираем нашу базу данных
mysql_select_db($DB, $Link)or die ("дошло до строки с выбором базы!" .mysql_error());
$direction_values=$HTTP_POST_VARS['direction'];
$dogovor_values=$HTTP_POST_VARS['dogovor'];
$minsquare_values=$HTTP_POST_VARS['minsquare'];
$maxsquare_values=$HTTP_POST_VARS['maxsquare'];
$minprice_values=$HTTP_POST_VARS['minprice'];
$maxprice_values=$HTTP_POST_VARS['maxprice'];
for ($i = 0; $i <= 9; $i++) {
print "$direction_values[$i] ";
};
if ($minsquare_values=="" and $maxsquare_values=="") {$square_query="WHERE field7 >= 0";}
elseif ($minsquare_values=="" and $maxsquare_values!="") {$square_query="WHERE field8 >= $maxsquare_values";
	}
elseif ($minsquare_values!="" and $maxsquare_values=="") {$square_query="WHERE field7 >= $minsquare_values";
	}
else {
$square_query="WHERE NOT(field8 < $minsquare_values or field7 > $maxsquare_values)";
}
if ($minprice_values=="") {$minprice_query="";}
else {
$minprice_query="AND field5 >= $minprice_values";
}
if ($maxprice_values=="") {$maxprice_query="";}
else {
$maxprice_query="AND field5 <= $maxprice_values";
}
if ($dogovor_values=="") {$dogovor_query="";}
else {
$dogovor_query="AND field4 = '$dogovor_values'";
}
if ($direction_values=="") {$direction_query="";}
else {
$direction_query="AND (field1='$direction_values[0]' or field1='$direction_values[1]' or field1='$direction_values[2]' or field1='$direction_values[3]' or field1='$direction_values[4]' or field1='$direction_values[5]' or field1='$direction_values[6]' or field1='$direction_values[7]' or field1='$direction_values[8]' or field1='$direction_values[9]')";
}
print "$dogovor_values $minsquare_values $maxsquare_values $minprice_values $maxprice_values";
print "<table width='100%' border=1><tr><td>Лот</td><td>Направление</td><td>Договор</td><td>Мин./Макс. цена</td><td>Мин./Макс. площадь</td><td> </td></tr>";
$result = mysql_query("SELECT * FROM realty $square_query $minprice_query $maxprice_query $dogovor_query $direction_query" ) or die ("Попробуйте повторить запрос через некоторое время" .mysql_error());
while ($myrow = mysql_fetch_row ($result))
{
$myrow[0]=rtrim($myrow[0]);
print "<tr><td>$myrow[0]</td><td>$myrow[1]</td><td>$myrow[4]</td><td>$myrow[5]/$myrow[6]</td><td>$myrow[7]/$myrow[8]</td><td><FORM style=\"MARGIN: 0px\" action=realty.php method=post><INPUT type=image alt=\"В корзину\" src=arrow.gif  name=\"$myrow[0]\" value=\"$myrow[0]\"></FORM></td></tr>";
}
print "</table>";
?>
</body>
</html>

вот такая мощная зарисовка Изображение

имеем. БД MySQL и собственно сам этот "скрипт" пользователь задает ограничения на поиск вариантов после чего ему выдается сводная таблица в которой он соответственно начинает выбирать нужное. выборка, коннект к базе и вывод результата все работает.

собственно я поставил код как вы мне сказали но не работает. либо я не туда его поставил либо неправильно поставил вобщем что-то не так. а вот что именно? Изображение
Аватара пользователя
E-mail

Re: пишем примитивный тырнет-магазин : помогите с сессиями в PHP

Сообщение E-mail »

koresaram




Цитата:



$_SESSION['tovarIDs'] = $_REQUEST['$myrow[0]'];



$myrow[0] - это что?



вы что сюда выложили подряд код из всех скриптов или это все один index.php.htm ?



вообще совет - использовать один срипт для всех шагов, заодно не придется показывать в html в теге form имя исполняемого скрипта (опятьже метод безопасности)



далее,

$HTTP_POST_VARS такие массивы уже устарели и их уже никто не использует, а если использует то это смотрится крайне "ламерски" бебеИзображение используйте массив $_POST или $_GET в зависимости от метода передачи (у вас post), иначе при переходе на следующую ожидаемую версию php ваш скрипт не будет работать, так как эти массивы более не будут поддерживаться и работать.



далее,



Север

кто так пишет? у вас должна быть создана таблица в бд, где есть два элемента:

1) id

2) direction



где id - уникальный ключ таблицы

а значение элемента direction является одним из округов



ну и соответственно форма должна выводить результат этой таблицы но в value (то что передается) надо писать id



будет выглядеть вот так например:

Север

Юг

и т.д.



-----



после отправки этой формы пишите в следующем скрипте в самом начале:

session_start();

$_SESSION['direction_id'] = $_POST['direction'];



если вы не знаете что такое $_REQUEST и как правильно записывать.



далее после нажатия на "отправить письмо" в следующем скрипте пишите

session_start();

и работайте с массивом $_SESSION['direction_id']

ВСЕ!



управился за 5 минутИзображение

а не за
Цитата:



кто видит, что тут делов на 10 минут



))
Аватара пользователя
E-mail

Re: пишем примитивный тырнет-магазин : помогите с сессиями в PHP

Сообщение E-mail »

кстати говоря использования print рекомендую изменить на echo, не говоря уже про форматирование..
Аватара пользователя
E-mail

Re: пишем примитивный тырнет-магазин : помогите с сессиями в PHP

Сообщение E-mail »

E-mail

это все один index.php.htm все в одном как шампунь Изображение



$myrow[0] - это что?

это по ламерски вывод значений ID объектов из БД. с ассоциативным массивом я не разобрался поэтому пришлось использовать определение по номеру столбца в базе 0-в этом столбце у меня ID объектов (стыдицца)



$HTTP_POST_VARS

по ламерски, согласен, но какгрится что осилил то и использовал Изображение



Север

кто так пишет? у вас должна быть создана таблица в бд, где есть два элемента:

1) id

2) direction


видит Бог, я именно так и хотел сделать Изображение, но поскольку в БД я перегоняю данные из екселя скачанным в инете скриптом (в котором я тоже нифига не рублю) то я сперва попробовал написать в екселе макрос чтоб он ставил там числа по округам но там оказалось недостаточно условий и в итоге я решил что особого ущерба от этого не будет и временно на это дело забил (стыдицца) но в свою защиту могу сказать, что после окончательного понимания всего процесса собирался это дело пофиксить Изображение



вобщем будем осмысливать и пробовать. а насчет 10 минут у меня еще такая проблема что по отдельности я как бы все понимаю а вот в одно целое это все собрать не могу хз почему Изображение

так что далеко не отходите вопросов будет еще множество Изображение
Аватара пользователя
E-mail

Re: пишем примитивный тырнет-магазин : помогите с сессиями в PHP

Сообщение E-mail »

Цитата:



$myrow[0] - это что?

это по ламерски вывод значений ID объектов из БД



угу это я своими телепатическими возможностями догодался, но вопервых почему ты его используешь ДО того как обратился с запросом к базе??

в третьих (я не сбился со счету) почему объявление сессий ПОСЛЕ любого вывода?
Аватара пользователя
Demiurg

Re: пишем примитивный тырнет-магазин : помогите с сессиями в PHP

Сообщение Demiurg »

...заранее сорри, что не совсем в тему... Изображение

...написал скрипт (тоже что-то вроде корзины)... данные, выбранные из базы, передавал через форму с параметром hidden... пришло время, когда передаваемых данных стало "ну просто завались"... вычитал про сессии, понравилось... но!... стоит добавить строчку "session_start();" в скрипт, как он "превращается" в нерабочий (выдает пустую страницу)... маюсь уже второй день... Изображение

P.S. (FreeBSD 6.1-p2, Apache 2.0.58, PHP 5.1.4, PostgreSQL 8.0.8)
Аватара пользователя
Prisoner

Re: пишем примитивный тырнет-магазин : помогите с сессиями в PHP

Сообщение Prisoner »

Попробуйте поглядеть логи ошибок php. Также попробуйте установить error_reporting(E_ALL); в самом начале скрипта, может чего покажет. Также убедитесь, что до выражения session_start() не делалось никакого вывода в броузер. Почему это необходимо соблюдать читайте
здесь
.
Аватара пользователя
Demiurg

Re: пишем примитивный тырнет-магазин : помогите с сессиями в PHP

Сообщение Demiurg »

Prisoner

В логах пишет - PHP Fatal error: Call to undefined function session_start()... заглянул в /usr/local/etc/php.ini, есть вот такие строчки:

session.use_cookies = 1

;session.use_only_cookies = 1

в браузере куки отключены, хоть и поменял потом на 0, результат тот же...



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

Re: пишем примитивный тырнет-магазин : помогите с сессиями в PHP

Сообщение Prisoner »

1) Опасность кук - фикция. Что-то из области "обжегшись на молоке на воду дуют". Ну не нравится кому-то, что кто-то (сайты) пишут через кого-то (броузеры) что-то (код кук) на винты их машин. Кому как. То, что это отголосок старых времен - волна недовольства после введения данной технологии, никому почему в голову не приходит. В общем юзайте их, юзайте, но... проверяйте, а вдруг вам повезло и к вам зашел наглухо запечатанный параноик с отрубленными куками, горячей водой, отоплением и светом %).

2) Неопределенная функция session_start() вероятнее всего вызвана компиляцией модуля с опцией --disable-session или --disabled-all. Если не вы администратор хостинга, то обратитесь к его администратору с просьбой пересобрать пакет с поддержкой сессий, это его обязанность. Если же вы, то придется поглядеть в сторону мануалов по сборке моделя php из исходных кодов.
Ответить

Вернуться в «Вебмастеру»