Bir onay kutusu amaçlanan verileri tanımak Yapımı

2 Cevap php

Seviye: PHP Öğrenci

Ben bir onay kutusu sorunu ile şaşırıp. Ben isimleri ve benzersiz kimlik numaralarını içeren bir db var.

Bir sorgu kullanarak, öğrencilerin bir seçim çekerek ve bir form üzerinde bir ultra basit HTML tablo bir kullanıcı bunları gösteriyorum. Her satır, bir onay kutusu ile başlar. Yöntem POST. Şimdiye kadar, çok iyi. Benim tablo tür bu gibi görünüyor:

+-----------+----------+----------+
|   SELECT  |    NAME  |    ID    |
+-----------+----------+----------+
|   []      |    John  |    2233  |
+-----------+----------+----------+
|   []      |    Susie |    5577  |
+-----------+----------+----------+

[-SUBMIT-]

Benim sorunum her kaydın benzersiz kimliği ile onay kutusunu ilişkilendirmek yapmak için görünmüyor olabilir. Kullanıcı satırları seçilen ve teslim tıklandığında sonra, $ _POST dizi boş kalır.

Benim başlayanlar kitapların hiçbiri bu özel sorunu başvuru. Onlar bir db satır ile etkileşim söz konusu değildir "normal" onay kutusunu rutinleri geçmesi. Ben de bu adresleri Stackoverflow bir sorun bulamadı. Ayrıca Google çalıştı: onay kutularını malzeme bol, ama bu sorunla ilgili bana yardımcı herhangi bulamadı.

Teşekkürler.

2 Cevap

Düzenleme: form açıklamak gibi daha karmaşık almazsa, bu şekilde basit olarak, Doug Neiner yaklaşımını alır. Bir tablo sütun bir dizi olması muhtemeldir eğer bu yaklaşım doğru.

Bunu bu şekilde yapmak ister:

Numara onay kutularını sırayla (1 ila 100) ve gerçek bir veritabanı kimliği satır sayısını bağlayan gizli bir alan eklemek:

<input type="checkbox" name="row_1" value="checked">`
<input type='hidden' name='row_1_id' value='2233'>`

Başka gizli bir alanda toplam satır sayısını Mağaza

<input type='hidden' name='row_total' value='99'>

Ardından, alan script, 1'den for, bu satır seçili olup olmadığını kontrol edin ve ilişkili veritabanı kimliği almak kullanarak satır toplam sayısına yineleme:

for ($i = 1; $i <= $number_of_rows; $i++)
{
  if ($_POST["row_$i"] == "checked")
   {
     $database_id_unsafe = $_POST["row_{$i}_id"];
 ...

ikincisi, tabii ki, uygun şekilde temizlenmiş ve daha sonra işleme durumunda kaçan edilmesi gerekmektedir.

Sadece böyle bir şey yapın:

<input type="checkbox" name="ids[]" value="2233" /> ... rest of row
<input type="checkbox" name="ids[]" value="5577" /> ... rest of row

Şimdi, PHP, alabilirsiniz ids Bu gibi seçilmiş:

$ids = $_POST['ids'];
if( empty($ids) ) $ids = array();

Bu $ids formu kontrol onay kutularını herhangi olmadan teslim eğer boş bir diziye ayarlar.