PHP birden fazla radyo düğmeleri

3 Cevap php

nasıl ben sayfadaki tüm radyo düğmeleri işleyebilir?

<input type="radio" name="radio_1" value="some" />
<input type="radio" name="radio_1" value="some other" />

<input type="radio" name="radio_2" value="some" />
<input type="radio" name="radio_2" value="some other" />

Bu düğmeler yüzden radyo düğmeleri adını (ve aynı zamanda düğmelerin sayısını) bilemezsiniz dinamik eklenecektir. Bir döngü ya da böyle bir şey için, tüm radyo değerleri almak için bir yolu var mı? teşekkürler

3 Cevap

Bir foreach döngü kullanmak

<?php
foreach ( $_POST as $key => $val )
    echo "$key -> $val\n";
?>

$ Anahtar seçili seçeneği ve $ val iyi değeri adı olacaktır.

Tarayıcı sadece HTTP-biçimlendirilmiş form verileri için tüm giriş değişecek yana, bir metin kutusu veya diğer girişine karşı bir radyo düğmesini hangi verilerin söylemek mümkün olmayacaktır.

Adlandırma kuralı sizin örnekte olduğu gibi aynı ise, sadece döngü bir değer bulmuyorum sonu:

<?
  for ($idx = 1; $idx <= 1000; $idx++) {
    if (isset($_REQUEST["radio_$idx"])) {
      // handle value
    }
  }
?>

Form dinamik olarak oluşturulur ise EDIT Alternatif olarak, bu formdaki gizli bir alan olarak oluşturulan radyo düğmelerinin sayısını yazabilirsiniz.

Eğer üretiliyor formunu değiştirmek mümkün iseniz, sizin için bakmak istiyorum tüm radyo düğmeleri bir listesini sağlanan gizli bir giriş yazabilirsiniz. Eğer radyo düğmeleri yazarken olduğu gibi, sadece yaptığınız tüm isimleri bir yarı-kolon-ayrılmış listesini yapın. Ne zaman yapılır, gizli bir giriş olduğunu yazmak. Böyle bir şey:

Kaynak formda:

<input type="hidden" name="radio_button_list" value="some_value;other_value" />

Sonra işleyicisi:

<?
  $list = explode(';', $_REQUEST['radio_button_list']);
  foreach ($list as $name) {
    $value = $_REQUEST[$name];
    // handle name & value
  }
?>

jheddings 'örnek tüm diyor. Her gruptan sadece seçilen bir - Ancak, all düğmeleri adları / değerlerini almak asla. Tam anlamıyla all değerler gerekiyorsa, Javascript kullanmak zorunda olacak.