PDA

View Full Version : آموزش: درخواست راهنمایی برای ساخت چنین فرمی.



mokhtasatxyz
سه شنبه 18 خرداد 1395, 12:19 عصر
سلام دوستان
تصویر زیر را مشاهده کنید:
140757
چنین صفحه ای میخواهم درست کنم
در این صفحه ابتدا تمامی رکورد های یک سلکت sql در یک جدول نشان داده می شوند که هر ردیف جدول شامل دو ابزار radio button است.
کاربر بسته به شرایط موجود می تواند یا هیچ کدام از ابزار radio button در هر ردیف را انتخاب ننماید و یا radio button مورد نظر در هر ردیف را انتخاب کند.
همچنین یا از ajax استفاده کرد و با انتخاب شدن هر radio button داده مورد نظر در db تغییر کند و با بسته به نوع طراحی و برنامه نویسی دکمه ثبت گذاشته که پس از پایان انتخاب radio button ها دکمه ذخیره زده شود.
یکی از مشکل های من این است که چطور هر radio button را به رکورد خودش مرتبط کنم و دیگری ذخیره صحیح اطلاعات بعد از انتخاب دکمه ثبت.
امیدوارم توانسته باشم منظور سوالم را رسانده باشم.

lord_viper
سه شنبه 18 خرداد 1395, 18:13 عصر
هر رکورد یک id داره وقتی دارید جدول رو میسازین id رو درون name قرار بدید
مثلا اگه 3 رکورد با ایدی های 2و4و5 باشه به این صورت میشه


<form method="post" enctype="multipart/form-data">
<table>
<tr>
<td>اطلاعات رکورد</td>
<td><input type="radio" name="item[2]" value="not" /> ناموجود</td>
<td><input type="radio" name="item[2]" value="fin" /> در حال تمام</td>
</tr>
<tr>
<td>اطلاعات رکورد</td>
<td><input type="radio" name="item[4]" value="not" /> ناموجود</td>
<td><input type="radio" name="item[4]" value="fin" /> در حال تمام</td>
</tr>
<tr>
<td>اطلاعات رکورد</td>
<td><input type="radio" name="item[5]" value="not" /> ناموجود</td>
<td><input type="radio" name="item[5]" value="fin" /> در حال تمام</td>
</tr>
</table>
<input type="submit" name="save" value="send" />
</form>

خب حالا اطلاعات انتخاب شده تو یه ارایه بدست میاد که key هر ایتم برابر id سطر و value هر ایتم برابر رادیو باتن انتخاب شده هست

mokhtasatxyz
چهارشنبه 19 خرداد 1395, 10:01 صبح
از پاسختان ممنون

یه ارایه بدست میاد که key هر ایتم برابر id سطر و value هر ایتم برابر رادیو باتن انتخاب شده هست
میشه یه توضیح و راهنمایی بیشتر در باره نحوه استفاده از ارایه حاصله بدهید.


key هر ایتم برابر id سطر
یعنی چه؟




id رو درون name قرار بدید


در اینجا نام متغییر $_POST[""] حاصله پس از انتخاب دکمه ، دقیقا چه میشه؟

از foreach باید استفاده کرد .درسته؟ چه طور و به چه شکل؟

ممنون و منتظر راهنمایی شما دوستان.

lord_viper
دوشنبه 24 خرداد 1395, 17:38 عصر
مقدار POST_$ برابر یک مقدار ارایه میشه که شما باید forach میتونین به همه اندیسها دسترسی داشته باشید



foreach($_POST['item'] as $key=>$val){
if($val == 'not')
echo "ایتم شماره $key ناموجود<br />";
else
echo "ایتم شماره $key در حال تمام<br />";
}

mokhtasatxyz
پنج شنبه 27 خرداد 1395, 12:32 عصر
از پاسختون ممنون
پاسختان مشکل منو رو با کمی تحقیقات در اینترنت حل کرد و کد های زیر را با آن نوشتم:




if(submit)
{
foreach ( $_REQUEST as $k=>$v)
{
if ( strpos( $k, 'status' ) !== false )
{
$parts = explode( '_', $k );
$id = $parts[1];
$old_status=$parts[2];
if($old_status!=$v)
{
save to DB
}
}
}
}


<form>
موجود<input type="radio" name="<?php echo "status_".$item['id']."_".$item['status']; ?>" value="0" <?php if (!(strcmp($item['status'],0))) {echo "checked=\"checked\"";} ?>/>
<br> در حال اتمام<input type="radio" name="<?php echo "status_".$item['id']."_".$item['status'];?>" value="1" <?php if (!(strcmp($item['status'],1))){echo "checked=\"checked\"";} ?>/>
<br> نا موجود<input type="radio" name="<?php echo "status_".$item['id']."_".$item['status']; ?>" value="2" <?php if (!(strcmp($item['status'],2))) {echo "checked=\"checked\"";} ?> />

