अगर PHP में चेकबॉक्स चेक किया जाता है तो कैसे पढ़ें?


266

अगर PHP में चेकबॉक्स चेक किया जाता है तो कैसे पढ़ें?


8
यह सवाल वास्तव में अर्थ है " था जाँच" (जब प्रपत्र प्रस्तुत की गई थी)। यदि एक चेकबॉक्स की जाँच की जाती है, तो पीएचपी निर्धारित करता है कि तत्व को टॉगल करने के बाद एक अजाक्स कॉल की आवश्यकता होगी।
rybo111

जवाबों:


342

यदि आपका HTML पृष्ठ इस तरह दिखता है:

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

फॉर्म सबमिट करने के बाद आप इसे निम्न के साथ देख सकते हैं:

isset($_POST['test'])

या

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

57
चेकबॉक्स की भी कीमत हो सकती है on, जब वे चेक किए जाते हैं। इसलिए अनुकूलता के लिए यह सिर्फ उपयोग करने के लिए आसान है isset($_POST['checkboxName'])
दामिकिब

13
"ऑन" मान कुछ ब्राउज़रों द्वारा समर्थित किया जा सकता है जब मूल्य विशेषता सेट नहीं की जाती है, लेकिन सामान्य तौर पर मूल्य विशेषता सेट करना और सबमिट पर इसकी जांच करना बेहतर होता है।
m_vitaly

3
यदि बॉक्स की जाँच की जाती है तो क्या 'Value1' बदल जाता है?
मोरालकोड

10
@Developer_ACE जब तक मैं आपको गलत समझ रहा हूं, इस उदाहरण में मान होगा value1यदि चेकबॉक्स चेक किया गया है। यदि इसकी जाँच नहीं की जाती है, $_POST['test']तो बस अस्तित्व में नहीं होगा।
rybo111

104

Zend फ्रेमवर्क चेकबॉक्स पर एक अच्छी हैक का उपयोग करता है, जिसे आप स्वयं भी कर सकते हैं:

जनरेट किया गया प्रत्येक चेकबॉक्स उसी नाम के छिपे हुए क्षेत्र से जुड़ा हुआ है, जिसे चेकबॉक्स से ठीक पहले रखा गया है, और "0" के मान के साथ। फिर यदि आपका चेकबॉक्स मान "1" के रूप में है, तो आपको परिणामी GET या GST में हमेशा '0' या '1' मान मिलेगा

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

मैंने उस पर भी ध्यान दिया, लेकिन मैं इसका उपयोग करना सुरक्षित महसूस करता हूं: Zend फ्रेमवर्क भी करता है!
hpaknia

यह दिलचस्प है। लेकिन क्या एक छोटी सी संभावना है कि उपयोगकर्ता एजेंट अंतिम के बजाय पहला मान जमा कर सकता है, मान लें कि चेकबॉक्स चेक किया गया है?
rybo111 21

@ rybo111, उपयोगकर्ता एजेंट के लिए मुझे ऐसा नहीं लगता है, लेकिन एक कस्टम जावास्क्रिप्ट फॉर्म पार्सर के लिए आपको ध्यान रखना चाहिए।
रेगिलो

क्षमा करें, क्या कोई मुझे समझा सकता है कि यह कैसे काम करता है? मुझे समझ नहीं आया। यदि केवल अंतिम मान हमेशा जमा किया जाता है तो वह छिपा हुआ क्षेत्र क्यों input[type="checkbox"]?
टनिक्स

6
जब चेकबॉक्स अनियंत्रित होता है तो यह पोस्ट में प्रेषित नहीं होता है (इसलिए केवल छिपा हुआ प्रेषित होता है)। जब इसकी जाँच की जाती है तो यह प्रसारित होता है, और छिपे हुए मूल्य को अधिलेखित कर देगा।
21

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)चेक पर काम करने के लिए एक अच्छा है, धन्यवाद
bcag2

42

अपने चेकबॉक्स के लिए अपने HTML की तरह होगा

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

फिर अपना फॉर्म सबमिट करने के बाद आपको चेक करना होगा

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

    // Checkbox is selected
} else {

   // Alternate code
}

मान लें कि check1आपका चेकबॉक्स नाम होना चाहिए। और यदि आपका फॉर्म सबमिट करने का तरीका है, GETतो आपको $_GETचर जैसे चेक करने की आवश्यकता है

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

   // Checkbox is selected
} 


6

मैं कई वर्षों से इस ट्रिक का उपयोग कर रहा हूं और यह PHP और डेटाबेस के साथ उपयोग करते समय चेक / अनियंत्रित चेकबॉक्स स्थिति के लिए पूरी तरह से बिना किसी समस्या के काम करता है।

