|
| |
|
|
| |
для: Diman
(14.08.2006 в 09:24)
| | | Ну что, мне кто-нибудь поможет или нет? | |
| |
|
|
| |
|
|
| |
для: Diman
(12.08.2006 в 10:42)
| | | Из ваших предложений я все таки выбрал свой первоначальный вариант. У меня каждая продукция показывается на форме отдельно. Да и в своем я лучше разберусь.
Но у меня возникает проблема с корзиной, а вернее в запись в массив данных о продукции. Когда я выбираю какую-либо продукцию, она заносится в массив сессий, но если я выбираю другую продукцию, то она автоматически заменит старую или наверное опустошает ту сессию в которой были данные. Почему так происходит? Ничего не могу понять. Еще раз прилаю свои скрипты, вместе с формой вывода самой продукции. Может так будет ясней.
В файле description.php есть такие строки, именно в них и происходит занесение данных о выборе клиента в массив сессий. Именно здесь и надо чего то изменить. Наверное как-то проверить, что если есть такое значение в этом массиве, то ничего не надо делать, а если есть то заносить данные. Я пытался так делать, но ничего не выходит. Ругается что несовпадение типа (использовал функцию in_array($mas, $value). Очень Вас прошу, помогите пожалуйста. Это осталась последняя вещь, и можно заниматься уже дизайном.
while($prod = mysql_fetch_array($res))
{
if ($prod['kod']==$_POST['kod'])
{
$_SESSION['korzina'][$prod['id_product']]=
$prod['kod']."/".$prod['name']."/".$prod['price'];
echo
"<table><tr>
<td>Ваш заказ ".$prod['name']." отправлен в корзину</td>
</tr></table>";
}
} // End while
|
| |
| |
|
|
| |
|
|
| |
для: куч1963
(12.08.2006 в 10:30)
| | | Вы совершенно правы. Совсем не подумал про то что надо было еще проверить на наличие нулевого результата своего запроса. А где вы написали что не поняли мою строку, то честно говоря я сам толком не знаю как правильно записать зарегестрированный массив сессий. Подскажите как. А может быть вообще это лишнее? | |
| |
|
|
| |
|
|
| |
для: Diman
(12.08.2006 в 09:53)
| | | Вот это условие, выводит если в базе есть продукт с твоим номером.
if(mysql_num_rows($res)>0)
{
}
если это условие не выполняется то идет
echo
"<table><tr>
<td>Ваш заказ отправлен в корзину</td>
</tr></table>";
Так , что в твоем исполнении при любом условии будет вывод - Ваш заказ отправлен в корзину.
Правильнее было бы наверное так
<?php
$_SESSION['korzina'] = array();
$query="SELECT * FROM production Where kod=".$_POST['kod'];
$res=mysql_query($query);
if ($res)
{
if(mysql_num_rows($res) == 0)
{
echo "нет продукта";
}
else
{
while($prod = mysql_fetch_array($res))
{
if ($prod['kod']==$_POST['kod'])
{
$_SESSION['korzina'][$prod['id_product']]=
$prod['kod']."/".$prod['name']."/".$prod['price'];
session_register('korzina['.$prod['id_product'].']'); //не пойму эту строку?
echo
"<table><tr>
<td>Ваш заказ ".$prod['name']." отправлен в корзину</td>
</tr></table>";
}
} // End while
}
} // End $res
?>
|
Возьми попробуй так
Файл обработчик формы car.php
<?php
session_start();
$referer=getenv("HTTP_REFERER");
if (! isset($_SESSION['cadd_ses']) && isset($_POST['addme']))
{
$cadd_ses=array();
while ( $elements=each($_POST['cadd']) )
{
$cadd_ses[$elements["value"]]=1;
}
$_SESSION['cadd_ses']=$cadd_ses;
}
else if (isset($cadd[0]) )
{
while ( $elements=each($_POST['cadd']) )
{
if (isset($_SESSION['cadd_ses'][$elements["value"]])) //удаление
unset($_SESSION['cadd_ses'][$elements["value"]]);
else
$_SESSION['cadd_ses'][$elements["value"]]=1;
}
}
print "<HTML><HEAD>\n";
print "<META HTTP-EQUIV='Refresh' CONTENT='0; URL=$referer'>\n";
print "</HEAD></HTML>\n";
exit();
?>
//++++++++++++++++++++++++++++++++++++++++++++++
И форма к нему
if(isset($pid)) {
$qp = mysql_query
("SELECT * FROM links where p_id='$pid' ");
for($i=0;$i<$qprow = mysql_fetch_row($qp);$i++)
<form method="post" name="addprocuct" action="car.php"><input type="hidden" name="addme" value="addtocart">
<INPUT type="hidden" name="cadd[]" VALUE="<?= $pid;?>">
if (isset($_SESSION['cadd_ses'][$qprow[0]]))
{Продукт в корзине}
else
{Добавить в корзину}
</form>
так вывожу в корзине
$j=0;
while ($element=each($_SESSION['cadd_ses']))
{
$id=$element["key"];
$result= mysql_query("select * from links where p_id='$id'") OR DIE(" не получилось!!! ");
$row=mysql_fetch_object($result);
$row->name;
}
|
| |
| |
|
|
| |
|
|
| |
для: Trianon
(11.08.2006 в 21:06)
| | | C этим понятно, но тогда почему query воспринимает любой код, даже если такого в БД нет? Он при любом значении кода выдает что все нормально. Такого же просто быть не может.
А как быть со второым и с третьим вопросами? Почему у меня выдает список только последнего выбранного товара? Ведь это же массив сессий. | |
| |
|
|
| |
|
|
| |
для: diman
(11.08.2006 в 20:31)
| | | Перед echo имеет смысл else поставить. Нет? | |
| |
|
|
| |
|
|
| |
для: Alex Kraft
(07.08.2006 в 16:26)
| | | Есть БД. В ней содержится такое поле 'kod' целого типа, которое отвечает за код продукции. Код продукции везде разный.
Далее существует форма в которой отображается сама продукция. Заказчик должен
ввести в поле формы код выбранной продукции. И в зависимости от того как он ввел, должны появляться соответственно следующие сообщения: "Код не введен", "Код не верный", "Спасибо за покупку. Ваш заказ отправлен в корзину". Вроде бы это сделать очень просто. С этим у меня проблем никогда не было, но здесь твориться какая-то чертовщина. Не зависимо какой код я введу (в том случае и неправильный) у меня отображается надпись последнего содержания, т. е. заказ отправлен в корзину. Почему так происходит?
Теперь второй промах. Когда я захожу по ссылочке в "мою корзину" (используются сессии", то все время отображается только последняя выбранная продукция. Там я еще красоту не наводил, сдела просто чтобы пока был виден сам результат, т. е. должны отображаться выбранные заказы. Почему так происходит?
Прилагаю свои скрипты.
P.S. Да, и еще. В ozon.ru когда нам понравилась какая-то вещь, то мы нажимает на ссылку "добавить в корзину" и появляется в этом же окне другое маленькое окошко, но оно как бы является одним целым с предыдущим. Как это делается? | |
| |
|
|
| |
|
|
| |
для: Diman
(07.08.2006 в 14:59)
| | | Все просто:
В корзину передается id товара - $id
$_SESSION['korzina'] = array();
Сам товар, т.е. его id, передается так:
$_SESSION['korzina'][$id]
Можно также передать количество товара - переменную quantity... и общую сумму - переменную summ... как их вычеслить - труда не составит... надо просто подсчитать кол-во элементов массива $_SESSION['korzina']... и по id товара узнать его стоимость и сложить ее.
Чтобы и незарегистрированный пользователь смог помещать товар в корзину, проверяйте его сессию при расчете, а не когда он выбирает товар... Допустим, я вошел в магазин, выбрал себе несколько наименований товара. Когда я хочу оплатить товар, то я попадаю в кассу, т.е. на страницу, где проверяется моя сессия пользователя. Если моя сессия пользователя существует, т.е. я залогинился, то я вижу определееную страницу страницу... то, что обычно видет посетитель: тип оплаты, сумму и т.д. Если моя сессия пользователя не существует, то я вижу приглашение пройти авторизацию. Но сессия моей корзины не пропала... когда я зарегистрировался и зайду в раздел Моя Корзина, то я там увижу выбранный мной товар. | |
| |
|
|
| |
|
|
| |
для: Diman
(07.08.2006 в 14:59)
| | | хм.. алгаритм не сложный: просто при каждой покупке(нажатии Отправить в корзину) добавляеться элемент в массив, массив в свою очередь лежит в сессии.. А потом(перед оформление заказа) просто выводиш значения массива =) Вроде всё просто =) | |
| |
|
|
| |
|
|
| |
для: Alex Kraft
(07.08.2006 в 14:45)
| | | Каким образом?
Никакак не могу даже алгоритм себе представить. Допустим пользователь, который незраегестрированный, хочет закозать какую-то продукцию. Он ее заказывает. Нажимает для этого ссылочку "Отправить в корзину". Что будет происходить дальше, я не знаю. Пока сдела как описовал раньше. Но для этого ему нужно обязательно зарегистрироваться. А мне хочется обратное, чтобы любой мог отправить свой заказ в корзинку.
Ну а зарегистрированный пользователь у меня никуда не пропадет. Он занесен в базу. | |
| |
|
|
|