যদি একটি চেকবাক্স পিএইচপিতে চেক করা হয় তবে কীভাবে পড়বেন?


266

যদি একটি চেকবাক্স পিএইচপিতে চেক করা হয় তবে কীভাবে পড়বেন?


8
এই প্রশ্নের অর্থ আসলে " পরীক্ষা করা হয়েছিল " (যখন ফর্মটি জমা দেওয়া হয়েছিল)। চেকবক্সটি চেক করা হয়েছে কিনা তা নির্ধারণ করে পিএইচপি উপাদানটি টগল করার পরে একটি অজ্যাক্স কল প্রয়োজন।
rybo111

উত্তর:


342

যদি আপনার এইচটিএমএল পৃষ্ঠাটি দেখতে এমন হয়:

<input type="checkbox" name="test" value="value1">

ফর্মটি জমা দেওয়ার পরে আপনি এটি দিয়ে যাচাই করতে পারেন:

isset($_POST['test'])

অথবা

if ($_POST['test'] == 'value1') ...

57
চেকবক্সগুলি onযখন চেক করা হয় তখন তার মানও থাকতে পারে । সুতরাং সামঞ্জস্যের জন্য এটি কেবল ব্যবহার করা সহজ isset($_POST['checkboxName'])
দামিকিব

13
"মান" মানটি কিছু ব্রাউজার দ্বারা সমর্থিত হতে পারে যখন মান অ্যাট্রিবিউট সেট না করা থাকে তবে সাধারণভাবে মানটি বৈশিষ্ট্য সেট করা এবং জমা দেওয়ার জন্য এটি পরীক্ষা করা ভাল।
এম_ভিতালি

3
বক্সটি চেক করা থাকলে 'মান 1' পরিবর্তন হয়?
মোরালকোড

10
@ ডেভেলপার_এসিই যদি আমি আপনাকে ভুল বোঝে না, value1চেকবক্সটি চেক করা থাকলে এই উদাহরণের মান হবে । যদি এটি চেক না করা হয় $_POST['test']তবে সহজভাবে উপস্থিত থাকত না।
rybo111

104

জেন্ড ফ্রেমওয়ার্ক চেকবক্সগুলিতে একটি দুর্দান্ত হ্যাক ব্যবহার করে, যা আপনি নিজেও করতে পারেন:

উত্পন্ন প্রতিটি চেকবক্স চেকবক্সের ঠিক সামনে রাখা একই নামের একটি লুকানো ক্ষেত্রের সাথে এবং "0" মানের সাথে যুক্ত। তারপরে যদি আপনার চেকবক্সটি "1" মান হিসাবে দেখা যায় তবে আপনি সর্বদা ফলাফল প্রাপ্ত জিইটি বা পোস্টে '0' বা '1' মান পাবেন

<input type="hidden" name="foo" value="0" />
<input type="checkbox" name="foo" value="1"> 

আমি এটি সম্পর্কেও লক্ষ্য করেছি, তবে আমি এটি ব্যবহার করা নিরাপদ বোধ করি: জেন্ড ফ্রেমওয়ার্ক এটিও করে!
hpaknia

এটা মজার. তবে চেকবক্সটি চেক করা আছে ধরে ধরে ইউজার এজেন্ট শেষের পরিবর্তে প্রথম মানটি জমা দিতে পারে এমন কি খুব কম সম্ভাবনা আছে?
rybo111

@ rybo111, ব্যবহারকারী এজেন্টের জন্য আমি এটি মনে করি না, তবে একটি কাস্টম জাভাস্ক্রিপ্ট ফর্ম পার্সারের জন্য আপনার যত্ন নেওয়া উচিত।
রেজিলেরো

দুঃখিত, কেউ আমাকে ব্যাখ্যা করতে পারে কীভাবে এটি কাজ করে? বুঝলাম না। কেন কেবল সেই লুকানো ক্ষেত্র যদি সর্বশেষ মান সর্বদা জমা দেওয়া হয় (তবে input[type="checkbox"]এর)?
টোনিক্স