HTML कोड: (जोड़ें पृष्ठ के लिए)

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

संकेत: "चेकबॉक्स" को हटा दें यदि आप इसे डिफ़ॉल्ट रूप से अनियंत्रित दिखाना चाहते हैं

HTML कोड: (संपादित पृष्ठ के लिए)

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

PHP कोड: (पृष्ठों को जोड़ने / संपादित करने के लिए उपयोग करें)

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

संकेत: उपयोगकर्ता द्वारा जाँच किए जाने तक हमेशा रिक्त मान रहेगा। इसलिए, हमारे पास पहले से ही PHP कोड है, इसे पकड़ने के लिए और मान को 0. पर रखें, फिर बस डेटाबेस के लिए $ स्थिति चर का उपयोग करें।


1
यह शुद्ध सरल php में ऐसा करने के लिए वास्तव में अच्छा रूप है। लेकिन ध्यान दें कि चेकबॉक्स का मान तब होता है जब यह जांचा जाता है कि यह एक मौजूदा मूल्य पर सक्रिय है या नहीं।
एल्विस टेक्नोलॉजीज 5

4

जाँचने के लिए कि क्या कोई चेकबॉक्स खाली है ()

जब फॉर्म जमा किया जाता है, तो चेकबॉक्स हमेशा सेट किया जाएगा, क्योंकि सभी POST चर फॉर्म के साथ भेजे जाएंगे।

जाँच करें कि क्या चेकबॉक्स को निम्न के साथ चेक किया गया है:

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

3
यदि चेकबॉक्स अनियंत्रित है तो इसे पोस्ट नहीं किया जाएगा, इसलिए यह अब हमेशा सेट किया जाएगा।
वेसम एल महदी

^ नहीं * हमेशा सेट
कोडेनी

3

आप अपने फॉर्म की कार्रवाई के आधार पर $ _POST या $ _GET सरणी में सेट किए जा रहे और गैर-खाली के रूप में संबंधित मूल्य की जांच कर सकते हैं।

अर्थात: name"परीक्षण" का एक POST फ़ॉर्म के साथ (यानी:, <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 पर सेट करना होगा।

उदाहरण PHP है लेकिन हर चीज के लिए लागू होता है।

मज़े करो :)


2

आप इसे शॉर्ट के साथ कर सकते हैं यदि:

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

या नए PHP7 के साथ 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 अन्य उत्तर दे रहा है।
स्टीफन राउच

यह अच्छा है कि आप अपने राज्य को बनाए रखने के लिए चेकबॉक्स की आवश्यकता को पहचानें। हालाँकि, ऐसा करने के लिए आपका कोड सही नहीं है।
वर्न जेन्सन

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>

क्या आप यहाँ अपना लक्ष्य स्पष्ट कर सकते हैं?
एल्विस टेक्नोलॉजीज 5

0

बीएस 3 में आप डाल सकते हैं

  <?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

Wordpress का checked()कार्य है। संदर्भ: https://developer.wordpress.org/reference/functions/checked/

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

विवरण पहले दो तर्कों की तुलना करता है और यदि समान अंक जाँच के रूप में

पैरामीटर्स $ की जाँच की (मिश्रित) (आवश्यक) तुलना करने के लिए मूल्यों में से एक

$ वर्तमान (मिश्रित) (वैकल्पिक) (सच) अन्य मूल्य की तुलना करने के लिए यदि केवल सही डिफ़ॉल्ट मान नहीं: सच

$ प्रतिध्वनि (बूल) (वैकल्पिक) चाहे गूंज हो या बस स्ट्रिंग को लौटाने के लिए डिफ़ॉल्ट मान: सच

# रीटर्न (स्ट्रिंग) html विशेषता या खाली स्ट्रिंग लौटाएं


-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']);
} 

?>

ढेर अतिप्रवाह में आपका स्वागत है! हालांकि यह कोड स्निपेट समस्या को हल कर सकता है, यह इस बात की व्याख्या नहीं करता है कि यह प्रश्न का उत्तर क्यों या कैसे देता है। कृपया अपने कोड के लिए एक स्पष्टीकरण शामिल करें , क्योंकि यह वास्तव में आपके पोस्ट की गुणवत्ता में सुधार करने में मदद करता है। याद रखें कि आप भविष्य में पाठकों के लिए प्रश्न का उत्तर दे रहे हैं, और उन लोगों को आपके कोड सुझाव के कारणों का पता नहीं चल सकता है। ध्वजवाहक / समीक्षक: कोड-केवल इस तरह के उत्तर के लिए, डाउनवोट, हटाएं नहीं!
स्कॉट वेल्डन
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.