• 2 رای - 4.5 میانگین
  • 1
  • 2
  • 3
  • 4
  • 5
یک سئوال ساده : چگونگی کار با Checkbox در PHP
#1
سلام
من یک صفحه در مدیریت سایتم دارم که دوره ها رو فعال یا غیر فعال می کنم از دیتا بیس می خونم اگر t بود تیک میخوره و اگر f بود check box تیک نمی خوره.
اینم تکه کد منه.
کد پی‌اچ‌پی:
<?php
if($rows['active']=='f')
  echo 
'<input type="checkbox"  name="active" />';
  else if(
$rows['active']=='t')
  echo 
'<input type="checkbox"  checked="checked" name="active"  onclick="gopage();"/>';
?>

حالا می خوام با برداشتن تیک یا گذاشتن تیک دوره ها رو فعال یا غیر فعال کنم یعنی باید به سمت سرور اطلاعاتی رو بفرستم که فیلد active جدول دوره های دیتا بیس من رو t یا f کنه.
من از فرم استفاده کردم.
نمی دونم چطور میشه برم سمت سرور و اطلاعات رو بخونم و ستون هایی که مثلا تیکش برداشته شده یا تیک گذاشته شده رو تغییر وضعیت بدم.
بدان کوش تا زود دانا شوی
چو دانا شوی زود والا شوی

سایت شخصی
  پاسخ
تشکر شده توسط :
#2
(۱۳۸۷ اسفند ۲۰, ۰۷:۴۴ ب.ظ)kavoshgar63 نوشته: سلام
من یک صفحه در مدیریت سایتم دارم که دوره ها رو فعال یا غیر فعال می کنم از دیتا بیس می خونم اگر t بود تیک میخوره و اگر f بود check box تیک نمی خوره.
اینم تکه کد منه.
کد پی‌اچ‌پی:
<?php
if($rows['active']=='f')
  echo 
'<input type="checkbox"  name="active" />';
  else if(
$rows['active']=='t')
  echo 
'<input type="checkbox"  checked="checked" name="active"  onclick="gopage();"/>';
?>

حالا می خوام با برداشتن تیک یا گذاشتن تیک دوره ها رو فعال یا غیر فعال کنم یعنی باید به سمت سرور اطلاعاتی رو بفرستم که فیلد active جدول دوره های دیتا بیس من رو t یا f کنه.
من از فرم استفاده کردم.
نمی دونم چطور میشه برم سمت سرور و اطلاعات رو بخونم و ستون هایی که مثلا تیکش برداشته شده یا تیک گذاشته شده رو تغییر وضعیت بدم.


يك value هم بهشون اضافه كن. وقتي چك باكس چك خورده باشد value رو ميفرسته وگرنه نميفرسته. تو هم توي سرور ببين كه آيا value دارد يا نه . اگر دارد يعني چك خورده وگرنه يعني كه نه.

کد پی‌اچ‌پی:
<input type=checkbox value=1 name=ch1 checked /> 
  پاسخ
تشکر شده توسط :
#3
این صفحات من به صورت پویا نوشته شده چطور چک کنم.
آخه من برای نام اگر همه رو ch1 بزارم که n تا ch1 تولید میشه سرور چطور تشخیص بده؟
من از آرایه های انجمنی استفاده می کنم آیا برای نام چک باکس خوبه که آی دی دوره ها رو داخل اون بزارم؟
کد پی‌اچ‌پی:
<?php
if($rows['active']=='f')
  echo 
'<input type="checkbox"  name="active" />';
  else if(
$rows['active']=='t')
  echo 
'<input type="checkbox"  checked="checked" name=$rows[periodid']  "/>';
?>
خب اگه بر فرض که این کد من درست باشه با چه دستوری اون رو تو سرور دریافت کنم؟
بدان کوش تا زود دانا شوی
چو دانا شوی زود والا شوی

سایت شخصی
  پاسخ
تشکر شده توسط :
#4
(۱۳۸۷ اسفند ۲۰, ۰۸:۳۸ ب.ظ)kavoshgar63 نوشته: این صفحات من به صورت پویا نوشته شده چطور چک کنم.
آخه من برای نام اگر همه رو ch1 بزارم که n تا ch1 تولید میشه سرور چطور تشخیص بده؟
من از آرایه های انجمنی استفاده می کنم آیا برای نام چک باکس خوبه که آی دی دوره ها رو داخل اون بزارم؟
کد پی‌اچ‌پی:
<?php
if($rows['active']=='f')
  echo 
'<input type="checkbox"  name="active" />';
  else if(
$rows['active']=='t')
  echo 
'<input type="checkbox"  checked="checked" name=$rows[periodid']  "/>';
?>
خب اگه بر فرض که این کد من درست باشه با چه دستوری اون رو تو سرور دریافت کنم؟

به نظر من اول $rows[priodid] رو توي value بگذار و سپس بجاي نام از يك نام با اين روش استفاده كن.

