PDA

View Full Version : سوال: اطلاعات دریافتی از یک checkbox رو چگونه میتونم در دیتا بیس ثبت کنم



hamed-php
پنج شنبه 28 اردیبهشت 1391, 17:41 عصر
سلام

اطلاعات دریافتی از یک checkbox رو چگونه میتونم در دیتا بیس ثبت کنم. در واقع یک فرم که حاوی رادیو باتن و چک باکس دارم که چک باکسش رو بصورت آرایه در میارم و حالا میخوام در دیتابیس ذخیره کنم.

اما در مورد چک باکس فقط درایه آخر ذخیره میشود



$w = count($aDoor);

for($i=0; $i < $w; $i++)
{


$sql ="INSERT INTO registerform (`date`,`first_name`,`last_name`,`interview`) VALUES ('".$today."','".$first_name."','".$last_name."','".$aDoor[$i]."')";
}



لطفاً راهنمایی بفرمایید

MMSHFE
پنج شنبه 28 اردیبهشت 1391, 19:34 عصر
کد فرم رو هم میشه بگذارین؟

hamed-php
پنج شنبه 28 اردیبهشت 1391, 20:08 عصر
سلام

ممنون این هم کد فرم


<form name="form1" action="form1.php" method="POST" onsubmit="return ValidateForm()">
<table width="350" border="0" >
<tr>
<td >
با چه افرادی مصاحبه نموده اید<br />
<input type="checkbox" name="aDoor[]" value="A" />a<br />
<input type="checkbox" name="aDoor[]" value="B" />b<br />
<input type="checkbox" name="aDoor[]" value="C" />c<br />
<input type="checkbox" name="aDoor[]" value="D" />d<br />
<input type="checkbox" name="aDoor[]" value="E" />e
<!--<input type="submit" name="formSubmit" value="Submit" />
<input type="checkbox" name="vehicle" value="Car" /> I have a car -->
</td>
</tr>
<tr>
<td><span style="color:#990000">
<input type="submit" name="Submit" value="ارسال اطلاعات">
</span></td>

</tr>
</table>
</form>

MMSHFE
پنج شنبه 28 اردیبهشت 1391, 23:44 عصر
$w = count($aDoor);
$sql = '';
for($i=0; $i < $w; $i++)
{


$sql .= "INSERT INTO registerform (`date`,`first_name`,`last_name`,`interview`) VALUES ('".$today."','".$first_name."','".$last_name."',' ".$aDoor[$i]."');";
}

دوست عزیز، شما هربار sql$ رو تغییر میدین درصورتی که باید کوئری قبلی رو به انتهای کوئری جدید اضافه میکردین و ضمناً بین کوئریها هم ; قرار میدادین. به کدی که گذاشتم دقت کنید تا تفاوتشون رو متوجه بشین. موفق باشید.

hamed-php
شنبه 30 اردیبهشت 1391, 10:27 صبح
سلام

این ارور از چی هست؟




Error: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'INSERT INTO registerform (`date`,`first_name`,`last_name`,`interview`) VALUES ' at line 1


بصورت تکی هم تست کردم چیزی اینزرت نمیکنه البته اینبار ارور سینتکس هم نمیدهد خوشبختانه ولی نمیدونم چرا چیزی ذخیره نمیشود؟:


$w = count($aDoor);
$sql = '';
for($i=0; $i < $w; $i++)
{


$sql .= "INSERT INTO registerform (`interview`) VALUES ('".$aDoor[$i]."');";


}

MMSHFE
یک شنبه 31 اردیبهشت 1391, 00:41 صبح
اینو امتحان کنید:


if(isset($_POST['aDoor']) && is_array($_POST['aDoor'])) {
date_default_timezone_set('Asia/Tehran');
$aDoor = &$_POST['aDoor'];
$today = date('Y-m-d');
$first_name = 'alireza';
$last_name = 'ahmadi';
foreach($aDoor as $door) {
mysql_query("INSERT INTO `registerform` (`date`,`first_name`,`last_name`,`interview`) VALUES ('{$today}','{$first_name}','{$last_name}','{$door }')");
}
}

اگه این کد کار کنه معناش اینه که مشکل از تنظیم نبودن سایر اطلاعات لازم برای کوئری بوده. بعلاوه این کد در هر لحظه یک کوئری اجرا میکنه نه اینکه همه رو بریزه توی یک متغیر و بعد یکجا اجرا کنه. راستی توی فرمتون خبری از first_name و... نبود. این اطلاعات از کجا پر میشه؟

hamed-php
دوشنبه 01 خرداد 1391, 10:25 صبح
سلام

این کد کار میکنه و تمام متغیرها رو ذخیره میکنه


foreach($aDoor as $door) {
$sql=("INSERT INTO `registerform` (`date`,`first_name`,`last_name`,`interview`) VALUES ('{$today}','{$first_name}','{$last_name}','{$door }')");
}

البته بدون درج کل آرایه - فقط آخرین عضو آرایه رو ثبت میکنه
من اطلاعات نام و فامیلی رو هم با همون فرم میفرستم که checkbox رو میفرستم مشکلی از فرم نیست چون اطلاعات ثبت میشه تو دیتابیس
حتی اومدم آرایه ارسالی رو بصورت تک تک داریه هاش اینزرت کردم ([0] تا [4])که در این حالت ثبت میشه اما اگر از فرم ارسالی همه آرایه کامل تیک نخورده باشه اخطار چاپ میشه آندیفاین هست برخی از ورودیها
بنظر شما این راه اصولی هست یا باید با همون حلقه کار کرد؟

MMSHFE
دوشنبه 01 خرداد 1391, 15:02 عصر
با همون حلقه هم میشه کار کرد ولی قبلش باید با isset چک کنید که اون Checkbox تیک خورده یا نه چون اگه تیک نخورده باشه Submit نمیشه و درنتیجه خطای Undefined Index یا Undefined Offset رو دریافت میکنید.

hamed-php
دوشنبه 01 خرداد 1391, 17:09 عصر
سلام

استفاده از یا (or) برای isset در این مورد چطوریه میشه. مثلا میخوام اگر طرف یه چک باکس رو هم فقط تیک زده بود براش پیغام خطا ظاهر نشه یا اگر هیچ کدام رو هم پر نکرده بود



if (isset($aDoor[0]) ){
}