|
|
|
| Вопрос такой вот скрипт отправки данных на другую страницу сесиями!
include("includes/db.php");
include("includes/functions1.php");
if ($_REQUEST['command']=='add' && $_REQUEST['productid']>0){
$pid=$_REQUEST['productid'];
addtocart($pid,2);
header("location:shoppingcart.php");
exit();
}
opentable();
?>
<script language="javascript">
function addtocart(pid){
document.form1.productid.value=pid;
document.form1.command.value='add';
document.form1.submit();
}
</script>
<form name="form1">
<input type="hidden" name="productid" />
<input type="hidden" name="command" />
</form>
<TABLE BORDER=1 rules=rows width=100% CELLSPACING=0
CELLPADDING=5 BGCOLOR=#1e90ff ><tr><th colspan=11 scope=col align=left ><b><i>Ваша Корзина</b></i></th></tr>
<TR BGCOLOR=#292929 align=left>
<td ALIGN=center><font color=#ffffff><b>№п/п</b></td>
<td ALIGN=center ><font color=#ffffff><b>Фирма</b></td>
<td ALIGN=center ><font color=#ffffff><b>Артикуль</b></td>
<td ALIGN=center ><font color=#ffffff><b>Наименование</b></td>
<td ALIGN=center ><font color=#ffffff><b>Цена, <br>грн</b></td>
<td ALIGN=center ><font color=#ffffff><b>Кол-во</b></td>
<td ALIGN=center ><font color=#ffffff><b>Сумма, <br>грн</b></td>
<td ALIGN=center ><font color=#ffffff><b>Опции</b></td>
</tr>
</tr>
<?
$id_us2=($userdata['user_id']);
$result4=mysql_query("select * from fusion_user_order_shop WHERE id_us=$id_us2 ");
while($row4=mysql_fetch_array($result4)){
$sum1+=$row4['sum_korz'];
$sumtotal+=$row4['kol_korz'];
$i+=1;
?>
<TR BGCOLOR=#292929 align=left rules=rows class=test>
<td width=5% ALIGN=center > <font color=#ffffff><b><?=$i?></b></td>
<td ALIGN=center > <font color=#ffffff><?=$row4['firma_korz']?></td>
<td ALIGN=center > <font color=#ffffff><?=$row4['artic_korz']?></td>
<td ALIGN=center > <font color=#ffffff><?=$row4['naimen_korz']?></td>
<td ALIGN=center > <font color=#ffffff><?=$row4['cena_korz']?></td>
<td ALIGN=center > <font color=#ffffff><?=$row4['kol_korz']?></td>
<td ALIGN=center > <font color=#ffffff><?=$row4['sum_korz']?></td>
<td ALIGN=center ><input type="button" value="Добавить" onclick="addtocart(<?=$row4['id_tovara']?>)" /><font color=#ffffff>
<input type="checkbox" name="<?=$row4['id_tovara']?>" value="начальное_значение"></td>
<? }
?>
<TR BGCOLOR=#292929 align=left rules=rows class=test>
<td width=5% ALIGN=center > <font color=#ffffff>Итого:</b></td>
<td ALIGN=center ></td>
<td ALIGN=center ></td>
<td ALIGN=center > </td>
<td ALIGN=center ></td>
<td ALIGN=center ><font color=#ffffff><b><?=$sumtotal?></b></td>
<td ALIGN=center > <font color=#ffffff><b><?=$sum1?> грн.</td>
<td ALIGN=center > <font color=#ffffff></td></tr>
</table>
<?
|
Вопрос такой как убрать кнопку добавить (<input type="button" value="Добавить" onclick="addtocart(<?=$row4['id_tovara']?>)" />)
И заменить ее на флажок checkbox
так чтоб потом была одна кнопка и при нажатии одной кнопки жаные переносились те что выдилены флажком? | |
|
|
|
|
|
|
|
для: alex_fear
(02.02.2011 в 11:22)
| | Хм... просто уберите этот флажок (или действительно сделайте флажок добавления, если то имеет значения) а саму кнопку вынесите из цикла while(). Поставьте её перед строкой
<TR BGCOLOR=#292929 align=left rules=rows class=test>
|
Тогда у вас будет одна кнопка на все позиции, которые выводятся из базы данных. | |
|
|
|
|
|
|
|
для: cheops
(02.02.2011 в 11:35)
| | А как так чтоб человек выбирал каие ему нужно? | |
|
|
|
|
|
|
|
для: alex_fear
(02.02.2011 в 11:38)
| | Вынес из цыкла теперь вобще не переносятся данные так как они привязыны
<input type="button" value="1" onclick="addtocart(<?=$row4['id_tovara']?>)" />
$row4['id_tovara']-каждому свое значение! | |
|
|
|
|
|
|
|
для: alex_fear
(02.02.2011 в 11:41)
| | Сначала бы не плохо разобраться с самой отправкой формы, она ведь у вас происходит по выбору, то есть сразу. А если случайно нажать? Вы этого не допускаете?
У каждого товара должен быть чекбокс со значением равным ID товара, а не именем как у вас, и кнопка отправки формы одна - submit, и не надо никаких JavaScript (ну если только для проверки). Вот так удобнее будет отмечать/разотмечать товар. | |
|
|
|
|
|
|
|
для: sim5
(02.02.2011 в 11:58)
| | Понял! И еще такой вопрос! С этим флажком! Вобщем если флажок стоит то как записать даные об этом в базу данных! Функцией убдайт понятно но как определить что флажок включен под таким параметром?
<input type="checkbox" name="<?=$row4['id_tovara']?>" value="1">
и запрос в базу данных
UPDATE CLIENTS
SET `id_tovara` = $row4['id_tovara'] and `id_us`=0
WHERE status =1 ;
Если флажок установлен то в такое в такие поля обновить значение 1
Или как правильно! | |
|
|
|
|
|
|
|
для: alex_fear
(02.02.2011 в 12:12)
| | Значит так - аторибуты name, id должны начанаться с буквы, а не цифры. Это раз.
Если вы хотите много чекбоксов и одну кнопку отправки, значит покупатель может выбрать у вас множество товаров. Это массив. И что вы получите на сервере, какой массив? Это два. Ответьте на этот вопрос себе сперва, потом только есть смысл говорить далее. | |
|
|
|
|
|
|
|
для: sim5
(02.02.2011 в 12:15)
| | >Значит так - аторибуты name, id должны начанаться с буквы, а не цифры. Это раз.
Об валидности и рассовой чистоте HTML-кода пуская заботиться alex_fearпричем тогда, когда ему эта чистота потребуется - сейчас другая задача, что там в id_tovara мы знать не знаем (хотя и догадываемся).
>И что вы получите на сервере, какой массив?
А вот это дело. | |
|
|
|
|
|
|
|
для: cheops
(02.02.2011 в 12:19)
| | Ну и надо заботиться об валидности, иначе, если понадобиться сервис на JS, проблем не избежать. | |
|
|
|
|
|
|
|
для: alex_fear
(02.02.2011 в 11:41)
| | функцию добавления в корзину надо делать в цикле до тех пор, пока есть выбранные чек-боксы | |
|
|
|
|
|
|
|
для: elenaki
(02.02.2011 в 11:59)
| | И что он будет в цикле искать? | |
|
|
|
|
|
|
|
для: alex_fear
(02.02.2011 в 11:38)
| | >А как так чтоб человек выбирал каие ему нужно?
Можно так
<input type="checkbox" name="<?=$row4['id_tovara']?>" /> | |
|
|
|
|
|
|
|
для: cheops
(02.02.2011 в 12:12)
| | Ну разве же так можно? | |
|
|
|
|
|
|
|
для: sim5
(02.02.2011 в 12:13)
| | Почему бы нет? | |
|
|
|
|
|
|
|
для: cheops
(02.02.2011 в 12:14)
| | Потому что не удобно для обработки на сервере, и протеворчит правилам. | |
|
|
|
|
|
|
|
для: alex_fear
(02.02.2011 в 11:38)
| | >А как так чтоб человек выбирал каие ему нужно?
Исправьте так, sim5 дело советует
<input type="checkbox" name="<?php echo "chk".$row4['id_tovara']."[]" ?>" /> | |
|
|
|
|
|
|
|
для: cheops
(02.02.2011 в 12:21)
| | Люди я понял что это не по мне!!! Буду делать в сесиях!
Просто жалко что корзина удаляется после закрытия браузера(( | |
|
|
|
|
|
|
|
для: alex_fear
(02.02.2011 в 12:34)
| | Ничего вы не поняли, сессия или база, это вторично. У вас не верно выбрано указание ID товара. | |
|
|
|
|
|
|
|
для: alex_fear
(02.02.2011 в 12:34)
| | Сессии это неплохо, но хорошо бы еще её содержимое сохранять в базу данных (если пользователь авторизован), а в следующий раз когда он приходит - вытаскивать содержимое корзины из базы данных в сессию и пусть дальше работает. При этом вовсе необязательно спрашивать пользователя что он хочет сохранить, а что нет - сохраняйте все подряд. | |
|
|
|
|
|
|
|
для: cheops
(02.02.2011 в 12:36)
| | Вот так я ихотел! Я сделал запись содержимого в базу данных.
Вывел в корзину осталось так чтоб человек выбрал что ему нужно заказать.
Потом в сесиях отправлюя на заказ! Вот проблема стала с этим флажком! Выбора то что нужно ! | |
|
|
|
|
|
|
|
для: alex_fear
(02.02.2011 в 12:41)
| | может, лучше удалитьто, что НЕ нужно? | |
|
|
|
|
|
|
|
для: alex_fear
(02.02.2011 в 12:41)
| | Вы думать будете или нет? Причем вообще место куда писать? Вы можете спокойно помещать выбор пользователя в сессию, что удобно, и одновременно записывать состояние корзины в ему в cookies, не трогая базу. Как только пользователь оформил заказ, удаляются cookies и сессия, а заказ переписывается в базу. А можете и базу использовать для временного хранения. Все, в этом плане проблем никаких. У вас проблемы с указанием id атрибутам чекбоска.
Есть два способа выбора товара - сколько угодно, или фиксированно. Если вы торгуете к примеру бублем, которые гум, то что для меня одна пачка, я может хочу у вас купить аж целых две. Уже даже в этом случае неудобно дважды скакать по выбору в вашем магазине, не говоря уже о том, что я захочу их купить 20 штук (ну вот такой прожорливый). Что вы в этом случае будете делать, оставите как есть, по одной штуке? Да я прокляну такой магазин.
А выход прост, для этого даем право выбирать количество товара, и делаем так:
<input name="cart[id товара]" />
| и пользователь в этом поле может выбирать нужное количество товара. На сервере вы будет обрабатывать массив $_POST['cart'], ключами которого будут id товаров, а значения их количество.
У вас фиксированный выбор, одна штука, ну может вы Лексусы продаете, поэтому хватит. Теперь подумайте, разве удобно в вашем случае id-товара указывать атрибуту name (да еще с ошибками) а value количество равное 1? Нет, ибо вы и без этой единицы уже знаете, что пришедший id, это и есть 1, и записывать в базу заказ нужно только id, единичка как количество просто бессмысленна.
В вашем случае нужно указывать id товара атрибуту value чекбоска, это облегчит обработку массива, а имена чекбосков в этом случае должны быть такими: name[]. Все.
Вот над чем надо сразу думать, а не о сессиях. | |
|
|
|
|
|
|
|
для: sim5
(02.02.2011 в 12:57)
| | Попробывал вот так
<input type="checkbox" name="<?php echo "chk".$row4['id_tovara']."[]" ?>" />
Все равно не хочет отправлять выбраное!
А колиство у меня при первом выборе товара выставляется!
Тут нужно решить проблему с отправкой выбраного галочкой! | |
|
|
|
|
|
|
|
для: alex_fear
(02.02.2011 в 13:08)
| | >Все равно не хочет отправлять выбраное!
А в чем это проявляется? | |
|
|
|
|
|
|
|
для: cheops
(02.02.2011 в 13:17)
| | Не передает данные на другую страницу! | |
|
|
|
|
|
|
|
для: alex_fear
(02.02.2011 в 13:27)
| | У вас в коде наблюдается следующий фрагмент
<form name="form1">
<input type="hidden" name="productid" />
<input type="hidden" name="command" />
</form>
|
Последний </form> должен быть расположен после всех элементов управления (<input>), иначе они не будут участвовать в форме. Перенесите его вниз. | |
|
|
|
|
|
|
|
для: cheops
(02.02.2011 в 13:34)
| | Вот сделал так
<TR BGCOLOR=#292929 align=left rules=rows class=test>
<td width=5% ALIGN=center > <font color=#ffffff><b><?=$i?></b></td>
<td ALIGN=center > <font color=#ffffff><?=$row4['firma_korz']?></td>
<td ALIGN=center > <font color=#ffffff><?=$row4['artic_korz']?></td>
<td ALIGN=center > <font color=#ffffff><?=$row4['naimen_korz']?></td>
<td ALIGN=center > <font color=#ffffff><?=$row4['cena_korz']?></td>
<td ALIGN=center > <font color=#ffffff><?=$row4['kol_korz']?></td>
<td ALIGN=center > <font color=#ffffff><?=$row4['sum_korz']?></td>
<td ALIGN=center ><font color=#ffffff>
<input type="checkbox" name="<?php echo "chk".$row4['id_tovara']."[]" ?>" /></td>
<? }
?>
<TR BGCOLOR=#292929 align=left rules=rows class=test>
<input type="button" value="Добавить" onclick="addtocart(<?=$row4['id_tovara']?>)" />
|
Верно? | |
|
|
|
|
|
|
|
для: alex_fear
(02.02.2011 в 13:42)
| | Да, верно, только добейтесь того, чтобы все эти <input>-ты были между тэгами <form> и </form>, иначе данные действительно не удастся отправить. | |
|
|
|
|
|
|
|
для: cheops
(02.02.2011 в 14:07)
| | Буду пробывать!! | |
|
|
|
|
|
|
|
для: alex_fear
(02.02.2011 в 16:53)
| | Как же вы не хотите понять, что у вас изначально заложена неверная логика добавления товара, уже в самой форме.
Вы хотите иметь множество товаров с выбором по чекбоксу - одну кнопку для отправки (об этом в самом начале темы у вас). Тем не менее, вы упорно этой кнопке добавляете id товара, не понятно зачем и для чего-то его дублируете еще в скрытом поле (вот зачем?), при этом форма сразу отправляется. Встает вопрос, а зачем чекбокс товару?
Вот вы можете обяснить логику вашего механизма? | |
|
|
|
|
|
|
|
для: sim5
(03.02.2011 в 10:15)
| | Причем тут добавление!!
Это не добавление а сама процедура оформления!
Тут покупатель выбирает что ему заказать с выбраного а что оставить на потом!
Таесть это уже сама корзина! | |
|
|
|
|
|
|
|
для: alex_fear
(04.02.2011 в 11:27)
| | Это не корзина, это у вас форма. Элементы полученные от формы, это уже массив. Вы же добавили id товара чекбоксу, и его еще передаете и в скрытый элемент формы посредством JavaScript, при этом (после передачи) сразу отправляется форма. А передаете вы этот id кнопкой.
Вопрос 1 - а зачем чекбокс тогда?
Вы в самом начале темы хотели множество чекбоксов (надо полагать для возможности выбора нескольких товаров), и одну конопку отправки формы (по логике вопроса вашего именно этого). Но при этом (получив одну кнопку) все оставили как есть.
Вопрос 2 - а зачем тогда выводить множество товаров с чекбоксом для каждого, если опять таки в скрытое поле попадает id одного товара?
Корзина, она на сервере, и это несколько другое, и ее вы здесь вооще не показывали. У вас в форме добавления товаров полнейший ужас:
1 - лишние и совсем ненужные элементы;
2 - совсем неоправданное применение JavaScript;
3 - неудобное именование (выбор атрибута) полей формы, которое усложняет, а не упрощает обработку добавления товаров в корзину.
Другими словами, вы не продумали свой механизм корзины, а смешали все в кучу. | |
|
|
|