2013-07-19 64 views
1

出了問題。 我得到的表單如foreach multidimensional Array並插入數據庫

<input name="product[sub_name][]"> 
<input name="product[price][]"> 
<input name="product[random][]"> 
<input name="product[just_field][]"> 

我可以補充這種形式的多塊按下「添加更多」。 收到posta數據我做的東西。

$field = $_POST['product']; 

foreach ($field as $key => $values) { 

    foreach($values as $value) { 

     $key.' - '.$value; 


    } 

} 

我需要代碼插入多行取決於張貼的行數據庫中的行。問題是,我不知道如何獲得,例如,「價格」。目標是在數據庫中插入所有數據。希望你們明白我的邏輯。

這是print_r輸出。我可以得到更多的可能性超過兩

Array ( 
    [sub_name] => Array ([0] => New car [1] => New bike) 
    [standart_price] => Array ([0] => 100 [1] => 300) 
    [cupon_price] => Array ([0] => 50 [1] => 200) 
    [max_purchases] => Array ([0] => 1000 [1] => 100) 
    ) 

回答

0

你可以得到一個更有序的結果,如果你重新組織的數組包含索引第一:

<input name="product[$index][sub_name]"> 
<input name="product[$index][price]"> 
<input name="product[$index][random]"> 
<input name="product[$index][just_field]">  

每次添加一個新產品改變與JavaScript中的指數,以這種方式當你在PHP中收到的數據,你可以這樣做:

$products = $_POST['product']; 

foreach ($products as $product) 
{ 
    $sub_name = $product['sub_name']; 
    $random = $product['random']; 
    $just_field = $product['just_field']; 

    $sql = "Your SQL query" 

    $mysqli->query($sql); 
} 

也許需要一些更多的工作,改變HTML指標與JavaScript,但你的代碼變得更加清晰。

p.s.這是一般的想法,我不測試它。

+0

謝謝,爲我工作。 – berzins92

0

嘗試使用

print_r($_POST["product"]); 

輸出整個陣列。

您確定由公式傳遞的值傳遞給$ _POST嗎?

請問您可以發佈輸出。

+0

這裏是它 \t陣列( \t \t [sub_name] =>數組([0] =>新車[1] =>新自行車) \t \t [standart_price] =>數組([0] = > [1] => 300) \t \t [cupon_price] => Array([0] => 50 [1] => 200) \t \t [max_purchases] => Array([0] => 1000 [1 ] => 100) \t \t) – berzins92

0

檢查了這一點..

<? 

//Connect to DB. 
$link = mysqli_connect("HOST","USERNAME","PASSWORD","DATABASE") or die("Error " . mysqli_error($link)); 

//Consider your table structure in MYSQL. Don't depend on this structure. 
//CREATE TABLE TBL1(SLNO PRIMARY KEY AUTO_INCREMENT, DETAIL_VALUE VARCHAR(200)); 
foreach($_POST['product'] as $key => $value) 
{ 
    //Get specific Tag. 
    if($key == 'price') 
    { 
     //Creating Query to insert. 
     $query = "insert into TBL1('DETAIL_VALUE') VALUES('".addslashes($value)."')"; 
     $mysqli_query($link, $query) or die; 
    } 
} 


?> 

有關querys或PHP的更多詳細信息:請參閱PHP.net。

0
$mysqli = new mysqli("localhost", "root", "password", "db name"); 

$field = $_POST['product']; 

foreach ($field['price'] as $idx => $price) 
{ 
    $sub_name = $field['sub_name'][$idx]; 
    $random = $field['random'][$idx]; 
    $just_field = $field['just_field'][$idx]; 

    $sql = "INSERT INTO table (sub_name, random, just_field, price) VALUES ('{$sub_name}','{$random}','{$just_field}','{$price}')"; 

    $mysqli->query($sql); 


} 
+0

不工作,因爲$ field ['price']不是唯一的字段。 – berzins92

+0

Hernandcb的回答很好。 –