пишем примитивный тырнет-магазин : помогите с сессиями в PHP
Re: пишем примитивный тырнет-магазин : помогите с сессиями в PHP
koresaram
Цитата:
benya я прочитал пример в котором сперва вводилось имя в форму и на следующем файле открывалась сессия с введенным именем
ну так и есть,
на странице zakaz.php
делаете sesion_start()
а далее читаете переменные, те что передали скрипту и записываете в ассоциативный массив $_SESSION
ну а после того как нажимаете "отправить заказ", уже на другой странице, например send.php делаете опять session_start() и читаете массив $_SESSION в тело письма
Цитата:
benya я прочитал пример в котором сперва вводилось имя в форму и на следующем файле открывалась сессия с введенным именем
ну так и есть,
на странице zakaz.php
делаете sesion_start()
а далее читаете переменные, те что передали скрипту и записываете в ассоциативный массив $_SESSION
ну а после того как нажимаете "отправить заказ", уже на другой странице, например send.php делаете опять session_start() и читаете массив $_SESSION в тело письма
-
koresaram
Re: пишем примитивный тырнет-магазин : помогите с сессиями в PHP
PrisonerE-mail чего-то я недопонимаю блин 100%. дело еще в том, что
Код:
оно у меня динамическое. и плюс к этому на одной странице две формы. я вам сейчас поподробнее опишу что у меня творится.
Код:
вот такая мощная зарисовка
имеем. БД MySQL и собственно сам этот "скрипт" пользователь задает ограничения на поиск вариантов после чего ему выдается сводная таблица в которой он соответственно начинает выбирать нужное. выборка, коннект к базе и вывод результата все работает.
собственно я поставил код как вы мне сказали но не работает. либо я не туда его поставил либо неправильно поставил вобщем что-то не так. а вот что именно?
Код:
Код: Выделить всё
= $_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 и собственно сам этот "скрипт" пользователь задает ограничения на поиск вариантов после чего ему выдается сводная таблица в которой он соответственно начинает выбирать нужное. выборка, коннект к базе и вывод результата все работает.
собственно я поставил код как вы мне сказали но не работает. либо я не туда его поставил либо неправильно поставил вобщем что-то не так. а вот что именно?

Re: пишем примитивный тырнет-магазин : помогите с сессиями в PHP
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 минут
))
Цитата:
$_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 минут
))
Re: пишем примитивный тырнет-магазин : помогите с сессиями в PHP
кстати говоря использования print рекомендую изменить на echo, не говоря уже про форматирование..
Re: пишем примитивный тырнет-магазин : помогите с сессиями в PHP
E-mail
это все один index.php.htm все в одном как шампунь
$myrow[0] - это что?
это по ламерски вывод значений ID объектов из БД. с ассоциативным массивом я не разобрался поэтому пришлось использовать определение по номеру столбца в базе 0-в этом столбце у меня ID объектов (стыдицца)
$HTTP_POST_VARS
по ламерски, согласен, но какгрится что осилил то и использовал
Север
кто так пишет? у вас должна быть создана таблица в бд, где есть два элемента:
1) id
2) direction
видит Бог, я именно так и хотел сделать
, но поскольку в БД я перегоняю данные из екселя скачанным в инете скриптом (в котором я тоже нифига не рублю) то я сперва попробовал написать в екселе макрос чтоб он ставил там числа по округам но там оказалось недостаточно условий и в итоге я решил что особого ущерба от этого не будет и временно на это дело забил (стыдицца) но в свою защиту могу сказать, что после окончательного понимания всего процесса собирался это дело пофиксить 
вобщем будем осмысливать и пробовать. а насчет 10 минут у меня еще такая проблема что по отдельности я как бы все понимаю а вот в одно целое это все собрать не могу хз почему
так что далеко не отходите вопросов будет еще множество
это все один index.php.htm все в одном как шампунь

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

