2011-10-04 12 views
15

मैं PHP का उपयोग करके एक फॉर्म बनाने की कोशिश कर रहा हूं और मुझे लगता है कि मुझे जिस चीज की आवश्यकता है, उस पर एक ट्यूटोरियल नहीं मिल रहा है।एकाधिक चेकबॉक्स से POST डेटा प्राप्त करें?

मैं अपने पन्ने पर एक से अधिक चेकबॉक्स विकल्प होता है ...

<li> 
    <label>What service are you enquiring about?</label> 
    <input type="checkbox" value="Static guarding" name="service">Static guarding<br> 
    <input type="checkbox" value="Mobile Patrols" name="service">Mobile Patrols<br> 
    <input type="checkbox" value="Alarm response escorting" name="service">Alarm response escorting<br> 
    <input type="checkbox" value="Alarm response/ Keyholding" name="service">Alarm response/ Keyholding<br> 
    <input type="checkbox" value="Other" name="service">Other<input type="hidden" value="Other" name="service"></span> 
    </li> 

मैं तथापि कैसे POST विधि का उपयोग कर मान सभी चेकबॉक्स इकट्ठा करने के लिए यकीन नहीं है?

अगर मैं

$service = $_POST['service']; 

का उपयोग मैं केवल मिल 'अन्य' service[] बजाय service तरह लौटे

उत्तर

43

का नाम फ़ील्ड, तो आप सरणी के रूप में यह उपयोग करने में सक्षम हो जाएगा। उसके बाद, आप arrays के लिए नियमित रूप से काम करता है आवेदन कर सकते हैं:

  • चेक अगर एक निश्चित मूल्य का चयन किया गया:

    echo implode("\n", $_POST['service']); 
    
    :

    if (in_array("Other", $_POST['service'])) { /* Other was selected */} 
    
  • सभी चयनित विकल्पों के साथ एक भी नई पंक्ति से अलग की गई स्ट्रिंग प्राप्त करें

  • सभी चयनित चेकबॉक्स के माध्यम से लूप:

    foreach ($_POST['service'] as $service) { 
        echo "You selected: $service <br>"; 
    } 
    
-1
<input type="checkbox" value="Other" name="service">Other<input type="hidden" value="Other" name="service"></span> 

आप चेकबॉक्स रूप में एक ही नाम के साथ एक छिपे हुए इनपुट क्षेत्र मिल गया है। "बाद में" फ़ील्ड पहले नाम के समान नाम वाले पिछले फ़ील्ड के मानों को ओवरराइट कर देंगे। इसका मतलब यह है कि ऊपर दिए गए अनुसार आपका फॉर्म हमेशा service=Other सबमिट करेगा।

एचटीएमएल में अपने प्रश्न के वाक्यांश को देखते हुए, ऐसा लगता है कि आप एक रेडियो बटन चाहते हैं, जो एक ही नाम फ़ील्ड के समूह में से केवल एक को चुनने की अनुमति देता है। चेकबॉक्स एक "और" स्थिति हैं, रेडियो बटन "OR"

3

वर्तमान में यह आपके आखिरी छिपे हुए इनपुट को पकड़ रहा है। आपके पास उस छिपे इनपुट क्यों हैं? आप जानकारी इकट्ठा करने के लिए यदि "अन्य" बॉक्स को चेक किया चाहते हैं, तो आप

<input type="text" name="other" style="diplay:none;"/> 

को छिपाने के लिए है और आप जावास्क्रिप्ट के साथ यह दिखाने जब "अन्य" बॉक्स को चेक किया जा सकता है। ऐसा कुछ।

बस नाम विशेषता सेवा []

<li> 
<label>What service are you enquiring about?</label> 
<input type="checkbox" value="Static guarding" name="service[]">Static guarding<br> 
<input type="checkbox" value="Mobile Patrols" name="service[]">Mobile Patrols<br> 
<input type="checkbox" value="Alarm response escorting" name="service[]">Alarm response escorting<br> 
<input type="checkbox" value="Alarm response/ Keyholding" name="service[]">Alarm response/ Keyholding<br> 
<input type="checkbox" value="Other" name="service[]">Other</span> 
</li> 

फिर अपने PHP में आप यह इतना

$service = $_POST['service']; 
echo $service[0]; // Output will be the value of the first selected checkbox 
echo $service[1]; // Output will be the value of the second selected checkbox 
print_r($service); //Output will be an array of values of the selected checkboxes 

आदि की तरह उपयोग कर सकते हैं बनाने के ...

संबंधित मुद्दे