[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: обработка данных
RuslanMRP
Привет всем, помогите, проблема такова - при указании в форме количество товара(штук). При обработке, дублируется на все остальные поля только число указанное последним, а надо чтобы числа соответвствовали введенным полям.

<form method=POST action=index11.php>
..
..

for($i; $i<mysql_num_rows($r); $i++)
{
$f=mysql_fetch_array($r);
echo "<td align='left'>$f[opis]</td><td align='right'>$f[price]</td><td><input type=checkbox name=Arr[] value=".$f['id']."
checked></td><td align='center'><input type=text name=kol size=5></td>"
;
$sum+=$f['price'];
}
</form>"
-------------------------------

if(isset(
$_POST["goo"]))
{

$q="select * from tovar where";
foreach(
$_POST['Arr'] as $k=>$v) $q=$q." (id=$v) or";
$q=substr($q,0,strlen($q)-3);
mysql_select_db(
$DB);
$r=mysql_query($q);

echo "
<table border=1 width=100%>";
echo "
<tr><td bgcolor=#336699>наименование</td><td bgcolor#336699>Цена</td><td bgcolor=#336699

align='center'>Кол-во(штук)</td></tr>";
$sum=0;
for(
$i; $i<mysql_num_rows($r); $i++)
{
echo "
<tr>";
$f=mysql_fetch_array($r);
echo "
<td align='left'>$f[opis]</td><td align='left'>$f[price]</td><td align='left'>$_POST[kol]</td>";
$sum+=$f['price'];
echo "
</tr>";
}
echo "
</table>";
echo "
Общая сумма заказа: $sum\n";
}





Спустя 10 минут, 10 секунд (24.02.2010 - 19:12) pas написал(а):
так поставьте вместо kol скажем 'kol'.$i И соотвественно обрабатывайте $_POST['kol1'], $_POST['kol2'] и т.д.

Спустя 11 минут, 35 секунд (24.02.2010 - 19:23) RuslanMRP написал(а):
pas


Так не получаеться. Дело в том что поле куда будет вводиться число(т.е. количество данного товара), должно быть привязано к данному товару. Должно совпадать с id товаром

Спустя 10 минут, 36 секунд (24.02.2010 - 19:34) pas написал(а):
Ну тогда сделайте, чтобы name, куда должно выводится количество просто было разным. Тогда и не будет возникать подобной проблемы. Ну например, вместо kol будет $f[opis] . 'kol'.
Главное, чтобы не было одинаковых name. У Вас сейчас их число равно количеству товаров. Поэтому при обращении $_POST['kol'] и выбирается последнее.

P.S. Надеюсь, понятно объяснил =) С этим у меня как-то не очень =))

Спустя 38 минут, 4 секунды (24.02.2010 - 20:12) RuslanMRP написал(а):
pas


Не получаеться. давай заново. У меня есть бд. заходит клиент отмечает те товары которые он хочет преобрести, после чего ему выводиться все товары которые он отметил + напротив каждого поля товара появляеться поле для указания количества штук данного товара + напротив каждого поля чекбоксы, если он передумал и при отключении товара сможет убрать товар.
Он указывает напротив каждого товара, количество штук. И после всего этого ему выводиться все товары и их количество, которые он заказал.

Спустя 15 часов, 9 минут, 40 секунд (25.02.2010 - 11:22) pas написал(а):
А можно последние изменения посмотреть?

Спустя 38 минут, 28 секунд (25.02.2010 - 12:00) RuslanMRP написал(а):
pas

Файл где, появляються поля для ввода количества-

<?
include "options.php";
if(!mysql_connect($host,$USER,$PASSWD))
{
echo "<h1>Ошибка сервера MySql.</h1>";
exit;
}
echo $_SESSION['name'];
mysql_select_db($DB);
echo "<table border=1 width=100%>";
$r=mysql_query("select * from tovar where cat = 'CD'");
echo "<form method=POST action=index1.php>";

for ($i=0; $i<mysql_num_rows($r); $i++)
{
echo "<tr>";

$f=mysql_fetch_array($r);
echo "<td>$f[cat]</td><td>$f[opis]</td><td>$f[price]</td><td><input type=checkbox name=Arr[] value=".$f['id']."></td><td
align='center'><input type=text name='kol'.$f size=5></td></tr>"
;
}
echo "<tr><td align=center colspan=4><input type=submit name=buy value=заказать></></td></tr>";
echo "</table>";
echo "</form>";
?>

Файл где должны выводиться поля-

<?
include "options.php";
if(!mysql_connect($SERVER,$USER,$PASSWD))
{
echo "Ошибка";
}
if(isset($_POST["buy"]))
{
$q="select * from tovar where";
foreach($_POST['Arr'] as $k=>$v) $q=$q." (id=$v) or";
$q=substr($q,0,strlen($q)-3);
mysql_select_db($DB);
$r=mysql_query($q);
echo "<table border=1 width=100%>";
echo "<form method=POST action=index11.php>";
echo "<tr><td bgcolor=#336699>наименование</td><td bgcolor=#336699 align='right'>Цена</td><td bgcolor=#336699

align='center'>ВСЕ</td><td bgcolor=#336699 align='center'>Кол-во(штук)</td></tr>"
;
$sum=0;

for($i; $i<mysql_num_rows($r); $i++)
{
echo "<tr>";
$f=mysql_fetch_array($r);
echo "<td align='left'>$f[opis]</td><td align='right'>$f[price]</td><td><input type=checkbox name=Arr[] value=".$f['id']."

checked></td><td align='center'>
$_POST[kol]</td>";
$sum+=$f['price'];
echo "</tr>";
}

echo "<tr><td><input type='submit' name='goo' value='подтвердить'></td></tr>";
echo "</form>";
echo "</table>";
echo "Общая сумма заказа: $sum\n";
}
?>

