PDA

View Full Version : سوال: اصلاح کد فرم سفارشات



rash44
یک شنبه 03 خرداد 1388, 16:04 عصر
سلام
من 1 فرم سفارش توی سایت دارم
لیست محصولات رو به این صورت برای کاربر نمایش می دم :


<?php
$i = 0;
while ($line = db_fetch_assoc($reg2)) { $i++; ?>
<tr class="<?=($i%2==0)?'even':'odd'?>">
<td align="center" width="58">
<input type="text" name="cout[]" size="5" class="inform" value="1" maxlength="5" dir="ltr"></td>
<td align="center">
<font face="Tahoma" style="font-size: 8pt; " color="#333333"><?php echo $typemahsol; ?></font></td>
<td align="center" width="208" dir="rtl">
<font face="Tahoma" style="font-size: 9pt" color="#333333"><?php echo ($line['name']); ?></font></td>
<td align="center" width="20" dir="rtl">
<p align="right"><font face="Tahoma">
<span style="font-size: 8pt"><font color="#003366">
<input type="checkbox" name="namem[]" value="<?php echo ($line['name']); ?>">&nbsp; </font></span></font></td>
</tr><?php } ?>




محصولاتی رو کاربر تیک میزنه و تعداد مورد درخواستش رو توی 1 inputbox وارد می کنه به صفحه بعد برای ثبت توی بانک می فرستم
برای ثبت لیست محصولات توی بانک به این صورت عمل می کنم :


for ($i=0;$i<=count($name)-1;$i++) {
$q2="INSERT INTO order(`name`,`type`,`count`,`code`,`date`) VALUES ('$name[$i]','$type','$cout[$i]','$code','$date')";
$reg2 = db_query($q2); }


این برنامه 1 مشکل داره :
اگر کاربر بیاید محصول اول رو انتخاب نکنه و محصول 2 رو انتخاب کنه تعداد محصول اول به جای تعداد محصول دوم ثبت میشه
اگر توی کوئری درج تعداد محصول رو به اضافه 1 کنم درست میشه ولی اگر کاربر محصول 1 هم انتخاب کنه دیگه تعداد محصول اولی ثبت نمیشه :
$cout[$i] + 1
لطفا کد رو اصلاح کنید
ممنون

امیـرحسین
دوشنبه 04 خرداد 1388, 23:01 عصر
برای مشخص کردن محصول بین انتخاب شده ها، بهتره که نام فیلد رو براساس نام محصول تعیین کنید مثل این:

<input type="text" name="cout[<?php echo ($line['name']); ?>]" size="5" class="inform" value="1" maxlength="5" dir="ltr">
<input type="checkbox" name="namem[<?php echo ($line['name']); ?>]" value="<?php echo ($line['name']); ?>">
اینجوری می تونید متوجه بشید که مثللا محصول 1 چند بار انتخاب شده.....

rash44
سه شنبه 05 خرداد 1388, 10:37 صبح
برای مشخص کردن محصول بین انتخاب شده ها، بهتره که نام فیلد رو براساس نام محصول تعیین کنید مثل این:

<input type="text" name="cout[<?php echo ($line['name']); ?>]" size="5" class="inform" value="1" maxlength="5" dir="ltr">
<input type="checkbox" name="namem[<?php echo ($line['name']); ?>]" value="<?php echo ($line['name']); ?>">
اینجوری می تونید متوجه بشید که مثللا محصول 1 چند بار انتخاب شده.....

سلام
تغییراتی که گفتین انجام دادم اما اسم و تعداد محصول رو توی صفحه بعد نمایش نمی داد

امیـرحسین
سه شنبه 05 خرداد 1388, 19:29 عصر
اگر اسامی رو به روش اول مشخص کنید، آرایه هاتون به این شکل خواهد بود:

$count = Array(1, 2, 3, 4, 5);
$namem = Array("name1", "name2", "name3", "name4", "name5");
که آیتم اول برای اولین مورد تیک خورده است. دومین برای دومین مورد تیک خورده و .....

و در روش دوم آرایه ها به این شکل خواهد بود:

$count = array(
"name1" => 1,
"name2" => 2,
"name3" => 3,
"name4" => 4,
"name5" => 5
)

$namem = array(
"name1" => "name1",
"name2" => "name2",
"name3" => "name3",
"name4" => "name4",
"name5" => "name5"
)
برای نمایش مقادیر آرایه ها، می تونید توسط تابع print_r شکل آرایه رو مشاهده کنید و حلقه مناسب با چیدمان آرایه رو انتخاب کنید.

rash44
چهارشنبه 06 خرداد 1388, 12:41 عصر
اگر اسامی رو به روش اول مشخص کنید، آرایه هاتون به این شکل خواهد بود:

$count = Array(1, 2, 3, 4, 5);
$namem = Array("name1", "name2", "name3", "name4", "name5");
که آیتم اول برای اولین مورد تیک خورده است. دومین برای دومین مورد تیک خورده و .....

و در روش دوم آرایه ها به این شکل خواهد بود:

$count = array(
"name1" => 1,
"name2" => 2,
"name3" => 3,
"name4" => 4,
"name5" => 5
)

$namem = array(
"name1" => "name1",
"name2" => "name2",
"name3" => "name3",
"name4" => "name4",
"name5" => "name5"
)
برای نمایش مقادیر آرایه ها، می تونید توسط تابع print_r شکل آرایه رو مشاهده کنید و حلقه مناسب با چیدمان آرایه رو انتخاب کنید.


سلام

برای اینکه مشکل حل بشه آرایه رو بصورت اندیس عددی یا انجمنی استفاده کنم ؟

امیـرحسین
پنج شنبه 07 خرداد 1388, 14:19 عصر
انجمنی ایندکس کنید، می تونید از روی ایندکس راحت متوجه بشید که متعلق به کدوم محصول بوده.