PDA

View Full Version : سوال: دریافت داده های پست شده توسط فرم دارای تعداد نامشخصی از چک باکس



phpstudent
سه شنبه 22 شهریور 1390, 14:47 عصر
سلام،
مثال فرضی
دو تا جدول با مشخصات زیر دارم
Sent
id= int(11) -1
date= varchar(255) -2
sent= enum('yes','no') -3
Product
id= int(11) -1
sent_id= int(11)-2
title =varchar(255)-3
price =varchar(50)-4
status= enum('yes','no') -9

سایر اطلاعات:
1- جدول procudt دارای رکورد است که قبلاً در دیتابیس ذخیره شده است.
2- فیلد send_id به صورت پیش فرض صفر ذخیره می شود.
شرح:
می خواهم در هر مرحله (روز) تعدادی از (بستگی به انتخاب کاربر) رکوردهای جدول Product را که Sent_id آنها برابر صفر است را انتخاب نموده و مقدار آن ها را برابر id جدول Sent قرار دهم.
یعنی به عبارت ساده تر کاربر روز سه شنبه 22 شهریور 90 (مثلاً) تمام محصولاتی را که قبلاً ثبت شده است اما ارسال نشده اند، در قالب یک فرم مشاهده نماید و هر کدام از آن ها را که قابلیت ارسال دارند (یک یا چند محصول) انتخاب نموده و دکمه ارسال را کلیک نماید.
نکات:
1- چنانچه کاربر دوباره به فرم مذکور مراجعه نمود نباید محصولاتی که امروز ثبت شده اند نمایش داده شوند.
2- شماره گزارش (id) و تاریخ ارسال (date) در جدول Sent ذخیره شود.
3- مقدار فیلد id جدول Sent در فیلد Sent_id جدول Product ذخیره شود.
راهی که بنده انتخاب نموده ام و به مشکل برخورده ام:
فرمی دارم که در ابتدای آن کوئری زیر را اجرا می کنم


$result=mysql_query('SELECT * FROM Product WHERE sent_id=0');
$row=mysql_fetch_array($result);

فرم نیز به صورت زیر است:



<form name="sent_select" method="post" action="test.php?op=sent_insert" enctype="multicont/form-data">');
$sent_cnt=1;
do
{
echo('<label></label><input type="checkbox" name="prdc_sent" value="'.$ row [id].'" dir="rtl" />'.$ sent _cnt.'&nbsp;عنوان&nbsp;'.$ row ["title "].'<br/>');
$ sent _cnt++;
}
while($row =mysql_fetch_array($result));
echo('<input value="ارسال" type="submit" /><input onclick=document.location.href="?op= sent _list" name="Reset" type="reset" value="بازگشت"/>
</form>


سپس می خوام داده هایی رو که از طریق این فرم پست شده توی مقصد بگیرم و توی یک آرایه بریزم
اما سوالهای من:
1- نمی دونم بعد از این باید چکار کنم؟
2- اصلاً روش من درسته؟
3- روش ساده تر یا بهتری وجود داره؟
اگه اطلاعات کامل نیست در خدمتم.
البته نمی دونم جای مطرح کردن این سوال اینجاست یا تالار MYSQL
در هر صورت پیشاپیش از همکاری شما دوستان سپاسگزارم

sattaryekta
سه شنبه 22 شهریور 1390, 16:45 عصر
سلام
امیدوارم درست متوجه شده باشم
نام input را به prdc_sent[] تغییر بده
و به صورت یک آرایه از $_POST["prdc_sent"] دریافتش کن
جای while را بذار جای do و do را حذف کن
سطر دوم از قطعه کد اول را هم حذف کن

phpstudent
چهارشنبه 23 شهریور 1390, 14:36 عصر
سپاس از پاسخ شما
من هم مشکلم همین جاست:
من دقیقاً باید توی آرایه مقداری که پست شده رو با چه کدی دریافت کنم؟
با
$_POST["prdc_sent"] که نمیشه چون فرم یک یا چند تا ارسال کرده
یعنی اگه دو تا از چک باکس ها تیک بخوره و ارسال بشه
باید اولیش بشه
$_POST["prdc_sent1"]
و دومیش هم بشه
$_POST["prdc_sent2"]
البته تعدادش رو هم محاسبه می کنم و می دونم چند تا
prdc_sent[] از طریق فرم و عنصر
name="prdc_sent[]" برام ارسال شده اما نی دونم چجوری توی آرایه بنویسیم
من آرایه رو اینجوری نوشته ام

$tttt = array ('a' => $_POST["prdc_sent1"], 'b' => $_POST["prdc_sent2"], 'c' => $_POST["prdc_sent3"]);

mehdi4467
چهارشنبه 23 شهریور 1390, 20:36 عصر
سلام
تگ های Input رو اینجوری بنویس:


<form name="sent_select" method="post" action="test.php?op=sent_insert" enctype="multicont/form-data">
<?php
$sent_cnt=1;
do
{
?>
<input type="checkbox" name="prdc_sent<?php echo $sent _cnt; ?>" value="<?php echo $row[id]?>" dir="rtl" />*******</input>
<?php
$sent _cnt++;
}while($row =mysql_fetch_array($result));
?>
<input value="ارسال" type="submit" />
<input onclick=document.location.href="?op= sent _list" name="Reset" type="reset" value="بازگشت"/>
</form>

بعد در موقع ارسال اینطوری بگیرشون:

for($t=1 ; $t<=$max ; $t++)
{
$prdc_sent[$t] = $_POST["prdc_sent".$t];

}

Reza1607
پنج شنبه 24 شهریور 1390, 08:40 صبح
سلام
موقع توليد فرم از اين كد استفاده كن
while($row=mysql_fetch_array($result))
{
echo('<label></label><input type="checkbox" name="prdc_sent[]" value="'.$ row [id].'" dir="rtl" />'.$ sent _cnt.'&nbsp;ﻋﻨﻮﺍﻥ&nbsp;'.$ row ["title "].'');
$ sent _cnt++;
}

بعد موقع دريافت اطلاعات از دستور زير استفاده كنيد

foreach($_POST['prdc_sent'] as $key=>$value){
//دستوراتي رو كه مي خواين انجام بدين اينجا بنويسيد
}