Покупательская корзина
Доброго времени суток! Решил в целях эксперимента попробовать написать интернет магазин на PHP, MySQL, JavaScript. Есть несколько страниц на которых представлен товар...
В виде блоков: ![]() Где все данные (наименование товара, фото товара, цена) динамически извлекаются из базы данных... в цикле do....while, в том числе и информация по кнопкам "Заказать" и "Описание" (см. ниже) <tr class='zenabox' align='center'> <td> <div id='sub4'> <a href='#' title='Заказать'> заказать </a> </div> </td> <td> <div id='sub5'> <a href='view_p.php?id=%s' title='Подробнее'> Подробнее </a> </div> </td> </tr> На каждой странице вверху с помощью функции includeподключается блок с корзинкой заказов: ![]() Как сделать, чтобы при нажатии на кнопку - Заказать, без перезагрузки страницы, в корзине заказов картинка Фото_1 заменялась на картинку Фото_2 и добавлялась цена и количество товаров. |
Цитата:
|
Здесь выводятся товары (см. рисунок 1)
<!--соединение с базой для вывода элементов по рубрике товара-->
<?php
/*делаем выборку из базы данных с сортировкой по дате и ограничиваем число записей шестью заметками*/
$result = mysql_query("SELECT id,cena,categorynalichie,mini_image,big_image,title FROM rubi ORDER BY data DESC LIMIT 6",$databasic);
/*проверка №1 - проверяем на правильность вывод данных в переменную $result/
if (!$result)
{
echo "<p>Обращение к базе данных не состоялось. Оповестите об этом администратора по email:
test@ya.ru <br />
<strong>Код ошибки:</strong></p>";
exit(mysql_error());
}
/*проверка №2 - проверяем были ли данные вынесены из базы данных, т.е. существует хотя бы одно значение в $rresult*/
if (mysql_num_rows($result) > 0)
{
/*вытаскиваем результаты запроса в переменную массив*/
$myarrayres = mysql_fetch_array($result);
/*открываем цикл для извлечения данных из таблицы базы данных*/
do
{
/*Маленькая проверка товара на наличие*/
if($myarrayres["categorynalichie"] == 2)
{
$nalichie = "<br /><span id='tovar'>*Товар ожидается*</span>";
}
if($myarrayres["categorynalichie"] == 1)
{
$nalichie = "<br />";
}
printf (
"<table border='0' cellspacing='0' cellpadding='0' class='blockstylecentertwo' valign='top'>
<tr>
<td class='blockstyle1'><img src='image/topleftcentertwo.gif' width='10' height='10' /></td>
<td class='blockstyle2'><img src='image/toprightcentertwo.gif' width='10' height='10' /></td>
</tr>
<tr>
<td colspan='2' class='centerminiblock'><span id='name_tovar'>%s</span></td>
</tr>
<tr>
<td colspan='2' class='centerminiblockline'></td>
</tr>
<tr>
<td colspan='2' class='centerminiimage'>
<a href='%s' class='fancy' title='%s'><img src='%s' class='newtovarimage'/></a>
</td>
</tr>
<tr>
<td colspan='2' class='zenabox'><span class='zena_tovara'>Цена %s рублей</span>$nalichie</td>
</tr>
<tr class='zenabox' align='center'>
<td>
<div id='sub4'>
<a href='#' title='Заказать'>
Заказать
</a>
</div>
</td>
<td>
<div id='sub5'>
<a href='view_p.php?id=%s' title='Подробнее'>
Подробнее
</a>
</div>
</td>
</tr>
<tr valign='bottom' class='zenabox'>
<td height='10' class='blockstyle1'><img src='image/bottomleftcentertwo.gif' width='10' height='10' /></td>
<td class='blockstyle2'><img src='image/bottomrightcentertwo.gif' width='10' height='10'/></td>
</tr>
</table>", $myarrayres["title"],$myarrayres["big_image"],
$myarrayres["title"],$myarrayres["mini_image"], $myarrayres["cena"],$myarrayres["id"]);
}
while ($myarrayres = mysql_fetch_array($result));
}
else
{
echo "<p id='privets'>По данной рубрике нет ни одной записи</p>";
}
?>
</span></div>
</td>
в этом же скрипте вверху подключается посредством include код для вывода корзинки товаров:
<!--Козина-->
<div align="center">
<table border="0" cellspacing="0" cellpadding="0" class="blockstyleleft">
<tr valign="top">
<td class="blockstyle1"><img src="image/topleft.gif" width="10" height="10" /></td>
<td class="blockstyle2"><img src="image/topright.gif" width="10" height="10" /></td>
</tr>
<tr>
<td colspan="2" class="leftrightmenu"><span class="navmenutitle">Корзина</span></td>
</tr>
<tr>
<td colspan="2" class="linearrow"></td>
</tr>
<tr class="fonecolor">
<td>
<div id="boxstyle">
<img src="image/boxbespokupkoi.gif" width="73" height="60" />
</div>
</td>
<td>
<div id="sub1">
<a href="sakas.php" title="Оформить заказ">
Оформить заказ
</a>
</div>
<div id="sub2">
<a href="registre.php" title="Вход для клиентов">
Вход для клиентов
</a>
</div>
</td>
</tr>
<tr class="summatovarov"><td colspan="2"><div class="korsina_text">Товаров: 0<br />На сумму: 0 руб.</div></td></tr>
<tr valign="bottom" class="foneimagefooter">
<td class="blockstyle1"><img src="image/bottomleft.gif" width="10" height="10" /></td>
<td class="blockstyle2"><img src="image/bottomright.gif" width="10" height="10" /></td>
</tr>
</table>
|
Luter1984, это
<div class="korsina_text">Товаров: 0<br />На сумму: 0 руб.</div> неудачная конструкция... Её лучше немного конкретизировать <div class="korsina_text"> Товаров: <span id='all_items'>0</span><br /> На сумму: <span id='all_summ'>0</span> руб. </div> Тогда данные можно будет писать так
document.getElementById('all_items').innerHTML=<значение>
document.getElementById('all_summ').innerHTML=<значение>
|
А как организовать сложение цены одного товара с другим
|
Другими словами как передавать в ссылке:
<a href='#' title='Заказать'> (см. код) цены товара и складывать их друг с другом. Кнопка заказать используется на нескольких страницах :) |
И если не затруднит, то не могли бы Вы дать ссылочку на какой-нибудь источник или инфу по организации покупательской тележки средствами JavaScript :help:
|
А что тут изобретать? Храни информацию с привязкой к пользователю где сможешь хранить и откуда сможешь выводить...
Вот собственно и вся доктрина "по организации покупательской тележки"... :) |
C кодом немного разобрался и появился не менее занимательный вопрос :)
Есть блок кода в котором выводится кнопка по технологии CSS - спрайта:
<div id='sub4'>
<a href='#' title='Заказать'>
Заказать
</a>
</div>
И форма для отправки данных методом POST: <form method='post' action='' class='jcart' name='mycart'> <fieldset> <input type='hidden' name='my-item-id' value='%s' /> <input type='hidden' name='my-item-name' value='%s' /> <input type='hidden' name='my-item-price' value='%s' /> <input type='hidden' name='my-item-qty' value='1' size='3' /> <input type='submit' name='my-add-button' value='В корзину' class='button' /> </fieldset> </form> Как прикрутить код с кнопкой вместо стандартной кнопочки submit'??? ************************** Я думаю здесь без JavaScript не обойтись? |
Цитата:
...
<form id='MyFrm' method='post' action='' class='jcart' name='mycart'>
...
</form>
...
<div id='sub4' onclick='document.getElementById("MyFrm").submit()'>
<a href='#' title='Заказать'>
Заказать
</a>
</div>
...
|
Сделал как описано выше, появилась моя кнопка, но почему-то она на отрез отказывается посылать данные... Может быть причина в том, что у меня далее используется скриптом значение name='my-add-button' с именем стандартной кнопки ...
|
Цитата:
Вариант для теста
...
<div id='sub4' onclick='alert("Ok")'>
<a href='#' title='Заказать'>
Заказать
</a>
</div>
...
|
Никакой реакции на:
alert("Ok")'
|
Luter1984, значит рой глубже. Кто-то или что-то перехватывает событие раньше твоей кнопки...
|
У меня используются сессии, может быть проблема из-за них...
// INCLUDE JCART BEFORE SESSION START include "jcart/jcart.php"; // START SESSION session_start(); // INITIALIZE JCART AFTER SESSION START $cart =& $_SESSION["jcart"]; if(!is_object($cart)) $cart = new jcart(); Данные из формы перехватываются в файле: jcart-config.php в виде: // THE HTML NAME ATTRIBUTES USED IN YOUR ADD-TO-CART FORM $jcart['item_id'] = 'my-item-id'; // ITEM ID $jcart['item_name'] = 'my-item-name'; // ITEM NAME $jcart['item_price'] = 'my-item-price'; // ITEM PRICE $jcart['item_qty'] = 'my-item-qty'; // ITEM QTY $jcart['item_add'] = 'my-add-button'; // ADD-TO-CART BUTTON /***********************/ Спасибо за терпение :) |
Luter1984, ты не путай серверные дела с клиентскими... :)
ПХП и сессии это все дело серверное... А онклик с алертом у тебя не отрабатывают как ты ожидаешь на клиенте. Пока не увидишь "Ок" на клиенте субмида не получишь...:no: |
Цитата:
|
Проблема в синтаксисе.
Блок ниже не работает:
<div id='sub4' onclick='alert("jr")'>
<a href='#' title='Заказать'>
Заказать
</a>
</div>
Так как он вызывается внутри тела фунции printf(".....",...) : Если передать методу alert числовое значение (без кавычек внутри):
<div id='sub4' onclick='alert(78787878)'>
<a href='#' title='Заказать'>
Заказать
</a>
</div>
Он прекрасно запускается... Но как тогда поступить со строкой кода:
<div id='sub4' onclick='document.getElementById("MyFrm").submit()'
Получается здесь срабатывает тот же механизм... |
Цитата:
<div id='sub4' onclick='alert("Вот в чем \"фокус\"!")'>
<a href='#' title='Заказать'>
Заказать
</a>
</div>
|
Да экранирование сработало, но работает не так как хотелось :)
1. Стало видно, что страница перезагружается; 2. При нажатии на любую из кнопок - заказать отправляется информация только по первому товару; 3. При нажатии на кнопку не срабатывает надпись снизу - товар добавлен. Наверное не совсем ясно выразился, поэтому картинка снизу... <form method='post' action='' class='jcart' name='mycart' id='MyFrm'> <input type='hidden' name='my-item-id' value='%s' /> <input type='hidden' name='my-item-name' value='%s' /> <input type='hidden' name='my-item-price' value='%s' /> <input type='hidden' name='my-item-qty' value='1' size='3' /> <input type='hidden' name='my-add-button' value='В корзину' class='button'/> </form> <div id='sub4' onclick='document.getElementById(\"MyFrm\").submit()'> <a href='' title='Заказать' class='button'> Заказать </a> </div> ![]() |
Заранее спасибо
Вообще ничего не понимаю превратил кнопку из спрайта в обычную статическую и прописал, как: <input type='image' src='..............' name='my-add-button' value='В корзину' class='button' /> Но она вообще перестала работать |
Цитата:
Дальше я ничего не понял... |
Цитата:
В твонм примере полей ровно на один товар... <form method='post' action='' class='jcart' name='mycart' id='MyFrm'> <input type='hidden' name='my-item-id' value='%s' /> <input type='hidden' name='my-item-name' value='%s' /> <input type='hidden' name='my-item-price' value='%s' /> <input type='hidden' name='my-item-qty' value='1' size='3' /> <input type='hidden' name='my-add-button' value='В корзину' class='button'/> </form> Как появляются остальные поля для отправки? какие у них name? |
форма лежит внутри функции printf в цикле do...while, информация добавляется согласно значениям %s...
/*открываем цикл для извлечения данных из таблицы базы данных*/
do
{
/*Маленькая проверка товара на наличие*/
if($myarrayres_rubrika["categorynalichie"] == 2)
{
$nalichie = "<br /><span id='tovar'>*Товар ожидается*</span>";
}
if($myarrayres_rubrika["categorynalichie"] == 1)
{
$nalichie = "<br />";
}
printf (
"<table border='0' cellspacing='0' cellpadding='0' class='blockstylecentertwo' valign='top'>
<tr>
<td class='blockstyle1'><img src='image/topleftcentertwo.gif' width='10' height='10' /></td>
<td class='blockstyle2'><img src='image/toprightcentertwo.gif' width='10' height='10' /></td>
</tr>
<tr>
<td colspan='2' class='centerminiblock'>
<span id='name_tovar'>%s</span>
</td>
</tr>
<tr>
<td colspan='2' class='centerminiblockline'></td>
</tr>
<tr>
<td colspan='2' class='centerminiimage'>
<a href='%s' class='fancy' title='%s'><img src='%s' class='newtovarimage'/></a>
</form>
</td>
</tr>
<tr>
<td colspan='2' class='zenabox'>
<span class='zena_tovara'>Цена %s рублей</span>$nalichie
</td>
</tr>
<tr class='zenabox' align='center'>
<td>
<div>
<form method='post' action='' class='jcart' name='mycart' id='MyFrm'>
<input type='hidden' name='my-item-id' value='%s' />
<input type='hidden' name='my-item-name' value='%s' />
<input type='hidden' name='my-item-price' value='%s' />
<input type='hidden' name='my-item-qty' value='1' size='3' /> <input type='submit' name='my-add-button' value='В корзину' class='button' />
</form>
</div>
</td>
<td>
<div id='sub5'>
<a href='view_p.php?id=%s' title='Подробнее'>
Подробнее
</a>
</div>
</td>
</tr>
<tr valign='bottom' class='zenabox'>
<td height='10' class='blockstyle1'><img src='image/bottomleftcentertwo.gif' width='10'
height='10' /></td>
<td class='blockstyle2'><img src='image/bottomrightcentertwo.gif' width='10' height='10'/></td>
</tr>
</table>", $myarrayres_rubrika["title"],$myarrayres_rubrika["big_image"],
$myarrayres_rubrika["title"],$myarrayres_rubrika["mini_image"],
$myarrayres_rubrika["cena"],$myarrayres_rubrika["id"],
$myarrayres_rubrika["title"],$myarrayres_rubrika["cena"],
$myarrayres_rubrika["id"]);
}
while ($myarrayres_rubrika = mysql_fetch_array($res_rubrika));
}
else
{
echo "<p id='privets'>По данной рубрике нет ни одной записи</p>";
}
|
Цитата:
|
минимум одна максимум 12, смысл понятен. Но как тогда сменить кнопку на свою - анимированную через CSS или хотя бы просто задать ее как статическую...вместо сдандартной submit. Не хочется из-за покупательской корзинки рушить дизайн всего проекта
|
| Часовой пояс GMT +3, время: 22:14. |