6
যখন চেকবক্সটি চেক না করা হয় এটি পোস্টে সঞ্চারিত হয় না (কেবলমাত্র লুকানোটিই সঞ্চারিত হয়)। এটি চেক করা হলে এটি সংক্রমণিত হয় এবং লুকানো মানটি ওভাররাইট করে।
রেজিলিও

53

অ্যারে হিসাবে চেকবক্সগুলি ব্যবহার করার সময়:

<input type="checkbox" name="food[]" value="Orange">
<input type="checkbox" name="food[]" value="Apple">

আপনার ব্যবহার করা উচিত in_array():

if(in_array('Orange', $_POST['food'])){
  echo 'Orange was checked!';
}

অ্যারেটি প্রথমে সেট করা আছে তা পরীক্ষা করে দেখুন:

if(isset($_POST['food']) && in_array(...

অ্যারে হিসাবে চেকবক্স এবং foreach ($_POST['food'] as $selected_food)চেক করা একটিতে কাজ করা দুর্দান্ত, ধন্যবাদ
বিসিএজি

42

আপনার চেকবক্সের জন্য আপনার এইচটিএমএল এর মতো হতে দিন

<input type="checkbox" name="check1">

তারপরে আপনার ফর্মটি জমা দেওয়ার পরে আপনার মতো চেক করা দরকার

if (isset($_POST['check1'])) {

    // Checkbox is selected
} else {

   // Alternate code
}

ধরে check1নিলে এটি আপনার চেকবক্সের নাম হওয়া উচিত nd এবং যদি আপনার ফর্ম জমা দেওয়ার পদ্ধতিটি হয় GETতবে আপনার যেমন $_GETভেরিয়েবলগুলি পরীক্ষা করা দরকার

if (isset($_GET['check1'])) {

   // Checkbox is selected
} 


6

আমি বেশ কয়েক বছর ধরে এই কৌশলটি ব্যবহার করে আসছি এবং পিএইচপি এবং ডেটাবেস ব্যবহার করার সময় এটি চেক / চেক করা চেকবক্সের স্থিতির জন্য কোনও সমস্যা ছাড়াই নিখুঁতভাবে কাজ করে।

এইচটিএমএল কোড: (পৃষ্ঠা যুক্ত করার জন্য)

<input name="status" type="checkbox" value="1" checked>

ইঙ্গিত: যদি আপনি এটি ডিফল্টরূপে চেক না করা হিসাবে দেখাতে চান তবে "চেকবক্স" সরান

এইচটিএমএল কোড: (সম্পাদনা পৃষ্ঠার জন্য)

<input name="status" type="checkbox" value="1" 
<?php if ($row['status'] == 1) { echo "checked='checked'"; } ?>>

পিএইচপি কোড: (অ্যাড / সম্পাদনা পৃষ্ঠাগুলির জন্য ব্যবহার করুন)

$status = $_POST['status'];
if ($status == 1) {
$status = 1;
} else {
$status = 0;
}

ইঙ্গিত: ব্যবহারকারীরা এটি পরীক্ষা না করে সর্বদা খালি মূল্য থাকবে। সুতরাং, ইতিমধ্যে এটি ধরার জন্য আমাদের কাছে পিএইচপি কোড রয়েছে অন্যটি মান 0 রাখুন Then


1
খাঁটি সরল পিএইচপি করার জন্য এটি সত্যিই ভাল ফর্ম। তবে লক্ষ্য রাখতে হবে যে একটি চেকবাক্সের মান স্ট্রিং থাকে যখন এটি একটি অলক্ষিত মান সক্রিয় করা হয় যদি তা পরীক্ষা করা হয়।
এলভিস টেকনোলজিস

4

একটি চেকবক্স চেক করা হয়েছে কিনা তা পরীক্ষা করতে খালি () ব্যবহার করুন

ফর্মটি জমা দেওয়ার পরে, চেকবক্সটি সর্বদা সেট হয়ে যাবে কারণ সমস্ত পোস্টের ভেরিয়েবলগুলি ফর্মের সাথে প্রেরণ করা হবে।

নিম্নলিখিত হিসাবে খালি দিয়ে চেকবক্স চেক করা হয়েছে কিনা তা পরীক্ষা করুন:

//Check if checkbox is checked    
if(!empty($_POST['checkbox'])){
 #Checkbox selected code
} else {
 #Checkbox not selected code
}

3
যদি চেকবক্সটি চেক না করা থাকে তবে এটি পোস্ট করা হবে না তাই এটি এখনই সেট হয়ে যাবে।
ওয়াসাম এল মাহডি


3

আপনার ফর্মের ক্রিয়াটির উপর নির্ভর করে আপনি value _POST বা $ _GET অ্যারেতে নির্ধারিত ও খালি নয় হিসাবে সম্পর্কিত মানটি পরীক্ষা করতে পারেন।

অর্থাত: একটি name"পরীক্ষার" ব্যবহার করে একটি পোষ্ট ফর্ম সহ (যেমন: <input type="checkbox" name="test">আপনি ব্যবহার করতে চান:

if(isset($_POST['test']) {
   // The checkbox was enabled...

}

2

isset"ফাংশন" কোনটি অন্তর্নির্মিত তা সম্পর্কে জানুন যদি কোনও ভেরিয়েবল ব্যবহার করা হয়েছে বা সেট করা হয়েছে কিনা তা বিবৃতিতে বিবৃতি ব্যবহার করা যেতে পারে

উদাহরণ:

    if(isset($_POST["testvariabel"]))
     {
       echo "testvariabel has been set!";
     }

2

ঠিক আছে, উপরোক্ত উদাহরণগুলি কেবল তখনই কাজ করে যখন আপনি কোনও মান সন্নিবেশ করতে চান, বিভিন্ন কলামে বিভিন্ন মান আপডেট করার জন্য দরকারী না, তাই আপডেট করার জন্য আমার এখানে ছোট কৌশলটি:


//EMPTY ALL VALUES TO 0 
$queryMU ='UPDATE '.$db->dbprefix().'settings SET menu_news = 0, menu_gallery = 0, menu_events = 0, menu_contact = 0';
            $stmtMU = $db->prepare($queryMU);
            $stmtMU->execute();
if(!empty($_POST['check_menus'])) {
    foreach($_POST['check_menus'] as $checkU) {
try {
//UPDATE only the values checked
    $queryMU ='UPDATE '.$db->dbprefix().'settings SET '.$checkU.'= 1';
            $stmtMU = $db->prepare($queryMU);
            $stmtMU->execute();  
        } catch(PDOException $e) {
          $msg = 'Error: ' . $e->getMessage();}

        }
}
<input type="checkbox" value="menu_news" name="check_menus[]" />
<input type="checkbox" value="menu_gallery" name="check_menus[]" />

....

গোপনীয়তা হ'ল প্রথমে সমস্ত ভ্যালু আপডেট করা হয় (এই ক্ষেত্রে 0 তে), এবং যেহেতু কেবলমাত্র পরীক্ষিত মানগুলি প্রেরণ করবে, তার অর্থ আপনি যা পেয়েছেন তা 1 তে সেট করা উচিত, তাই আপনি যা কিছু সেট করেন তা 1 এ সেট করা থাকে।

উদাহরণ পিএইচপি তবে সমস্ত কিছুর জন্য প্রযোজ্য।

আনন্দ কর :)


2

আপনি সংক্ষেপে এটি করতে পারেন যদি:

$check_value = isset($_POST['my_checkbox_name']) ? 1 : 0;

বা নতুন পিএইচপি 7 সহ Null coalescing operator

$check_value = $_POST['my_checkbox_name'] ?? 0;


1

স্যুইচ অবস্থান ধরে রাখার সাথে একটি নমনীয় বুলিয়ান চেক

<?php

$checked = ($_POST['foo'] == ' checked');

?>

<input type="checkbox" name="foo" value=" checked"<?=$_POST['foo']?>>

1
উত্তর দেওয়ার সময় আপনার উত্তরটি হ'ল কেন তা সম্পর্কে কিছুটা ব্যাখ্যা দেওয়া ভাল । খুব পুরানো পোস্ট 11 টি উত্তর উত্তর দেওয়ার সময় এটি বিশেষত সত্য ।
স্টিফেন রাউচ

চেকবাক্সের স্থিতি ধরে রাখার জন্য আপনার প্রয়োজনীয়তাটি আপনি স্বীকৃত good তবে এটি করার জন্য আপনার কোডটি সঠিক নয়।
ভার্ন জেনসেন

1
<?php

  if (isset($_POST['add'])) {

    $nama      = $_POST['name'];
    $subscribe = isset($_POST['subscribe']) ? $_POST['subscribe'] : "Not Checked";

    echo "Name: {$nama} <br />";
    echo "Subscribe: {$subscribe}";

    echo "<hr />";   

  }

?>

<form action="<?php echo htmlspecialchars($_SERVER["PHP_SELF"]);?>" method="POST" >

  <input type="text" name="name" /> <br />
  <input type="checkbox" name="subscribe" value="news" /> News <br />

  <input type="submit" name="add" value="Save" />

</form>

আপনি এখানে আপনার লক্ষ্য ব্যাখ্যা করতে পারেন?
এলভিস টেকনোলজিস

0

BS3 এ আপনি রাখতে পারেন

  <?php
                  $checked="hola";
                  $exenta = $datosOrdenCompra[0]['exenta'];
                  var_dump($datosOrdenCompra[0]['exenta']);
                  if(isset($datosOrdenCompra[0]['exenta']) and $datosOrdenCompra[0]['exenta'] == 1){

                      $checked="on";

                  }else{
                    $checked="off";
                  }

              ?>
              <input type="checkbox" id="exenta" name="exenta" <?php echo $checked;?> > <span class="label-text"> Exenta</span>

দয়া করে এর ব্যবহারটি নোট করুনisset($datosOrdenCompra[0]['exenta'])


0

ফিল্টার_ইনপুট (INPUT_POST, 'চেকবক্স_নাম', FILTER_DEFAULT, FILTER_FORCE_ARRAY)


0

ওয়ার্ডপ্রেসের checked()ফাংশন রয়েছে। তথ্যসূত্র: https://developer.wordpress.org/references/funitions/checked/

checked( mixed $checked, mixed $current = true, bool $echo = true )

বিবরণ প্রথম দুটি আর্গুমেন্ট এবং যদি পরীক্ষিত হিসাবে অভিন্ন চিহ্ন তুলনা করে

প্যারামিটারগুলি $ পরীক্ষিত (মিশ্রিত) (প্রয়োজনীয়) তুলনা করার মানগুলির মধ্যে একটি

$ বর্তমান (মিশ্র) (ptionচ্ছিক) (সত্য) অন্য মানটি যদি সত্য হয় না তবে তুলনা করার জন্য ডিফল্ট মান: সত্য

cho প্রতিধ্বনি (bool) (ptionচ্ছিক) প্রতিধ্বনি করতে হবে বা কেবল স্ট্রিংটি ফিরিয়ে আনুন ডিফল্ট মান: সত্য

# রিটার্ন (স্ট্রিং) এইচটিএমএল বৈশিষ্ট্য বা খালি স্ট্রিং ফিরে আসুন


-3
<?php

if(isset($_POST['nameCheckbox'])){
    $_SESSION['fr_nameCheckbox'] = true;
}

?>

<input type="checkbox" name="nameCheckbox" 

<?php 

if(isset($_SESSION['fr_nameCheckbox'])){
    echo 'checked'; 
    unset($_SESSION['fr_nameCheckbox']);
} 

?>

স্ট্যাক ওভারফ্লোতে স্বাগতম! যদিও এই কোড স্নিপেট সমস্যার সমাধান করতে পারে, এটি কেন বা কীভাবে প্রশ্নের উত্তর দেয় তা ব্যাখ্যা করে না। আপনার কোডটির জন্য একটি ব্যাখ্যা অন্তর্ভুক্ত করুন , কারণ এটি সত্যিই আপনার পোস্টের মান উন্নত করতে সহায়তা করে। মনে রাখবেন যে আপনি ভবিষ্যতে পাঠকদের জন্য প্রশ্নের উত্তর দিচ্ছেন, এবং সেই লোকেরা আপনার কোড পরামর্শের কারণগুলি জানেন না। ফ্ল্যাগার্স / রিভিউর: এই জাতীয় কোড-উত্তরগুলির জন্য, ডাউনভোট, মুছবেন না!
স্কট ওয়েলডন
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.