کد پی‌اچ‌پی:
<input type="checkbox" name="ch[]" value=$rows[priodidchecked/>
<
input type="checkbox" name="ch[]" value=$rows[priodid] />
<
input type="checkbox" name="ch[]" value=$rows[priodidchecked/>

<?
php

$checkbox
=$_POST["ch"];

for(
$i=0;$i<count($checkbox);$i++)
{
    
$sql="update table set check=t where priodid=$checkbox[$i] limit 1";
    
$result=mysql_query($sql,$link);
}
?>
  پاسخ
تشکر شده توسط : kavoshgar63
#5
سلام
خب جناب گیلانی
این کدی که زحمت کشیدید و نوشتید فقط اونایی رو ارسال می کنه که تیک دارن.
اگر خونه ای رو بخوام غیر فعال کنم و تیکش رو بردارم اون خونه دیگه توی آرایه فرستاده نمیشه.
البته من کد رو این طوری نوشتم.
کد پی‌اچ‌پی:
<?php 

  
if($rows['active']=='f')
   echo
'<input type="checkbox" name="ch[]" value='.$rows["periodid"].' />';
  if(
$rows['active']=='t')
  echo 
'<input type="checkbox" name="ch[]" value='.$rows["periodid"].' checked/>';
?>
و در مقصد هم این طور نوشتم.
کد پی‌اچ‌پی:
$checkbox=$_POST["ch"];
      
      for(
$i=0;$i<count($checkbox);$i++)
   {
     echo 
$checkbox[$i]."<br>";
     
$sql="update period set active=t where periodid=$checkbox[$i] limit 1";
     
$result=mysql_query($sql,$db);
   } 
و یک مطلب دیگه این خط رو چرا این طور نوشتین؟
کد پی‌اچ‌پی:
<input type="checkbox" name="ch[]" value=$rows[priodidchecked/>
<
input type="checkbox" name="ch[]" value=$rows[priodid] />
<
input type="checkbox" name="ch[]" value=$rows[priodidchecked/> 
بدان کوش تا زود دانا شوی
چو دانا شوی زود والا شوی

سایت شخصی
  پاسخ
تشکر شده توسط :
#6
[ }[/php]
و یک مطلب دیگه این خط رو چرا این طور نوشتین؟
کد پی‌اچ‌پی:
<input type="checkbox" name="ch[]" value=$rows[priodidchecked/>
<
input type="checkbox" name="ch[]" value=$rows[priodid] />
<
input type="checkbox" name="ch[]" value=$rows[priodidchecked/> 
[/quote]

خب. اين رو واسه اين گذاشتم كه اگه داري از while براي خروجي استفاده ميكني (يك مثال) رو نشون بده.

آره فهميدم كه فقط اونايي كه تيك ميخوره رو آپديت ميكنه. ببخشيد كه ناقصه. سعي ميكنم درستش كنم.
  پاسخ
تشکر شده توسط :
#7
با تشکر از شما آقای گیلانی .
جواب سئوال رو تونستم به دست بیارم من اول همه فیلدهای جدول رو f کردم و بعد دونه به دونه اونایی که تیک داشت با دستوراتی که شما دادید t کردم.
خیلی سپاسگزارم.
اینم کد نهایی.
کد پی‌اچ‌پی:
$checkbox=$_POST["ch"];
     
$sql="UPDATE period SET active = 'f' ";
     
$result1=mysql_query($sql,$db);
 
      for(
$i=0;$i<count($checkbox);$i++)
  {
    
$sql="update period set active= 't' where periodid=$checkbox[$i] limit 1";
    
$result=mysql_query($sql,$db);
  } 
این طوری همه فیلدها اول غیر فعال میشن بعد همه اونایی که تیک دارن فقط فعال میشن.
بازم یه دنیا ممنون.
بدان کوش تا زود دانا شوی
چو دانا شوی زود والا شوی

سایت شخصی
  پاسخ
تشکر شده توسط : aligilani1986
#8
(۱۳۸۷ اسفند ۲۱, ۰۳:۰۴ ق.ظ)kavoshgar63 نوشته: با تشکر از شما آقای گیلانی .
جواب سئوال رو تونستم به دست بیارم من اول همه فیلدهای جدول رو f کردم و بعد دونه به دونه اونایی که تیک داشت با دستوراتی که شما دادید t کردم.
خیلی سپاسگزارم.
اینم کد نهایی.
کد پی‌اچ‌پی:
$checkbox=$_POST["ch"];
     
$sql="UPDATE period SET active = 'f' ";
     
$result1=mysql_query($sql,$db);
 
      for(
$i=0;$i<count($checkbox);$i++)
  {
    
$sql="update period set active= 't' where periodid=$checkbox[$i] limit 1";
    
$result=mysql_query($sql,$db);
  } 
این طوری همه فیلدها اول غیر فعال میشن بعد همه اونایی که تیک دارن فقط فعال میشن.
بازم یه دنیا ممنون.

خواهش ميكنم.

خدا رو شكر كه حل شد.
  پاسخ
تشکر شده توسط :


پرش به انجمن:


کاربران در حال بازدید این موضوع: 1 مهمان