2013-10-24 43 views
0

爲了學習的目的,我在做這個網站,用戶可以選擇一些項目和他想要的單位數量,假設這是最簡單的購物應用程序。帶有複選框和數字類型的HTML表單提交與PHP?

於是,我從數據庫中讀取在目錄中的現有項目:

$queryResult=$mySQL->query("SELECT nombre, precio, id FROM productos"); 

然後,我打印的產品列表:

$queryResult=$mySQL->query("SELECT nombre, precio, id_producto FROM productos"); 
    echo "<form action=\"checkout.php\" method=\"POST\">"; 
    while($datos=$mySQL->fetch_array($queryResult)) 
    { 
     $nombre=$datos['nombre']; 
     $id_producto=$datos['id_producto']; 
     $precio=$datos['precio']; 

     echo "<h1>$nombre</h1>"; 
     echo "<input type=\"checkbox\" name=\"$id_producto\" value=\"on\"> Cantidad: <input type=\"number\" name=\"$id_producto"."Number\""." min=\"1\" max=\"20\" step=\"1\" value=\"1\"><br>"; 
     echo "<h3>Precio: $precio</h3><br>"; 

    } 

    echo "<br>"; 
    echo "<input type=\"submit\" class=\"button\" value=\"Comprar\">"; 
    echo "</form>"; 

他們得到的值從$id_producto的那些,在案件的數字類型輸入我連接"Number",所以他們不會得到相同的名稱。

提交後,我試圖做這樣的事情:

foreach($_POST as $post_key => $post_value){  

    if ($post_value=="on") { 
     $var1 = $_POST['.$post_key."Number".']; 
    } 
} 

所以,如果被選中複選框我檢查其對應的數值。

可以在該循環內執行另一個$ _POST ['somevariable']嗎?
如何連接方括號內的參數?

+0

嘗試更換'$ _ POST [ '$ post_key。 「數」。']'來'$ _ POST [$ post_key。 「編號」]' –

回答

1

你不需要單引號,這是當鍵是一個常量字符串。由於您的關鍵是一種表達,只是把該表達的括號內:

if ($post_value=="on") { 
    $var1 = $_POST[$post_key."Number"]; 
} 

一個更好的辦法來做到這一點是因爲數組後輸入:

echo "<input type=\"checkbox\" name=\"producto[]\" value=\"$id_producto\"> Cantidad: <input type=\"number\" name=\"Number[$id_producto]\" min=\"1\" max=\"20\" step=\"1\" value=\"1\"><br>"; 

然後你可以使用循環:

foreach ($_POST['producto'] as $post_value) { 
    $var1 = $_POST['Number'][$post_value]; 
} 
+0

爲什麼會在$ _ POST指數是從矩陣? – diegoaguilar

+0

當您使用'name =「xxx []」'時,PHP將所有這些輸入收集到'$ _POST ['xxx']'中的一個數組中。 – Barmar

+0

因此'$ var1 = $ _POST ['Number'] [$ post_value];'語句中的'['Number']'部分相當於PHP-ish? – diegoaguilar