В корзину добавляется не тот товар, который выбран.

defence

Деклассированный элемент
В корзину добавляется не тот товар, который выбран.

Здрасти, народ! Помогите плиз разобраться с траблом. Чо-то не въеду никак... Значит так. есть работающий каталог товаров (привожу упрощенный код вывода):

PHP:
$sql=mysql_query("SELECT * FROM products");
while($row=mysql_fetch_array($sql)) {
echo $row[name]."<br>".$row[foto]."<br>".$row[price];
}
В пользовательсой части надо добавить корзину покупок.
Я сделал так:

PHP:
$sql=mysql_query("SELECT * FROM products");
while($row=mysql_fetch_array($sql)) {
echo "<form action=cart.php method=post>
<input type=hidden name=prod_name value=".$row[name].">".$row[name]."<br>".$row[foto]."<br>
<input type=hidden name=prod_price value=".$row[price].">".$row[price]."</form>";
}
Товар добавляется, но почему-то всегда добавляется ПОСЛЕДНИЙ из цикла, а не тот который выбран.

Как разрулить это? помогите, пожалуйста

-~{}~ 27.04.05 17:35:

А!!! ну и кнопка ДОБАВИТЬ В КОРЗИНУ тамже :))
 

SelenIT

IT-лунатик :)
А где и как передается информация, что какой-либо товар выбран? В примерах ее не видно...
 

defence

Деклассированный элемент
А где и как передается информация, что какой-либо товар выбран? В примерах ее не видно...
Так вот это и надо решить: как передать информацию, что выбран ИМЕННО ЭТОТ товар...

хэлп!!!

-~{}~ 28.04.05 13:42:

Пробовал вставлять скрытое поле с id товара - результат тот же: добавляется в корзину товар, который выводится последний в цикле.
 

Кром

Новичок
>$row[price]

Все строковые элементы массива нужно брать в апострофы или в кавычки:
$row['price'] или $row["price"]

Во-вторых, надо хотя бы чуточку понимать то, что ты делаешь.
Чтобы выбрать какой то товар, нужно четко его определить. Обычно это делается по его ID. Если такого поля нет, его нужно завести.
Чтобы пользователь мог добавить такой товар в карзину, этот ID нужно передать по ссылке скрипту, который отвечает за добавление товаров в корзину. Понятно?
 

defence

Деклассированный элемент
Кром
Литералы у меня в кавычках (чо-то как-то упустил здесь:))

И
Пробовал вставлять скрытое поле с id товара - результат тот же: добавляется в корзину товар, который выводится последний в цикле.
-~{}~ 28.04.05 14:08:

Вот полный кусок кода:

PHP:
echo '<form method=post action=cart.php><input type=hidden name=id value='.$rl['id'].'><input type=hidden name=username value='.$_SESSION['member'].'>
	  <p class="name">'.$rl["name"]=str_replace('(шт.)','',$rl['name']).'<input type=hidden name=product_name value='.$rl['name'].'></p>
арт. <font class="art">'.$rl["artikul"].'</font><input type=hidden name=artikul value='.$rl['artikul'].'><br>
производство: '.$rl["production"].'<br>
состав: '.$rl["structure"].' <br>
размер коробки: '.$rl["size"].' <br><br>';
$sql=mysql_query("SELECT discount FROM users WHERE username='".$_SESSION['member']."' AND activated='1' ");
$dis=mysql_fetch_array($sql);
if($dis['discount'] == 0) {
$price=$rl['price'];
echo 'базовая цена: <font class=incat_active>'.$price.'</font> у.е.<br><input type=hidden name=price value='.$price.'>';
} else {
$x=($rl['price']/100)*$dis['discount'];
$price=$rl['price']-$x;
echo 'цена со скидкой: <font class=incat_active>'.$price.'</font> у.е.<br><input type=hidden name=price value='.$price.'>';
}
echo '<font class=firm>'.$rl["firm"].'</font><br>';
if($rl["description"]) {
$fsize=round(filesize("files/pdf/".$rl["description"])/1024);
$finfo=pathinfo("files/pdf/".$rl["description"]);
echo '<img src=icons/ipdf.gif border=0>&nbsp;<a href=files/pdf/'.$rl["description"].' target=_blank>Скачать инструкцию</a> ('.$finfo['extension'].', '.$fsize.' Кб)';
}

echo 'Кол-во:&nbsp;<input type=text name=quantity size="3" maxlength="3" value=0>&nbsp;<input type=submit name=add value=заказать style="color:#FFFFFF; background-color:#AB3339">
<form>';
 

Кром

Новичок
defence, тебя заносит немного на поворотах.
То ты даешь заведомо неправильный код, то подсовываешь какой то кусок кода, похожий на тесто.
Ничего этого делать не нужно. Нужно немного подумать о том что тебе сказали и локализовать свою проблему.
Потом можно идти на форум и задавать внятный вопрос.

Заодно: PHP FAQ: Ничего не работает! Что делать???
 

SelenIT

IT-лунатик :)
ИМХО, прежде чем что-то делать с выбранными товарами - нужно их выбрать. А поскольку выбрать их должен пользователь, то нужно дать ему интерфейс для выбора. Стандартное, на мой взгляд, решение - массив чекбоксов (вместо этих хидден-полей)...
 

