2011-03-03 29 views
6

Birden çok onay kutusunun değerlerini almanın ve bunları veritabanında saklamanın kolay bir yolu var mı?Onay kutusundaki tüm değerleri aldınız mı?

<?php 
if(isset($_POST['go'])){ 
    $fruit = $_POST['fruit'].","; 
    echo $fruit; 
    // if you selected apple and grapefruit it would display apple,grapefruit 
} 
?> 
<form method="post"> 
Select your favorite fruit:<br /> 
<input type="checkbox" name="fruit" value="apple" id="apple" /><label for="apple">Apple</label><br /> 
<input type="checkbox" name="fruit" value="pinapple" id="pinapple" /><label for="pinapple">Pinapple</label><br /> 
<input type="checkbox" name="fruit" value="grapefruit" id="grapefruit" /><label for="grapefruit">Grapefruit</label><br /> 
<input type="submit" name="go" /> 
</form> 
+1

değiştirmek "name =" meyve "için" name = "meyve []", kaldırmak '$ fruit = $ _POST ...', 'echo $ meyve', 'echo implode (', ') $ _POST ['fruit']) – acm

+0

onay kutularını adlandırın "name = fruit []" böylece bir diziye gönderilir – Michael

cevap

23

Onay kutularına aynı adı veriyorsanız, [] ile biten, değerler bir dizi olarak döndürülür. PHP'de Sonra

<input type="checkbox" name="fruit[]" value="apple" /> 
<input type="checkbox" name="fruit[]" value="grapefruit" /> 

...

if(isset($_POST['fruit']) && is_array($_POST['fruit'])) { 
    foreach($_POST['fruit'] as $fruit) { 
     // eg. "I have a grapefruit!" 
     echo "I have a {$fruit}!"; 
     // -- insert into database call might go here 
    } 

    // eg. "apple, grapefruit" 
    $fruitList = implode(', ', $_POST['fruit']); 
    // -- insert into database call (for fruitList) might go here. 
} 

PS. lütfen bu hatayı, "elimde bir elma var" diye haykırmış gibi görünen açık bir hatayı affedin ... "a" kelimesini ne zaman kullanacağını ve "ne" ne zaman kullanılacağını belirleyecek kadar akıllı bir örnek yapmayı düşünmedim: P böyle

5

adı girişi:

<input type="checkbox" name="fruit[]" value="apple" id="apple" /><label for="apple">Apple</label><br /> 
<input type="checkbox" name="fruit[]" value="pinapple" id="pinapple" /><label for="pinapple">Pinapple</label><br /> 

Sonra $ _POST yineleme [ 'meyve']:

if(isset($_POST['fruit']) && !empty($_POST['fruit'])) 
    foreach($_POST['fruit'] as $fruit) echo $fruit; 
1

... başka çözümler üzerine eklemek için

patlayabilir ve patlayabilir PHP dizilerinizi bir dizi virgülle ayrılmış listeye dönüştürmek için kullanılır.

$valueToStoreInDB = implode(",",$_POST['fruit']); 
$fruitAsAnArrayAgain[] = explode(",",$dbvalue); 

Eğer virgülle ayrılmış listesi hazırladıktan sonra MySQL onay kutularını temsil etmek için iyi bir veri türü SET olacağını ve haklı ekinizin deyimi içine virgülle ayrılmış listesini yapıştırabilirsiniz.

İlgili konular