<input name="submit" type="submit" value="ثبت">

</form>




سوال:



مقدار POST_$ برابر یک مقدار ارایه میشه که شما باید forach میتونین به همه اندیسها دسترسی داشته باشید

یعنی مقادیر بازگشتی از فرم به صورت یه آرایه است؟ من مقدار بازگشتی یک فرم را با print_r نگاه کرم از چندین آرایه تشکیل شده بود که چندان از آ سر در نیاوردم و تمامی داده های موجود در فرم در این آرایه وجود نداشت.
آیا در اینجا item نام اشیاء موجود در فرم است؟




لطفا بگویید کدی که من نوشته ام چه مشکلاتی دارد؟





حالا یه مشکل با این فرم

من در فرمم به جز سه radio button در هر ردیف یک فیلد text هم در هر ردیف دارم . در این صورت باید چه تغییراتی در کدهایم بدهم که محتوای داده text نیز شناسایی و در جای خودش در db ذخیره شود.

اصلا فرض کنیم در هر ردیف جدول، انواع مختلف اشیاء فرم وجود دارد(حتی از نوع hidden ) در این صورت چطور به مقادیر هر شی در فرم به درستی، دسترسی داشته باشیم؟

ممنون

lord_viper
شنبه 29 خرداد 1395, 10:16 صبح
از پاسختون ممنون
پاسختان مشکل منو رو با کمی تحقیقات در اینترنت حل کرد و کد های زیر را با آن نوشتم:




if(submit)
{
foreach ( $_REQUEST as $k=>$v)
{
if ( strpos( $k, 'status' ) !== false )
{
$parts = explode( '_', $k );
$id = $parts[1];
$old_status=$parts[2];
if($old_status!=$v)
{
save to DB
}
}
}
}


<form>
موجود<input type="radio" name="<?php echo "status_".$item['id']."_".$item['status']; ?>" value="0" <?php if (!(strcmp($item['status'],0))) {echo "checked=\"checked\"";} ?>/>
<br> در حال اتمام<input type="radio" name="<?php echo "status_".$item['id']."_".$item['status'];?>" value="1" <?php if (!(strcmp($item['status'],1))){echo "checked=\"checked\"";} ?>/>
<br> نا موجود<input type="radio" name="<?php echo "status_".$item['id']."_".$item['status']; ?>" value="2" <?php if (!(strcmp($item['status'],2))) {echo "checked=\"checked\"";} ?> />

<input name="submit" type="submit" value="ثبت">

</form>




سوال:

یعنی مقادیر بازگشتی از فرم به صورت یه آرایه است؟ من مقدار بازگشتی یک فرم را با print_r نگاه کرم از چندین آرایه تشکیل شده بود که چندان از آ سر در نیاوردم و تمامی داده های موجود در فرم در این آرایه وجود نداشت.
آیا در اینجا item نام اشیاء موجود در فرم است؟


مقدار بازگشتی از فورم به صورت ارایه هست
وقتی جلوی name یک المان [] قرار میدیم یعنی فورم با اون به صورت یک ارایه برخورد میکنه برای تمام دادها باید یک مقدار پیشفرض رو تیک بزنید مثلا رادیو موجود رو checked کنید


لطفا بگویید کدی که من نوشته ام چه مشکلاتی دارد؟

اول اینکه برای چک کردن وجود یا عدم وجود از تابع isset استفاده کنید
یک اسم ثابت بدین که راحت بشه با مقایسه پیداش کرد نه اینکه از توابع strpos و strcmp استفاده کنید
برای قرار دادن checked بجای if معمولی از if معروف به ternary استفاده کنید
https://davidwalsh.name/php-shorthand-if-else-ternary-operators


حالا یه مشکل با این فرم

من در فرمم به جز سه radio button در هر ردیف یک فیلد text هم در هر ردیف دارم . در این صورت باید چه تغییراتی در کدهایم بدهم که محتوای داده text نیز شناسایی و در جای خودش در db ذخیره شود.

اصلا فرض کنیم در هر ردیف جدول، انواع مختلف اشیاء فرم وجود دارد(حتی از نوع hidden ) در این صورت چطور به مقادیر هر شی در فرم به درستی، دسترسی داشته باشیم؟

ممنون
برای فیلدهای text هم [id] هر ردیف از دیتابیس رو قرار بدید تا توی یک حلقه بتونین دسترسی داشته باش

لینکهای زیر شما رو بیشتر راهنمایی میکنه
http://stackoverflow.com/questions/3314567/how-to-get-form-input-array-into-php-array
http://php.net/manual/en/faq.html.php
اینم کلیدی که میتونین تو گوگل جستجو کنید
php array of html form element