Спустя 12 минут, 34 секунды (25.02.2010 - 12:13) RuslanMRP написал(а):
надо сделать так, чтобы каждое поле type='text'(количество) было равно своему чекбоксу.

Спустя 38 секунд (25.02.2010 - 12:13) pas написал(а):
Я имел ввиду сделать например так:


<?php
include "options.php";
if(!mysql_connect($host,$USER,$PASSWD))
{
echo "<h1>Ошибка сервера MySql.</h1>";
exit;
}
echo $_SESSION['name'];
mysql_select_db($DB);
echo "<table border=1 width=100%>";
$r=mysql_query("select * from tovar where cat = 'CD'");
echo "<form method=POST action=index1.php>";

for ($i=0; $i<mysql_num_rows($r); $i++)
{
echo "<tr>";

$f=mysql_fetch_array($r);
echo "<td>$f[cat]</td><td>$f[opis]</td><td>$f[price]</td><td><input type=checkbox name=Arr[] value=".$f['id']."></td><td
align='center'><input type=text name='kol"
.$f['id']."' size=5></td></tr>";
}
echo "<tr><td align=center colspan=4><input type=submit name=buy value=заказать></></td></tr>";
echo "</table>";
echo "</form>";
?>



<?php
include "options.php";
if(!mysql_connect($SERVER,$USER,$PASSWD))
{
echo "Ошибка";
}
if(isset($_POST["buy"]))
{
$q="select * from tovar where";
foreach($_POST['Arr'] as $k=>$v) $q=$q." (id=$v) or";
$q=substr($q,0,strlen($q)-3);
mysql_select_db($DB);
$r=mysql_query($q);
echo "<table border=1 width=100%>";
echo "<form method=POST action=index11.php>";
echo "<tr><td bgcolor=#336699>наименование</td><td bgcolor=#336699 align='right'>Цена</td><td bgcolor=#336699

align='center'>ВСЕ</td><td bgcolor=#336699 align='center'>Кол-во(штук)</td></tr>"
;
$sum=0;

for($i; $i<mysql_num_rows($r); $i++)
{
echo "<tr>";
$f=mysql_fetch_array($r);
echo "<td align='left'>$f[opis]</td><td align='right'>$f[price]</td><td><input type=checkbox name=Arr[] value=".$f['id']."

checked></td><td align='center'>"
.$_POST['kol'.$f['id']]."</td>";$sum+=$f['price'];
echo "</tr>";
}

echo "<tr><td><input type='submit' name='goo' value='подтвердить'></td></tr>";
echo "</form>";
echo "</table>";
echo "Общая сумма заказа: $sum\n";
}
?>



P.S. Обрамляйте, пожалуйста, код в теги.

Спустя 2 минуты, 58 секунд (25.02.2010 - 12:16) RuslanMRP написал(а):
pas
Огромное спасибо, очень выручил.

Спустя 11 часов, 9 минут, 40 секунд (25.02.2010 - 23:26) RuslanMRP написал(а):
pas

Подскажи пожалуйсто, по этому же вопросу.

Я хочу внести <input type=text name='kol".$f['id']."' size=5>
в сессию. Какое имя переменной получаеться?

Прописываю :
$_SESSION['kol".$f['id']."']=$_POST['kol".$f['id']."'];

как провильно сделать?

Спустя 12 часов, 12 минут, 8 секунд (26.02.2010 - 11:38) pas написал(а):
Если я правильно понял, то вот так:
$_SESSION['kol'.$f['id']]=$_POST['kol'.$f['id']];


При этом в сессии хранятся переменные kol1, kol2, kol3 и т.д. для id 1,2,3 и т.д. соответственно.

Спустя 45 минут, 21 секунда (26.02.2010 - 12:24) twin написал(а):
Любопытно... В чекбоксах вы используете массив, а в текстовых полях какие то извращения с kol123...
Что за кол? На него посадить надо всех вас за такой код.
Так почему не сделать?
"<input type=text name='kol[".$f['id']."]' size=5>"


Спустя 44 минуты, 13 секунд (26.02.2010 - 13:08) pas написал(а):
Действительно, виноват, особо не вникнул в код (((((( Пора всё-таки отдохнуть..

Спустя 7 часов, 21 минута (26.02.2010 - 20:29) RuslanMRP написал(а):
Пацаны спасибо!

Спустя 16 часов, 43 минуты, 59 секунд (27.02.2010 - 13:13) RuslanMRP написал(а):
twin
Извини за беспокойство. Подскажи, если я прописываю

"<input type=text name='kol[".$f['id']."]' size=5>"

то, обрабатываю

".$_POST['kol['.$f['id']'].']." - это не правильно. Подскажи как?

Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.