1

Тема: Добавление данных в БД через форму

Применил запрос к MySQL в PHP, но столкнулся с тем что в одной и тойже таблице одни поля заполняются а другие нет.
Вот отрывок:Код PHP
if($_SESSION['cart'] && isset($_POST['order']))
{
    foreach($_POST as $ArrKey => $ArrStr)
    {
        $ArrKey = $_POST[$ArrKey];
    }
    $date = date('Y-m-d');
    $time = date('H:i:s');
   
    foreach($_SESSION['cart'] as $id => $quantity):
    $product = get_product($id);
        $result = mysql_query("INSERT INTO orders(name,s_name,address,post_index,email,date,time,product,prod_id,price,qty) VALUES ('$name','$s_name','$address','$post_index','$email','$date','$time','{$product['title']}','{$product['id']}','{$product['price']}','$quantity')");
    endforeach;
   

}


name,s_name,address,email,post_index - эти поля не заполняются! С остальными полями нет проблем.

Код всей страницы:
<h2 align="center">Оформление заказа</h2>

<?
if($_SESSION['cart'] && !isset($_POST['order']))
{
?>
<form action="index.php?view=order" method="post" id="cart-form">

<table id="mycart" align="center" cellspacing="0" cellpadding="0" border="0">
      <tr>
            <th>Товар</th>
            <th>Цена</th>
            <th>Кол-во</th>
            <th>Всего</th>
      </tr>

      <? foreach($_SESSION['cart'] as $id => $quantity):
         $product = get_product($id);
      ?>
       
      <tr>
          <td align="center"><?=$product['title'];?></td>
          <td align="center">$<?=number_format($product['price'],2);?></td>
          <td align="center"><?=$quantity;?></td>
          <td align="center">$<?=number_format($product['price'] * $quantity ,2);?></td>
      </tr>
     
      <?endforeach;?>
     
</table>   
     <p class="total" align="center">Общая сумма заказа: <span class="product-price"><?=number_format($_SESSION['total_price'],2);?> $</span></p>
     
     <p align="center" style="color:  #fff;">
     Ваше Имя: <br />
     <input type="text" name="name"/><br/>
     Ваша Фамилия: <br />
     <input type="text" name="s_name"/><br/>
     Ваш адрес: <br />
     <input type="text" name="address"/><br/>
     Почтовый индекс: <br />
     <input type="text" name="post_index"/><br/>
     Ваш e-mail: <br />
     <input type="text" name="email"/><br/>
     </p>
     
     
     <p align="center"><input type="submit" name="order" value="Заказать" /></p>   
</form>

<?
}
if($_SESSION['cart'] && isset($_POST['order']))
{
    foreach($_POST as $ArrKey => $ArrStr)
    {
        $ArrKey = $_POST[$ArrKey];
    }
    $date = date('Y-m-d');
    $time = date('H:i:s');
   
    foreach($_SESSION['cart'] as $id => $quantity):
    $product = get_product($id);
        $result = mysql_query("INSERT INTO orders(name,s_name,address,post_index,email,date,time,product,prod_id,price,qty) VALUES ('$name','$s_name','$address','$post_index','$email','$date','$time','{$product['title']}','{$product['id']}','{$product['price']}','$quantity')");
    endforeach;
   
    echo "<p align='center' style='color: #fff;'>Ваш заказ успешно принят! Спасибо за покупку!</p>";
}
?> 


В чем проблема?

2

Re: Добавление данных в БД через форму

Ошибка здесь:
$ArrKey = $_POST[$ArrKey];
Нельзя так в цикле делать. Вставляйте в таблицу экранированные данные из POST. mysql_real_escape_string($_POST['name'])

3

Re: Добавление данных в БД через форму

Неподскажите как оформить"вставить" правильно этот запрос?
P.s. Мне самому дельного в голову ничего не лезет.

4

Re: Добавление данных в БД через форму

В запросе вместо $name сделайте так:

VALUES ('" . mysql_real_escape_string($_POST['name']) . "','

5

Re: Добавление данных в БД через форму

Я сделал, так и все заработало smile

<?
}
if($_SESSION['cart'] && isset($_POST['order']))
{
    foreach($_POST as $ArrKey => $ArrStr)
    {
        $ArrKey = $_POST[$ArrKey];
    }
    $date = date('Y-m-d');
    $time = date('H:i:s');
    $name = $_POST['name'];
    $s_name = $_POST['s_name'];
    $address = $_POST['address'];
    $post_index = $_POST['post_index'];
    $email = $_POST['email'];
    $phone = $_POST['phone'];
   
    foreach($_SESSION['cart'] as $id => $quantity):
    $product = get_product($id);
        $result = mysql_query("INSERT INTO `orders`(date,time,product,prod_id,price,qty) VALUES ('$date','$time','{$product['title']}','{$product['id']}','{$product['price']}','$quantity')");
    $result = mysql_query("INSERT INTO `pokupatel`(name,s_name,address,post_index,email,phone,id_order) VALUES ('$name','$s_name','$address','$post_index','$email','$phone','{$orders['id']}')");   
   
    endforeach;
   
    echo "<p align='center' style='color: #c51d02;'>Ваш заказ успешно принят! Спасибо за покупку!</p>";
}
?>

6

Re: Добавление данных в БД через форму

Лучше так тогда, иначе кавычка в переменной сломает запрос:
$name = mysql_real_escape_string($_POST['name']);

7

Re: Добавление данных в БД через форму

Hanut сказал:

Лучше так тогда, иначе кавычка в переменной сломает запрос:
$name = mysql_real_escape_string($_POST['name']);

Спасибо за помощь. все работает. тока Я не понял что с этим делать foreach($_POST as $ArrKey => $ArrStr)?

8

Re: Добавление данных в БД через форму

Hatiman сказал:

тока Я не понял что с этим делать foreach($_POST as $ArrKey => $ArrStr)?

Этот цикл можно удалить. Он не работает.