2009-12-22 11 views
24

PHP'nin yalnızca onaylanmış onay kutularının değerlerini döndürdüğü görülüyor. Yalnızca onaylanmış onay kutularının değerleri değil, onay kutularının bir listesini görmek istiyorum. Kontrol edilmeyen kutulardaki değişkenleri tespit etmenin bir yolu var mı? Ayarları güncellemek için mümkün istiyorum çünkü HTML'den PHP'ye işaretlenmemiş olsa bile tüm onay kutusu değişkenlerini nasıl alabilirim?

sordum. Örneğin, halihazırda kontrol edilen birkaç seçeneğim var, ancak bir kullanıcı bir seçeneğin işaretini kaldırmaya karar verirse, işaretlenmemiş değeri bilmem gerekiyor, böylece devre dışı bırakma seçeneğini güncelleyebilirim.

+1

Hmm, sen kontrol edilen dayalı olmayan kontrol olanlardır olduğunu bilmek mümkün olmamalı? –

cevap

57

Bu soruna kendim girdim. Aynı ada sahip bir çift hidden alanı ekleyerek çözdüm. Tarayıcı bu bilgiyi gönderdiğinde, ikinci alan birinciyi geçersiz kılar (bu yüzden hidden alanının önce geldiğinden emin olun). checkbox işaretli değilse

<input type="hidden" name="foo" value=""> 
<input type="checkbox" name="foo" value="bar"> 

elde edersiniz:

$_REQUEST[ 'foo' ] == "" 

checkbox size işaretlenirse olsun:

$_REQUEST[ 'foo' ] == "bar" 
+0

Vay! Harika bir çözüm! Herkese teşekkürler. – netrox

+0

Gerçekten akıllı bir fikir! +1 –

+2

İstemcinin uygulanmasına çok bağlıdır. –

0

Saf PHP uygulaması Gerçi jQuery/AJAX kullanarak deneyebilirsiniz, mümkün görünmüyor.

2

Bu PHP'de tamamen yapılabilecek bir şey değildir.

Tarayıcılar yalnızca işaretli kutular hakkında bilgi alırlar, işaretlenmemiş onay kutuları hakkında bilgi göndermek isterseniz, formda gizli alanlar eklemeniz ve bunları yönetmek için javascript kullanmanız gerekir.

0

, sen denetlemek istediğiniz bir 3 onay kutularını olduğunu varsayalım ve update_settings, onay kutusu adını birinci argüman olarak ve ikincisi olarak bir bool değerini (etkin veya değil) alan fonksiyonlarınızın adıdır.

aşağıdaki pasajı ele alalım: işe yarayacak

$checkboxes = array("checkbox1", "checkbox2", "checkbox3"); 
foreach($checkboxes as $checkbox){ 
    $checked = isset($_POST[$checkbox]); 
    update_settings($checkbox, $checked); 
} 

Althouth Peter Kovacs çözüm, ben zaten isset kullanarak değişkenlerini kontrol edebilirsiniz çünkü pratik olduğunu sanmıyorum.

1

Bu sorun karşısında kendimi tökezledim ve veritabanındaki tüm değerleri kontrol ederek işaretlenmemiş olarak işaretledim ve sonra yalnızca POST verilerinde olanları yeniden kontrol ettim, bu benim için iyi çalışıyor ama herkesin fincanı olmayabilir. Çay. Tüm onay kutusunu doldurmak mümkün olup olmadığını

İlgili konular