defence

Деклассированный элемент
SelenIT
Думал я про чекбоксы... Но остановился просто на проверке поля с количеством товара, то есть если >0 то этот товар и выбран...

Или мыслю неправильно?
 

defence

Деклассированный элемент
SelenIT
Попробую поподробней... Значит есть каталог товаров, обычный - картинка, название, артикул, цена и т.д. Выводится все это обычным циклом while.

Если чел успешно прошел авторизацию - он видит тот же каталог, только появляются поле выбора количества и кнопка - добавить. И скрытые поля с теми же названием, артикулом и иже с ними. Данные передаются скрипту cart.php, где заносятся в таблицу базы... Почему при добавлении товара в корзину добавляется ПОСЛЕДНИЙ из цикла, а не тот который выбран, даже если
количество >0 то этот товар и выбран...
 

Кром

Новичок
defence
Да ты похоже совсем деревянный. Что ты заладил, почему, почему! Ты сам головой хоть немного подумать можешь? Хоть чуть-чуть?
У тебя в cart.php что передается? Ты знаешь? Нет? Так узнай.
1. Если там ничего нет кроме одной записи, значит html код у тебя неправильный. Выкинь нафиг весь php код и напиши html страницу, которая посылает на сервер массив значений. Вот с чего начинать надо.
2. Если есть список всех кодов, значит проблема при добавлении в корзину. Смотри что у тебя там происходит. Выводи значения, подсчитвай их перед добавлением в корзину, проверяй, добавились они или нет.
Делай что нибудь, в конце концов. И прекрати задавать один и тот же идиотский вопрос, на который тебе уже давно ответили.
 

defence

Деклассированный элемент
Кром
Да ты похоже совсем деревянный. Что ты заладил, почему, почему! Ты сам головой хоть немного подумать можешь? Хоть чуть-чуть?
Третий день думаю...

У тебя в cart.php что передается?
Говорю же: данные передаются, но не те какие надо...

И прекрати задавать один и тот же идиотский вопрос, на который тебе уже давно ответили
Никто вразумительного так и не посоветовал! Ответа я не получил!
Выводи значения, подсчитвай их перед добавлением в корзину, проверяй, добавились они или нет.
Да уже обвыводился и обпроверялся! А толку-то... Я не могу найти ошибку и все! Поэтому и спрашиваю!
 

Кром

Новичок
Тебе уже давно все объяснили. Ты просто слушаешь только себя. Толку повторяться нет.
 

regi

Новичок
не знаю, так ли я все понял :)
попробуй сделать имена скрытых полей массивами: name=product_id[]
а иначе будет передаваться последний
 

swamp_demon

Новичок
ну ладно

<input type=hidden name=price value=1>
<input type=hidden name=price value=2>
<input type=hidden name=price value=3>

при данной конструкции после нажатия сабмита в форму прийдет тока последняя строка

смотреть в сторону name="price[]"

~
упс. уже ответили
 

defence

Деклассированный элемент
regi,
swamp_demon
Спасибо, братцы! Буду пробовать...

Интересно, почему больше всех стараются помочь "новички" клуба, а "старожилы" и иже с ними только бесятся? Забыли они наверно, что тоже не с рождения программировать умели...
 

Лексеич

Московский калмык
defence
старожилам уже надоело отвечать на одни и те же вопросы, а новичкам еще нет. :)
 

defence

Деклассированный элемент
стыдно, дяденьки, стыдно...

-~{}~ 28.04.05 15:57:

Лексеич
Так я весь поиск перерыл - нету похожих тем!
 

Мутник

Новичок
defence

студно тебе должно быть. Кром еще в самом начале тебе ПОДРОБНО ответил что у тебя и к чему...

Просто те самые новички, которые __ЗА ТЕБЯ ВСЕ РЕШАЮТ__ оказывают тебе медвежью услугу, а те самы старожилы дают намек, чтобы ты до ответа дошел своими мозгами... это полезнее и перспективнее, согласись...

цитирую:

Жили 2 богатых человека. И решили они отдать свое богатство на праведные цели.

Первый ходил по улицам, переходам метро и вокзалам, подходил к нищим, бомжам и беспризорникам, и давал каждому из них по 1000$. Нищие радовались, благодарили, говорили ему "Спаси тебя Бог", а сами шли и пропивали и всячески прожигали столь легко доставшиеся деньги.

Другой никому ничего не раздавал, но вложил деньги в строительство фабрики. И звал работать на эту фабрику всех желающих, в том числе и тех нищих, которые некоторое время назад получили деньги от первого. Но мало кто из них пошел работать, так как они уже привыкли к своей безалаберной и безответственной жизни. Хотя нашлись и такие, кто принял предложение второго. Второй богач платил им заработную плату, но и требовал от них качественной и упорной работы. Первое время они потихоньку поносили строгого начальника, но потом постепенно привыкли, собрались и стали такими же, как и все работающие люди.

Теперь скажите, кто из двух богатых людей употребил свое богатство лучше?
 
Сверху