Делаю нечто подобное как интернет-магазин. У меня есть список товаров/услуг, я их вывожу списком и у каждого наименования есть чекбокс и текстовое поле с кол-вом.
Результат записываю в БД в одну ячейку в виде: 1:2|2:5|3:7| и т.д. где сначала идет номер товара а потом кол-во и это все разделяю |.
$price_so=explode("|",$row[items]);
$i = 0;
$sql_s = "SELECT * FROM `sro_db_price` WHERE type=1 ORDER BY id ASC";
$result_s = mysql_query($sql_s);
while ($row_s = mysql_fetch_array($result_s)) {
$price_so2=explode(":",$price_so[$i]);
if ($row_s[id] == $price_so2[0]) {
$checked_so2="checked";
$amount = $price_so2[1];
} else {
$checked_so2="";
$amount = 1;
}
echo "<input type='checkbox' name='items[]' value='$row_s[id]' $checked_so2>
<input type='text' size=1 name='q[]' value='$amount'> $row_s[item] [$row_s[czk] CZK / $row_s[eur] EUR]<br>\n";
$i++;
}
Сама запись в БД выглядит так:
$amount = count($_POST['items']);
for($i = 0; $i < $amount; $i++) {
$string2 .= $_POST['items'][$i] . ":" . $_POST['q'][$i] ."|";
}
$sql="UPDATE `anketa` SET items='$string2' WHERE id=$_POST[anketa]";
Проблема в том, что если я выбираю товары подряд - то все ок, стоит мне выбрать скажем 1,2 и 4, то у четвертого при записи БД пропадает правильное кол-во (записывается всегда 1, хотя скажем ввожу кол-во 5) а при отображении 4 товар вообще не отображается. Стоит мне его только в БД подправить на номер 3 (то есть чтобы шел сразу после 1 и 2) - то всё ОК.
Подскажите люди добрые, что я делаю не так. Вторые сутки над этим сижу и все никак не могу сделать.
Спустя 25 минут, 31 секунда (20.07.2010 - 01:51) qpayct написал(а):
организовано не правильно вот потому и запутался сам в своём же коде.
- не вижу смысла записывать колличество товаров на складе(или где они там) в одну ячейку и потом с ними "плясать" в пхп.
- цикл внутри цикла открытие 2-ух таблиц одна в другой - зло
- вывод во втором цикле сгенерированого хтмл на страницу - зло
используй набор функции для этих манипуляций, а ещё лучше класс
- не вижу смысла записывать колличество товаров на складе(или где они там) в одну ячейку и потом с ними "плясать" в пхп.
- цикл внутри цикла открытие 2-ух таблиц одна в другой - зло
- вывод во втором цикле сгенерированого хтмл на страницу - зло
используй набор функции для этих манипуляций, а ещё лучше класс
Спустя 14 минут, 26 секунд (20.07.2010 - 02:05) tweak написал(а):
Список товаров храниться в отдельной таблице и его могут редактировать, удалять, изменять - так и надо.
А потом в таблице клиенты, записваются заказы конкретного человека, в одну из таких ячеек я и хочу записать перечень того, что он заказал и сколько.
Может немного и коряво, но переделывать все много времени уйдет. Подскажите просто как исправить этот глюк.
А потом в таблице клиенты, записваются заказы конкретного человека, в одну из таких ячеек я и хочу записать перечень того, что он заказал и сколько.
Может немного и коряво, но переделывать все много времени уйдет. Подскажите просто как исправить этот глюк.
Спустя 33 минуты, 12 секунд (20.07.2010 - 02:38) qpayct написал(а):
для таких вещей в хтмл есть отличная штука - массив.
print_r($_POST['product']);
<form action="index.php" method="post">
<input type="text" name="product[]" />
<input type="text" name="product[]" />
<input type="text" name="product[]" />
<input type="text" name="product[]" />
<input type="text" name="product[]" />
<input type="submit" value="ok" />
</form>
Спустя 5 часов, 36 минут (20.07.2010 - 08:14) sergeiss написал(а):
Цитата (tweak @ 20.07.2010 - 03:05) |
Подскажите просто как исправить этот глюк. |
Тебе уже qpayct сказал - организовано криво. Лучше переделай сразу, чем мучаться самому и мучать того, кто потом будет это поддерживать Для каждого типа информации надо свою колонку изначально организовать, тогда проще работать будет.
То есть, рекомендация одна - переделать. Если же тебе хочется именно косячный вариант развивать, то делай это самостоятельно. Нефиг ерундой всякой грузить людей. ОК?