Север
кто так пишет? у вас должна быть создана таблица в бд, где есть два элемента:
1) id
2) direction
видит Бог, я именно так и хотел сделать
, но поскольку в БД я перегоняю данные из екселя скачанным в инете скриптом (в котором я тоже нифига не рублю) то я сперва попробовал написать в екселе макрос чтоб он ставил там числа по округам но там оказалось недостаточно условий и в итоге я решил что особого ущерба от этого не будет и временно на это дело забил (стыдицца) но в свою защиту могу сказать, что после окончательного понимания всего процесса собирался это дело пофиксить 
вобщем будем осмысливать и пробовать. а насчет 10 минут у меня еще такая проблема что по отдельности я как бы все понимаю а вот в одно целое это все собрать не могу хз почему

так что далеко не отходите вопросов будет еще множество

Re: пишем примитивный тырнет-магазин : помогите с сессиями в PHP
Цитата:
$myrow[0] - это что?
это по ламерски вывод значений ID объектов из БД
угу это я своими телепатическими возможностями догодался, но вопервых почему ты его используешь ДО того как обратился с запросом к базе??
в третьих (я не сбился со счету) почему объявление сессий ПОСЛЕ любого вывода?
$myrow[0] - это что?
это по ламерски вывод значений ID объектов из БД
угу это я своими телепатическими возможностями догодался, но вопервых почему ты его используешь ДО того как обратился с запросом к базе??
в третьих (я не сбился со счету) почему объявление сессий ПОСЛЕ любого вывода?
-
Demiurg
Re: пишем примитивный тырнет-магазин : помогите с сессиями в PHP
...заранее сорри, что не совсем в тему... 
...написал скрипт (тоже что-то вроде корзины)... данные, выбранные из базы, передавал через форму с параметром hidden... пришло время, когда передаваемых данных стало "ну просто завались"... вычитал про сессии, понравилось... но!... стоит добавить строчку "session_start();" в скрипт, как он "превращается" в нерабочий (выдает пустую страницу)... маюсь уже второй день...
P.S. (FreeBSD 6.1-p2, Apache 2.0.58, PHP 5.1.4, PostgreSQL 8.0.8)

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

P.S. (FreeBSD 6.1-p2, Apache 2.0.58, PHP 5.1.4, PostgreSQL 8.0.8)
-
Prisoner
Re: пишем примитивный тырнет-магазин : помогите с сессиями в PHP
Попробуйте поглядеть логи ошибок php. Также попробуйте установить error_reporting(E_ALL); в самом начале скрипта, может чего покажет. Также убедитесь, что до выражения session_start() не делалось никакого вывода в броузер. Почему это необходимо соблюдать читайте
здесь
.-
Demiurg
Re: пишем примитивный тырнет-магазин : помогите с сессиями в PHP
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. ...кругом говорят "отключайте куки, они не безопасны"... в то же время читая литературу, пишут что куки - это самое надежное из стандартных решений для сохранения состояния... .... истина где-то рядом...
В логах пишет - 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
1) Опасность кук - фикция. Что-то из области "обжегшись на молоке на воду дуют". Ну не нравится кому-то, что кто-то (сайты) пишут через кого-то (броузеры) что-то (код кук) на винты их машин. Кому как. То, что это отголосок старых времен - волна недовольства после введения данной технологии, никому почему в голову не приходит. В общем юзайте их, юзайте, но... проверяйте, а вдруг вам повезло и к вам зашел наглухо запечатанный параноик с отрубленными куками, горячей водой, отоплением и светом %).
2) Неопределенная функция session_start() вероятнее всего вызвана компиляцией модуля с опцией --disable-session или --disabled-all. Если не вы администратор хостинга, то обратитесь к его администратору с просьбой пересобрать пакет с поддержкой сессий, это его обязанность. Если же вы, то придется поглядеть в сторону мануалов по сборке моделя php из исходных кодов.
2) Неопределенная функция session_start() вероятнее всего вызвана компиляцией модуля с опцией --disable-session или --disabled-all. Если не вы администратор хостинга, то обратитесь к его администратору с просьбой пересобрать пакет с поддержкой сессий, это его обязанность. Если же вы, то придется поглядеть в сторону мануалов по сборке моделя php из исходных кодов.