2013-07-19 4 views
1

возникли проблемы. я получил форму, как этотforeach многомерная массив и вставка базы данных

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

Я могу добавить много блоков этой формы, нажав кнопку «добавить еще». Получая данные о позе, я делаю материал.

$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

Try использовать

print_r($_POST["product"]); 

для вывода всего массива.

Вы уверены, что значения, переданные формулой, передаются в $ _POST?

Не могли бы вы вывести выход.

+0

Вот это \t Array ( \t \t [sub_name] => Array ([0] => Новый автомобиль [1] => Новый велосипед) \t \t [standart_price] => Array ([0] = > 100 [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 хорош. –

Смежные вопросы