POST isteği açılan seçenek etiket almak nasıl?

2 Cevap

Ben bir açılır menü doldurur bu dizi var. Anahtar benim veritabanı anahtarı ve değeri karşılık gelen veritabanı değerdir. Ben yaşıyorum sorun ben formu POST, ben yayınlanmıştır sayısal değeri yerine açılan listesinde dize değerini alıyorum olmasıdır. Ben dize almak için veritabanını sorgulamak ama ben zaten bir dizide hem değerlere sahip olarak bunu yapmanın daha iyi bir yolu olmalı sahip olabilir. Dizi çok boyutlu çünkü ben array_search kullanamazsınız. Birisi bir el sunmak lütfen miyim?

Teşekkürler

foreach($dd as $k=>$v)
{
	echo'<option value="'.$v['ace_id'].'">'.$v['arua'].'</option>';
}

2 Cevap

HTML input alanları yalnızca için name-value çiftleri gönderir (bu da select, textarea ve button içerir) sunucu tarafında (name belirtilen ve value attribues edilmiş olarak). Onlar not bunu boyunca herhangi bir metinsel gösterimi gönderme yapar.

Zaten (bunları basılmış olurdu başka nasıl?) Önceden sunucu tarafında metin ve etiketleri biliyorum, istek parametreleri onlara sahip hiçbir nokta kesinlikle yok.

Bunu çeşitli yollarla bu "sorun" çözebilir:

  1. Adil değil seçenek etiket olarak seçeneğiyle value niteliği, istenilen değerini belirtin.
  2. Geri seçenek etiketi geçer gizli bir giriş alanı (s) ekleyebilirsiniz.
  3. Bu anahtar-değer çiftleri ile sunucu tarafı bellekte bir global dizi koruyun.
  4. DB değerini getir.
  5. Hiçbir şey yapmayın. Çoğu durumda aslında sadece akıllı kod yazma, onlara ihtiyacım yok.

Update: Buraya (isset ve htmlspecialchars gibi sanitity kontroller olmadan, ama bu size kalmış) bir temel örnek:

$selected = $_POST['dropdownname'];

foreach ($options as $value => $label) {
    echo '<option value="' . $value . '"' . ($value == $selected ? ' selected' : '') .  '>' . $label . '</option>';
}

Yerine anahtar açılır metin adını istiyorsanız, o zaman "" = değer kısmını koymak. Her iki istiyorsanız, o zaman hem koymak ve bunun üzerine bir virgül ve çalışma bölünmüş () ile onları ayırmak.