2014-10-27 6 views
2

У меня есть кнопка «Добавить в корзину» на главной странице. После сбора своего продукта в корзину, пользователь отправит (обработает) список продукта в форме. Поскольку будет представлено более одного продукта, который будет отправлен, форма будет добавлена ​​автоматически (я делаю это с помощью функции foreach).Ввести более одного значения в базу данных

 foreach ($_SESSION["products"] as $cart_itm) { 
        echo '<input name="product_name">'.$cart_itm["product_name"].'/>'; 
        echo '<input name="product_price">'.$cart_itm["prduct_price"].'/>'; 
    } 

Мой стек теперь думать как представить это несколько значение в том виде, в одной кнопки представить. Так что я хочу достичь, как это:

INSERT INTO `product` ( `productname` , `price` , `image`) 
VALUES ('Product 1', '$10', 'product-1.jpg'), 
     ('Product 2', '$20', 'product-2.jpg'), 
     ('Product 3', '$30', 'product-3.jpg'); 

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

Я надеюсь, что кто-нибудь поймет, чего я собираюсь достичь здесь.


[UPDATE ВОПРОС 1]

Я пробовал так как, как Arif_suhail_123 предложил:

<?php 
$mysql_hostname = "myhost.com"; 
$mysql_user = "myname"; 
$mysql_password = "mypassword"; 
$mysql_database = "database-one"; 

$connection=mysql_connect($mysql_hostname, $mysql_user, $mysql_password) or die("Can't connect to mysql"); 
mysql_select_db($mysql_database, $connection) or die("Can't Select Database"); 

for($i=0; $i<count($_POST['product_name']);$i++) 
    { 
     $product_name=$_POST['product_name'][$i]; 
     $product_price=$_POST['product_price'][$i]; 

     //Run your query here. 

     $mysql_query="INSERT INTO `member_cart` ( `product_cart_name` , `product_cart_price`) 
        VALUES ('$product_name', '$product_price')"; 

     $result= mysql_query($connection, $mysql_query) 
        or die(mysql_error($connection));//here $connection is your 
     //database connection 

    } 
?> 

Моя форма:

if(isset($_SESSION["products"])) { 
    $total = 0; 
    echo '<ol>'; 
    echo '<form action="cart-post-config.php" method="POST">>'; 
    foreach ($_SESSION["products"] as $cart_itm) { 
        echo '<tr>'; 
        echo '<td></td>'; 
        echo '<td><input type="text" name="product_name[]"value='.$cart_itm["name"].'/></td>'; 
        echo '<td><input type="text" name="product_price[]"value='.$cart_itm["price"].'/></td>'; 
        echo '<td>View Save Delete</td>'; 
        echo '</tr>'; 
    } 
    echo '<input type="submit" name="submit" />'; 
    echo '</form>';//close the form 
} 
else { 
    echo 'Your Cart is empty'; } 

[UPDATE ВОПРОС 2]

Я пробовал так как, как Умар предложил:

<?php 
$mysql_hostname = "...."; 
$mysql_user = "....."; 
$mysql_password = "....."; 
$mysql_database = "......."; 

$connection=mysql_connect($mysql_hostname, $mysql_user, $mysql_password) or die("Can't connect to mysql"); 
mysql_select_db($mysql_database, $connection) or die("Can't Select Database"); 

$query = "INSERT INTO `member_cart` ( `product_cart_name` , `product_cart_price`) VALUES"; 

$values = array(); 
$total_products=0; 
foreach ($_SESSION["products"] as $cart_itm) {    
     $values[] = "('{$cart_itm['product_name']}', '{$cart_itm['product_price']}')"; 
     $total_products++; 
    } 

print "Total products are ".$total_products; 
//final query 
$query = implode(",",$values); 

?> 

Но он всегда печатает что Total products are 0 хотя я принести некоторые продукты в всех связанных с входами.

Пожалуйста, помогите

+0

Вы должны написать запрос в цикле или несколько раз, чтобы сделать то же самое. –

+0

Скорее всего, вам нужна петля, ее слишком широкая. мы даже не знаем, как выглядит разметка и как значения вставляются внутри контейнера (сеанс?). – Ghost

+0

можете ли вы добавить данные, которые вы получаете после отправки формы? –

ответ

1

Я думаю, что вы ищете для этого

Пожалуйста, прочтите комментарий в ответ

<?php 
echo '<form action="Your_File_name" method="POST">'; 
foreach ($_SESSION["products"] as $cart_itm) {//store them in array 
        echo '<input type= "text" name="product_name[]" value='.$cart_itm["product_name"].'/>'; 
        echo '<input type= "text" name="product_price[]" value='.$cart_itm["prduct_price"].'/>'; 
    } 

    echo '<input type="submit" name="submit" />'; 
    echo '</form>';//close the form 

     //use array filter to remove the empty value 
$product_name=array_filter($_POST['product_name']);//remove the empty value 
$product_price=array_filter($_POST['product_price']);//remove the empty value 

for($i=0; $i<count($product_name);$i++)//run a for loop, on the new array. 
    { 


     $product=$product_name[$i]; 
     $price=$product_price[$i]; 
     $mysql_query="INSERT INTO `member_cart` ( `product_cart_name` , `product_cart_price`) 
        VALUES ('$product', '$price')"; //use the new variable to run the query 

     $result= mysql_query($connection, $mysql_query) 
        or die(mysql_error($connection));//here $connection is your 
     //database connection 

    } 
+0

Спасибо, это выглядит разумно. сообщите, работает ли это или нет. – klaudia

+0

Пожалуйста, ознакомьтесь с моим вопросом о обновлении, почему он не работает? спасибо – klaudia

+0

У вас отсутствует много вещей. Но в целом код, который вы даете, работает над тем, чего я хочу. – klaudia

2

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

Затем вы можете использовать эту переменную, чтобы найти количество элементов в корзине и, соответственно, запустить цикл.

Надеюсь, это поможет.

+0

Я объявил статическую переменную в моем обновлении (пожалуйста, взгляните на это), но почему это не работает? Благодарю. – klaudia

0

Сделать это следующим образом:

$query = "INSERT INTO `product` ( `productname` , `price` , `image`) Values"; 

while(Statement){ //(Or a for statement) 
     $query .= "(".$somevar1.",".$somevar2.",".$somevar3."),"; 
} 

$query .= ";"; 
//execute your query here. 

Настройте его в код, так что он работает правильно для вашего кода, вы должны видеть, что вы можете использовать лучшее, а для или время цикла. Это зависит от вас.

+0

Я обновляю свой вопрос. Повторите попытку. – klaudia

1

Как я могу видеть СЕССИЮ, содержащую продукты Cart. Вы можете попробовать что-то подобное.

$query = "INSERT INTO `product` ( `productname` , `price` , `image`) VALUES"; 

$values = array(); 
$total_products=0; 
foreach ($_SESSION["products"] as $cart_itm) {    
    $values[] = 
       "('{$cart_itm['product_name']}', '{$cart_itm['product_price']}', 
       '{$cart_itm['product_image']}')"; 
     $total_products++; 
    } 
print "Total products are ".$total_products; 
//final query 
$query .= implode(",",$valuse); 
+0

В этом случае мы знаем, что пользователь представит три продукта (продукт 1, продукт 2, продукт 3), но проблема в том, что мы не знаем, сколько продуктов они подадут. – klaudia

+0

Количество продуктов равное количеству раз 'foreach' работает – Umair

+0

См. Обновленный ответ – Umair

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