PDA

View Full Version : سوال: ارسال چندين checkbox همزمان



numberone1
شنبه 29 بهمن 1390, 01:33 صبح
درود
يك فرم دارم توي هر سطرش يك چك باكس هست دقيقا مثل ياهو ميل يا جيميل
حالا ميخوام كه فرم و سابميت كنم ممكنه كه چندين checkbox تيك خورده باشه و با متد post ارسال ميشه
اول ميخوام تعدادشونو كه چه تعداد ارسال شده بدونم
دوم هم ميخوام روي هركدو از اون چك باكس ها عمليات انجام بدم. چطور ميتونم از هم تفكيكشون كنم بعد استفاده كنم؟

numberone1
شنبه 29 بهمن 1390, 02:30 صبح
از اين روش استفاده كردم نتيجه نداد ... ارور ميده


if(isset($_POST['submit1'])){
if(!empty($_POST['checkbox'])){
$checkbox[] = ($_POST['checkbox[]']);}
$query = mysql_query("UPDATE `users` SET `username` = '$username' AND `mail` = '$email' WHERE `id` = '$checkbox[]'")

buggen
شنبه 29 بهمن 1390, 03:07 صبح
سلام شما باید تو فرمتون یه چیزی شبیه این داشته باشین


<input type="checkbox" name="checkboxList[]" value="value1">value1</input>
<input type="checkbox" name="checkboxList[]" value="value2">value2</input>
<input type="checkbox" name="checkboxList[]" value="value3">value3</input>
<input type="checkbox" name="checkboxList[]" value="value4">value4</input>


بعد از submit اونایی که تیک خورده رو به شکل زیر بگیرین


$_POST["checkboxList"]

numberone1
شنبه 29 بهمن 1390, 03:11 صبح
<table border="1" cellpadding="5" cellspacing="0">
<tr><td class="off" id="cell<?php echo $cell; ?>">
<input type="checkbox" name="checkbox" value="<?php echo $rows['id']; ?>" onclick="toggle(this,'cell<?php echo $cell; ?>')" id=""><?php echo $rows['username'] .'&nbsp;&nbsp;&nbsp;&nbsp;' .$rows['mail']; ?>
</td></tr>

</table>




if(isset($_POST['submit1'])){
if(!empty($_POST['checkbox'])){
$checkbox = array();
$checkbox = ($_POST['checkbox']);}
$how_many = count($checkbox);
if(!empty($_POST['text'])){
$username = sanitizeString($_POST['text']);
}else{exit('يك نام جديد براي يوزر نيم انتخاب كنيد');}
if(!empty($_POST['text1'])){
$email = sanitizeString($_POST['text1']);
}else{exit('يك نام جديد براي ايميل انتخاب كنيد');}
for ($i=0; $i<$how_many; $i++) {
mysql_query("SET CHARACTER SET utf8");
$query = mysql_query("UPDATE `users` SET `username` = '$username' AND `mail` = '$email' WHERE `id` = '$checkbox[$i]'")or die(mysql_error());
if(mysql_affected_rows() > 0){
echo 'ويرايش نام كاربري و ايميل با موفقيت انجام شد' ; } }

numberone1
شنبه 29 بهمن 1390, 03:13 صبح
كدم اين شكليه
نصف شبي بدجوري رفته رو اعصابم :اشتباه:

buggen
شنبه 29 بهمن 1390, 03:27 صبح
کد رو ویرایش کردم قسمت فرم رو یکبار دیگه ببینید

numberone1
شنبه 29 بهمن 1390, 03:32 صبح
کد رو ویرایش کردم قسمت فرم رو یکبار دیگه ببینید
منظورتون اينه كه از براكت استفاده كنم؟
اينم تست كردم درست نميشه:ناراحت:

buggen
شنبه 29 بهمن 1390, 03:36 صبح
بله
فقط یه نکته کوچیک اینکه
$_POST["checkboxList"] آرایه هست و شما باید روش حلقه بزنید
کد رو تست کردم مشکلی نداشت

numberone1
شنبه 29 بهمن 1390, 03:42 صبح
بله
فقط یه نکته کوچیک اینکه
$_POST["checkboxList"] آرایه هست و شما باید روش حلقه بزنید
کد رو تست کردم مشکلی نداشت
كد منو تست كرديد؟
من همه اينهائي كه شما ميگيد و رعايت كردم توي كدم
ولي هيچ پيغامي توي صفحه چاپ نميشه و كوئري اس كيو ال هم اجرا نميشه
نميدونم مشكل از كجاست

buggen
شنبه 29 بهمن 1390, 03:52 صبح
نه متاسفانه چون الان دیتابیس واسه تست ندارم ولی کد زیر رو که حالت ساده شده مورد شماست رو تست کنید
شما هم کد اصلاح شده رو بزارید تا من ببینم




<?php
if(isset($_POST['submit'])){
foreach ($_POST['checkboxList'] as $checkedItem){
echo $checkedItem."</br>";
}
}
?>

<form method="post">
<input type="checkbox" name="checkboxList[]" value="value1">value1</input>
<input type="checkbox" name="checkboxList[]" value="value2">value2</input>
<input type="checkbox" name="checkboxList[]" value="value3">value3</input>
<input type="checkbox" name="checkboxList[]" value="value4">value4</input>
<input name="submit" type="submit"/>
</form>

numberone1
شنبه 29 بهمن 1390, 03:56 صبح
<table border="1" cellpadding="5" cellspacing="0">
<tr><td class="off" id="cell<?php echo $cell; ?>">
<input type="checkbox" name="checkbox[]" value="<?php echo $rows['id']; ?>" onclick="toggle(this,'cell<?php echo $cell; ?>')" id=""><?php echo $rows['username'] .'&nbsp;&nbsp;&nbsp;&nbsp;' .$rows['mail']; ?>
</td></tr>

</table>

<input type="submit" name="submit1" value="ويرايش ايميل و نام كاربري">

if(isset($_POST['submit1'])){
if(!empty($_POST['checkbox'])){
//$checkbox = array();
print_r ($_POST['checkbox']);
$checkbox = ($_POST['checkbox']);}
$how_many = count($_POST['checkbox']);
if(!empty($_POST['text'])){
$username = sanitizeString($_POST['text']);
}else{exit('يك نام جديد براي يوزر نيم انتخاب كنيد');}
if(!empty($_POST['text1'])){
$email = sanitizeString($_POST['text1']);
}else{exit('يك نام جديد براي ايميل انتخاب كنيد');}
for ($i=0; $i<$how_many; $i++) {
mysql_query("SET CHARACTER SET utf8");
$query = mysql_query("UPDATE `users` SET `username` = '$username' AND `mail` = '$email' WHERE `id` = '$checkbox[$i]'")or die(mysql_error());
if(mysql_affected_rows() > 0){
echo 'ويرايش نام كاربري و ايميل با موفقيت انجام شد' ; }else{echo 'hichi';} }


}

buggen
شنبه 29 بهمن 1390, 04:24 صبح
دوست عزیز تنها اشکالی که من دیدم نبود تگ فرم بود حلا نمی دونم اینجا نذاشتین یا کلا
ولی بعد اون کد کار کرد

numberone1
شنبه 29 بهمن 1390, 04:30 صبح
دوست عزیز تنها اشکالی که من دیدم نبود تگ فرم بود حلا نمی دونم اینجا نذاشتین یا کلا
ولی بعد اون کد کار کرد
تگ فرم و اينجا نزاشتم
براي من همچنان كار نميكنه
كوئري آپديت اجرا نميشه:ناراحت:

buggen
شنبه 29 بهمن 1390, 04:34 صبح
یعنی print_r چیزی نشون نمیده؟
سمپلی که من دادم چه طور؟

من یه بررسی دیگه هم کردم ، textfield ها رو اضافه کردم و متود sanitizeString رو هم نداشتم برداشتم تا سر query میومد
مشکل شما سر query هست یا checkbox ؟

numberone1
شنبه 29 بهمن 1390, 12:59 عصر
اين ارور مياد


Notice: Uninitialized string offset: 3 in

buggen
شنبه 29 بهمن 1390, 15:24 عصر
تا اونجایی که فهمیدم این اررور زمانی رخ میده که با یه variable از نوع string مثل آرایه برخورد شه و ایندکس مورد نظر وجود نداشته باشه
مثال


$var ="string";
echo $var[100];


کجا این اررور رو میده خط چند؟
تو متود sanitizeString دقیقا چه کاری انجام شده؟

numberone1
شنبه 29 بهمن 1390, 17:32 عصر
تا اونجایی که فهمیدم این اررور زمانی رخ میده که با یه variable از نوع string مثل آرایه برخورد شه و ایندکس مورد نظر وجود نداشته باشه
مثال


$var ="string";
echo $var[100];


کجا این اررور رو میده خط چند؟
تو متود sanitizeString دقیقا چه کاری انجام شده؟
آقا دستت درد نكنه بلاخره درستش كردم :قلب:
فانكشن sanitizeString هم براي ايزوله كردن ورودي هام ازش استفاده ميكنم