|
|
|
| Доброго времени суток форумчане.
В общем у меня такая проблема:
Есть пхп файл в который поступают много данных через POST. Можно ли сделать так, чтобы записать все POST'ы в бд?
например так:
foreach($_POST as $kk){ запись в бд $kk}
|
посоветуйте правильный алгоритм пожалуйста | |
|
|
|
|
|
|
|
для: Antohins
(17.04.2008 в 11:40)
| | Напиши подробние:
1.Данные в скрипт поступают массивом или имя=значения ? | |
|
|
|
|
|
|
|
для: Valeraru
(17.04.2008 в 12:14)
| | например
$_POST['bumaga']="матовая";
$_POST['plot']="150";
|
Таких постов около 20 и не факт что придут все 20, т.е. юзер может ввести только 5 значений.
Мне нужно каждый пост содержащий данные записать в базу данных.
Таблица такого вида:
т.е. в bumaga должно записаться "матовая" в plot - 150
а если поста не будет, то пустое значение.
Я понимаю что можно составить один запрос и если поста не будет, то записать пустоту, но имена постов (bumaga, plot) динамические, т.е. этот код я буду юзать для нескольких скриптов с разными назначениями. | |
|
|
|
|
|
|
|
для: Antohins
(17.04.2008 в 12:28)
| | Тогда так
if(!empty($_POST['bumaga']))
{
$q=$_POST['bumaga'];
mysql_query(" IINTO `имя базы` VALUES ('','$q','')
}
Итак для каждого $_POST['****'].. | |
|
|
|
|
|
|
|
для: Valeraru
(17.04.2008 в 12:32)
| | Такой вариант я обдумывал, но получается при 30 постах будет 30 запросов. Что не очень хорошо и для меня не подходит... | |
|
|
|
|
|
|
|
для: Antohins
(17.04.2008 в 12:28)
| | В кратце:
В бд должны записаться все посты, если какого то поста нет, до будет записано пустое значение.
Причем имя поста (в моем примере bumaga и plot) совпадают со столбцами в бд.
что то типа этого:
insert into table(bumaga,plot) values ($_POST['bumaga'],$_POST['plot']) | |
|
|
|
|
|
|
|
для: Antohins
(17.04.2008 в 12:32)
| | Записывайте только те, значения которых не пусты. | |
|
|
|
|
|
|
|
для: sim5
(17.04.2008 в 12:38)
| | Ну это же опять куча запросов и условий!
типа
иф(!емпту(пост))инсерт инто ...
этот вариант мне не пожходит | |
|
|
|
|
|
|
|
для: Antohins
(17.04.2008 в 12:40)
| | Строку запроса пишите одну, в цикле, и помещаете значения равные условию. | |
|
|
|
|
|
|
|
для: sim5
(17.04.2008 в 12:44)
| | вот и проблема собственно то вся и в этом что не получается составить один запрос. покажите пожалуйста пример | |
|
|
|
|
|
|
|
для: Antohins
(17.04.2008 в 12:32)
| | Тогда не прощели все данные передать массивом через POST а вскрипте обойти массив, составить запрос и отослать его базе? | |
|
|
|
|
|
|
|
для: Valeraru
(17.04.2008 в 12:38)
| | >>составить запрос
вот поподробнее пожалуйста. Как можно составить один единственный запрос на добавление строки в бд из всех существующих постов | |
|
|
|
|
|
|
|
для: Antohins
(17.04.2008 в 12:45)
| |
<?php
// Массив данных должен быть таким;
$_POST['send']['1']['name'] = 'Бумага';
$_POST['send']['1']['price'] = 150;
$_POST['send']['2']['name'] = 'Ручка';
$_POST['send']['2']['price'] = 120;
// Обходим массив и записываем в БД;
foreach ($_POST['send'] as $item=>$value) {
INSERT $item['name'], $item['price']...
}
?>
|
форма типа такого:
<input type="text" name="send[1][name]" value="" maxlength="255" />
<input type="text" name="send[1][price]" value="" maxlength="255" />
<input type="text" name="send[2][name]" value="" maxlength="255" />
<input type="text" name="send[2][price]" value="" maxlength="255" />
|
| |
|
|
|
|
|
|
|
для: Петр
(17.04.2008 в 13:03)
| | Нет, опять 25! Будет много запросов! Мне нужно составить 1! | |
|
|
|
|
|
|
|
для: Antohins
(17.04.2008 в 13:15)
| | тогда так:
$sql = "INSERT INTO ...";
потом в цикле
$sql .= "VALUES ($a,$b)";
получится типа
INSERT INTO таблица VALUES (поле,поле),(поле,поле),(поле,поле) | |
|
|
|
|
|
|
|
для: Петр
(17.04.2008 в 13:28)
| | отлично!) спасибо. все элементарно. | |
|
|
|