Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
Объектно-ориентированное программирование на PHP. Авторы: Кузнецов М.В., Симдянов И.В. Программирование. Ступени успешной карьеры. Авторы: Кузнецов М.В., Симдянов И.В. Самоучитель PHP 5 / 6 (3 издание). Авторы: Кузнецов М.В., Симдянов И.В. PHP на примерах (2 издание). Авторы: Кузнецов М.В., Симдянов И.В. C++. Мастер-класс в задачах и примерах. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум PHP

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Записать все POST-параметры в базу данных
 
 автор: Antohins   (17.04.2008 в 11:40)   письмо автору
 
 

Доброго времени суток форумчане.

В общем у меня такая проблема:
Есть пхп файл в который поступают много данных через POST. Можно ли сделать так, чтобы записать все POST'ы в бд?
например так:
 foreach($_POST as $kk){ запись в бд $kk}


посоветуйте правильный алгоритм пожалуйста

   
 
 автор: Valeraru   (17.04.2008 в 12:14)   письмо автору
 
   для: Antohins   (17.04.2008 в 11:40)
 

Напиши подробние:
1.Данные в скрипт поступают массивом или имя=значения ?

   
 
 автор: Antohins   (17.04.2008 в 12:28)   письмо автору
 
   для: Valeraru   (17.04.2008 в 12:14)
 

например
$_POST['bumaga']="матовая";
$_POST['plot']="150";


Таких постов около 20 и не факт что придут все 20, т.е. юзер может ввести только 5 значений.
Мне нужно каждый пост содержащий данные записать в базу данных.
Таблица такого вида:
id bumaga plot ....


т.е. в bumaga должно записаться "матовая" в plot - 150
а если поста не будет, то пустое значение.

Я понимаю что можно составить один запрос и если поста не будет, то записать пустоту, но имена постов (bumaga, plot) динамические, т.е. этот код я буду юзать для нескольких скриптов с разными назначениями.

   
 
 автор: Valeraru   (17.04.2008 в 12:32)   письмо автору
 
   для: Antohins   (17.04.2008 в 12:28)
 

Тогда так
if(!empty($_POST['bumaga']))
{
$q=$_POST['bumaga'];
mysql_query(" IINTO `имя базы` VALUES ('','$q','')
}


Итак для каждого $_POST['****']..

   
 
 автор: Antohins   (17.04.2008 в 12:33)   письмо автору
 
   для: Valeraru   (17.04.2008 в 12:32)
 

Такой вариант я обдумывал, но получается при 30 постах будет 30 запросов. Что не очень хорошо и для меня не подходит...

   
 
 автор: Antohins   (17.04.2008 в 12:32)   письмо автору
 
   для: Antohins   (17.04.2008 в 12:28)
 

В кратце:

В бд должны записаться все посты, если какого то поста нет, до будет записано пустое значение.
Причем имя поста (в моем примере bumaga и plot) совпадают со столбцами в бд.
что то типа этого:
insert into table(bumaga,plot) values ($_POST['bumaga'],$_POST['plot'])

   
 
 автор: sim5   (17.04.2008 в 12:38)   письмо автору
 
   для: Antohins   (17.04.2008 в 12:32)
 

Записывайте только те, значения которых не пусты.

   
 
 автор: Antohins   (17.04.2008 в 12:40)   письмо автору
 
   для: sim5   (17.04.2008 в 12:38)
 

Ну это же опять куча запросов и условий!
типа
иф(!емпту(пост))инсерт инто ...

этот вариант мне не пожходит

   
 
 автор: sim5   (17.04.2008 в 12:44)   письмо автору
 
   для: Antohins   (17.04.2008 в 12:40)
 

Строку запроса пишите одну, в цикле, и помещаете значения равные условию.

   
 
 автор: Antohins   (17.04.2008 в 12:53)   письмо автору
 
   для: sim5   (17.04.2008 в 12:44)
 

вот и проблема собственно то вся и в этом что не получается составить один запрос. покажите пожалуйста пример

   
 
 автор: Valeraru   (17.04.2008 в 12:38)   письмо автору
 
   для: Antohins   (17.04.2008 в 12:32)
 

Тогда не прощели все данные передать массивом через POST а вскрипте обойти массив, составить запрос и отослать его базе?

   
 
 автор: Antohins   (17.04.2008 в 12:45)   письмо автору
 
   для: Valeraru   (17.04.2008 в 12:38)
 

>>составить запрос

вот поподробнее пожалуйста. Как можно составить один единственный запрос на добавление строки в бд из всех существующих постов

   
 
 автор: Петр   (17.04.2008 в 13:03)   письмо автору
 
   для: 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" />

   
 
 автор: Antohins   (17.04.2008 в 13:15)   письмо автору
 
   для: Петр   (17.04.2008 в 13:03)
 

Нет, опять 25! Будет много запросов! Мне нужно составить 1!

   
 
 автор: Петр   (17.04.2008 в 13:28)   письмо автору
 
   для: Antohins   (17.04.2008 в 13:15)
 

тогда так:
$sql = "INSERT INTO ...";
потом в цикле
$sql .= "VALUES ($a,$b)";

получится типа
INSERT INTO таблица VALUES (поле,поле),(поле,поле),(поле,поле)

   
 
 автор: Antohins   (17.04.2008 в 13:29)   письмо автору
 
   для: Петр   (17.04.2008 в 13:28)
 

отлично!) спасибо. все элементарно.

   
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования