2014-12-04 2 views
2

Я создал форму, которая может добавить еще input field для product_name и quantity в product с помощью jquery, это demo, где вы можете добавить еще поле ввода в форме.Вставка несколько строк в базе данных с помощью формы PHP

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

это мой запрос

<?php 
    if(isset($_POST['submit'])){ 
    //process the form 

    $date = $_POST["date"]; 
    $customer_name = $_POST["customer_name"]; 
    $product_description = $_POST["product_description"]; 
    $quantity = $_POST["quantity"]; 
    $status = $_POST["status"]; 

    $query = " 
    INSERT INTO orders (
    date, customer_name, product_description, quantity, status 
    ) VALUES (
    '$date', '$customer_name', '$product_description',$quantity,$status 
    )"; 

    $order_set = mysqli_query($connection, $query); 
    if($order_set){ 
     redirect_to("index.php"); 
    } 

    } else { 
    // failed 

    } 


?> 

Моей форма

<form action="order.php" method="post"> 
    <div class="newOrder"> 
    <p><span>Date</span><input type="date" value="2014-12-01" name="date" /></p> 
    <p><span>Name</span> 
    <select name="customer_name"> 




    <?php 
     while($customer = mysqli_fetch_assoc($customers_set)){ ?> 

     <option><?php echo $customer['customer_name']; ?></option> 

     <?php } ?> 
     <?php mysqli_free_result($customers_set); ?> 

    </select> 

    </p> 


    <div id="input_fields"> 

    <p><span>Product Description</span> 
    <select name="product_description"> 
    <?php 
     while($product = mysqli_fetch_assoc($product_set)){ ?> 

     <option><?php echo $product['product_description']; ?></option> 

     <?php } ?> 
     <?php mysqli_free_result($product_set); ?> 
    </select> 
    <input value="0" type="text" name="quantity" /> 
    </p> 

    </div> 
    <a href="#" class="more">Add More Product</a> 


    <p class="radio"> 
     <input type="radio" name="status" value="0" checked />For delivery&nbsp;&nbsp; 
     <input type="radio" name="status" value="1" />For payment confirmation&nbsp;&nbsp; 
     <input type="radio" name="status" value="2" />Reserved items&nbsp;&nbsp; 
    </p> 


    <input type="submit" name="submit" value="Create Order" /> 
    </div> 
</form> 

любого тела есть идея, как представить все product и quantity входа в input field будет сохранять в базе данных.

+1

Я думаю, вам просто нужно создать список значений в цикле, а затем построить и выполнить весь запрос – Strawberry

+0

благодарственное для ваше предложение, но я понятия не имею, с чего начать, потому что мое обучение php настолько ограничено. Но в любом случае спасибо – jhunlio

ответ

0

Оберните свои значения в ваше соединение с базой данных. Подумайте об этом с одного из моих старых курсов. Обратите внимание, что другой код работает отлично.

$first_name = $_POST['firstname']; 
$last_name = $_POST['lastname']; 
$when_it_happened = $_POST['whenithappened']; 
$how_long = $_POST['howlong']; 
$how_many = $_POST['howmany']; 
$alien_description = $_POST['aliendescription']; 
$what_they_did = $_POST['whattheydid']; 
$fang_spotted = $_POST['fangspotted']; 
$email = $_POST['email']; 
$other = $_POST['other']; 

$dbc = mysqli_connect('data.aliensabductedme.com', 'owen', 'aliensrool', 'aliendatabase') 
    or die('Error connecting to MySQL server.'); 

$query = "INSERT INTO aliens_abduction (first_name, last_name, when_it_happened, how_long, " . 
"how_many, alien_description, what_they_did, fang_spotted, other, email) " . 
"VALUES ('$first_name', '$last_name', '$when_it_happened', '$how_long', '$how_many', " . 
"'$alien_description', '$what_they_did', '$fang_spotted', '$other', '$email')"; 

$result = mysqli_query($dbc, $query) 
or die('Error querying database.'); 

mysqli_close ($ dbc);

0

Вводные поля имеют то же имя? Поэтому я предполагаю, что именно поэтому вставлен только последний.

Вы должны закодировать запрос INSERT для вашего продукта, который вы добавляете, это включает количество.

Вы должны также очистить входное значение, прежде чем вставлять его в запрос.

+0

dont loop the insert; просто значения – Strawberry

0

вам нужно использовать Foreach

foreach ($_POST['quantity'] as $quantity) { 
//insert code 
} 
0

При вставке нескольких запросов, вы не должны делать это из цикла PHP. Не эффективен, потому что вы выполняете несколько запросов вместо одного или двух. Вы можете перебирать результаты, отправленные из формы, очищать их и готовить к вставке базы данных, а после этого создавать запрос на основе этих результатов. Посмотрите здесь для вставки нескольких строк сразу в базу данных:

(Insert multiple rows with one query MySQL)

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