PHP form işleme - değişken İsim / ID var alanındaki metin yakalamak için nasıl

3 Cevap php

Ben bir açılan olarak veritabanından çekilen bir alanı olan bir form var. Ben açılan seçilen metni almak gerekiyor ama ben alan kimliği ne olacağını önceden bilmiyorum.

This is basically just a form that has already been generated. Ben veritabanından bir şey çekmek gerekmez, bu sayfada zaten. Yapmam gereken tüm form bilgilerini almak ve bunu, veritabanına hiçbir yazı e-posta olduğunu.

Ben kimliği dayalı diğer alanlar için _REQUEST nasıl biliyorum ama bunu nasıl emin değilim. Kimliği değişir. Bu gibi ID = 1, ID-2 olabilir,

Kimliği "ID [*]" veya benzer bir şey gibi _REQUEST form öğesi: Ben böyle bir şey yapmak gerekiyor.

Kurtlar Vadisi Pusu için herhangi bir öneri veya bağlantıları?

Burada açılan sayfada kılan ne bir çift örnekleri şunlardır:

<div class="wrapperAttribsOptions">
<h4 class="optionName back"><label class="attribsSelect" for="attrib-  1">Model</label></h4>
<div class="back">
<select name="id[1]" id="attrib-1">
    <option value="45">VC3-4C</option>
    <option value="1">VC3-4PG</option>
    <option value="3">VC3-4SG</option>

<div class="wrapperAttribsOptions">
<h4 class="optionName back"><label class="attribsSelect" for="attrib-14">SPK   Model</label></h4>

<div class="back">
<select name="id[14]" id="attrib-14">
    <option value="43">SPK-4</option>
    <option value="44">SPK-8</option>
</select>

TIA

3 Cevap

Parantez [] PHP yayınlanan değerler ile bir dizi değişkeni oluşturmak demek. Yani $_REQUEST['id'] bir dizi olarak olmalıdır. (İkinci olarak, $_REQUEST['id'][14], ilk örnekte $_REQUEST['id'][1]) şeklinde sayısına göre anahtarlı bir değer olmalıdır.

Sadece tek bir değer (Eğer bu değerlerle yapmak için çalışıyoruz ne söylemiyoruz) olacak o zaman sadece diziyi onu değiştirebilirsin.

$value = array_shift($_REQUEST['id']);

Birden çok değer olacaksa, bunlar aracılığıyla döngü yapabilirsiniz:

foreach($_REQUEST['id'] as $number => $value) { ... }

EDIT: Scott Saunders haklı, PHP sizin için otomatik olarak bir dizi oluşturmak olacaktır. Nedense onun kod işe yaramazsa, aşağıda hala (PHP konfigürasyonuna göre farklı olabilir) geçerli olabilir.

En kolay yolu düzenli ifade kullanarak olacaktır:

foreach($_REQUEST as $key => $value)
{
    if(preg_match("/id\[[0-9]*\]/", $key))
    {
        // $key now contains the name, and $value the value.
    }
}

Bu kimliği her zaman sayısal olacaktır üstleniyor.

Orada alanların büyük bir sayıdır veya id değerleri, bilinen olamaz, ben Arda'nın cevabı takip edecek.

Alternatif doğrudan id koleksiyonu sorgulamak için:

$id_1 = $_POST['id'][1];
$id_14 = $_POST['id'][14];

Kendi adına köşeli parantez ile sunucuya gönderilen tüm öğeler bir dizi dönüştürülür. Zaten endeksi belirtilen olması, yapmış gibi, olanları ihtiyaçlarına bağlı olarak daha faydalı olabilir.