PDA

View Full Version : سوال: ليستي از checkboxها



Spring_64
یک شنبه 13 تیر 1389, 18:49 عصر
سلام
من در قسمت admin يه جدول دارم كه ليست كاربران رو نشون ميده، در كنار اسم هر كاربر يه check box هست كه مدير ميتونه با انتخاب اونا اعمال مثل ويرايش رو انجام بده.
حالا مشكل من خوندن گروهي اين چك باكس هاست ضمن اينكه با ارايه نمي دونم چه جوري بايد id رو يگيرم.ممنون ميشم كمكم كنيد.

mohkami
یک شنبه 13 تیر 1389, 20:33 عصر
با مثالی امیدوارم متوجه کار با آرایه ای از checkbox بشید.
فرمی به شکل مقابل داریم:


<form id="form1" name="form1" method="post" action="a.php">
<input type="checkbox" name="checkbox[]" id="1" value="Avvalin" />
<input type="checkbox" name="checkbox[]" id="2" value="Dovvomin" />
<input type="checkbox" name="checkbox[]" id="3" value="Sevvomin"/>
<input type="submit" name="button" id="button" value="Submit" />
</form>
در صفحه a.php کدهای زیر را خواهیم داشت:


<body>
<?php
foreach($_POST['checkbox'] as $andis=>$meghdar)
echo "Andis:".$andis." Meghdar:".$meghdar."<br/>";
?>
</body>
زمانی که همه checkbox ها تیک داشته باشند خروجی به شکل زیر خواهد بود.


Andis:0 Meghdar:Avvalin
Andis:1 Meghdar:Dovvomin
Andis:2 Meghdar:Sevvomin

امیـرحسین
یک شنبه 13 تیر 1389, 22:42 عصر
اینجوری هم میتونید داشته باشید:
<input type="checkbox" name="checkbox[1]" id="1" value="Avvalin" />
<input type="checkbox" name="checkbox[10]" id="10" value="Dahomin" />
<input type="checkbox" name="checkbox[2]" id="2" value="Dovvomin" />
<input type="checkbox" name="checkbox[3]" id="3" value="Sevvomin"/>
و در PHP براحتی index رو استفاده کنید:
echo 'This is 10th: ' . $_POST['checkbox'][10];

Spring_64
دوشنبه 14 تیر 1389, 09:03 صبح
جدول من به صورت پويا از بانك پر ميشه يكي از خونه هاش رو اينجوري گذاشتم:

echo '<td align=\"center\" style=\"width: 50px\"><input type="checkbox" name="checkbox[]" id=$row[0] />'.$j.'</td>';

جلوي id،فيلد idر كاربر در بانك قرار ميگيره
در ضمن از حلقه foreach هم اين warnning رو ازم ميگيره:
Invalid argument supplied for foreach()

Reza1607
دوشنبه 14 تیر 1389, 09:26 صبح
جدول من به صورت پويا از بانك پر ميشه يكي از خونه هاش رو اينجوري گذاشتم:

echo '<td align=\"center\" style=\"width: 50px\"><input type="checkbox" name="checkbox[]" id=$row[0] />'.$j.'</td>';

جلوي id،فيلد idر كاربر در بانك قرار ميگيره
در ضمن از حلقه foreach هم اين warnning رو ازم ميگيره:
Invalid argument supplied for foreach()

اگه امکانش هست کد حلقه رو اینجا بزارید
در ضمن توصیه می کنم که مقدار $row[0] رو برای value بذارید نه برای id

Spring_64
دوشنبه 14 تیر 1389, 10:05 صبح
اگه منظورتون حلقه foreach هست من از همونيكه دوستان تو پستهاي قبل گفتن استفاده كردم.
مشكل من اينه كه چه جوري اين id ها رو كه ممكنه هر دفعه تعدادشون متفاوت باشه بگيرم و با زدن دكمه حذف،اونا رو حذف كنم.

Reza1607
دوشنبه 14 تیر 1389, 10:46 صبح
اگه منظورتون حلقه foreach هست من از همونيكه دوستان تو پستهاي قبل گفتن استفاده كردم.
مشكل من اينه كه چه جوري اين id ها رو كه ممكنه هر دفعه تعدادشون متفاوت باشه بگيرم و با زدن دكمه حذف،اونا رو حذف كنم.

من براتون یک کد نوشتم امیدوارم بتونید ازش استفاده کنید
اول شما با این کد فرمتون رو طراحی می کنید(من فرض گرفتم که شما اطلاعات رو قبلا از بانک گرفته اید ونتیجه رو داخل متغیر $result ریخته اید):


<form action='' method='post'>
<table>
<tr>
<td>row</td>
<td></td>
<td>name</td>
</tr>
<?php
$i=0;
while($row=mysql_fetch_array($result)){
$i++;
echo "<tr>
<td>{$i}</td>
<td><input type='checkbox' name='chk[]' value='{$row['id']}' /></td>
<td>{$row['name']}</td>
</tr>";
}
if($i==0) echo "<tr>
<td colspan='3' align='center'>موردي يافت نشد.</td>
</tr>";
>?
</table>
<?php
if(isset($_POST['btn'])){
foreach($_POST['chk'] as $key=>$value){ //$key=انديس $value=مقدار آي دي شما که به چک باکس نسبت داده ايد
$query="DELETE FROM tbl WHERE id={$value}"; //براي حذف کردن
mysql_query($query,$conn) or die(mysql_error());
}
}
?>
</form>

mohkami
دوشنبه 14 تیر 1389, 10:49 صبح
جدول من به صورت پويا از بانك پر ميشه يكي از خونه هاش رو اينجوري گذاشتم:


echo '<td align=\"center\" style=\"width: 50px\"><input type="checkbox" name="checkbox[]" id=$row[0] />'.$j.'</td>';
جلوي id،فيلد idر كاربر در بانك قرار ميگيره
در ضمن از حلقه foreach هم اين warnning رو ازم ميگيره:
Invalid argument supplied for foreach()

1)
شما در این قسمت:

echo '<td ... id=$row[0] ... ';
زمانی که شما از ' استفاده میکنید $row[0] بهمین شکل نمایش داده میشود و نه مقدار واقعی اون.
برای این کار باید مثل '.$j.' همین کار رو برای اون هم انجام بدید چون اینها
متغیرهایی در کد شما هستند.

2)
مهم نیست که id شما برای این تگ input چی باشه (مگر اینکه از جاواسکریپت بخواید استفاده کنید) مهم name اون هست که توی صفحه دیگه ازش استفاده میشه،پس شما اگر id اون رو هم چیزی نذارید مشکلی پیش نمیاد.

3)
foreach رو کجا و چجوری استفاده کردید؟

Ali_Sedaghat
یک شنبه 20 تیر 1389, 17:58 عصر
دوست عزیز
من هم این مشکل را داشتم ولی تونستم مشکلم را حل کنم.
اگه خواستی بهم پیام بده تا راهنماییت کنم
با تقدیم احترام
صداقت