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

Форум PHP

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

 

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

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

тема: Запись из массива в таблицу(Прошу очень обратить внимание)
 
 автор: Eser   (09.08.2010 в 15:51)   письмо автору
 
 

Наставте так сказать на путь истинный.
Сразу надо сказать что в формы вводиться информация на латинице.

У меня есть страница для клиентов где они должны делать заявки, но элементы форм не могут быть статическими(могут добавляться новые формы или удаляться старые(в общем ваяю их в админке)), их названия и параметры тянуться из таблицы.
Всего есть три таблицы:
1)COMPANIES(Таблица с компаниями клиентов)
2)SPRAVOCHNIKI(Таблица с названиями элементов форм и значениями)
3)ZAYAVKI_[Название клиента]-(Таблица заявками)
И так! Так как клиенты разные и всем нужны свои элементы форм, то есть сделать одну таблицу с заявками я не могу. По этому при создании компании клиента, создается его личная таблица с заявками. Когда создаются справочники(названия форм) c элементами и привязываются к конкретной фирме, в таблицe с заявками под каждый новый справочник создается новый столбец который имеет название такоеже как и справочник. Ну на пример сделал я справочник "MODEL" в таблице справочников, соответственно автоматом в таблицу с заявками добавился новый столбец "MODEL"
На странице пользователя соответственно выводятся присущие ему элементы форм(Справочники)
Вывожу я из через цикл и каждому элементу форм присваиваю такое же имя как и в таблице SPRAVOCHNIKI(автоматом соответственно ).
Ну т.е Справочник MODEL, значит элемент формы такой <input type=text name=MODEL(Название тянеться из таблицы т.е не руками забиваю)>

Собственно подхожу к вопросу ,как мне записать значения справочником в нужные столбцы в таблице с заявками.
Ну что б значение справочника MODEL записывалось именно в столбец "MODEL"

У меня есть одна мысль. Когда пользователь заполняет все элементы форм, и нажимает кнопку "Отправить". Все передается методом POST т.е массив в нем абсолютно такая же последователь названий элементов что и последовательность названий столбцов в таблице с заявками.
Т.е:
$_POST[MODEL]---------------Столбец MODEL
$_POST[TSVET]----------------Столбец TSVET
Ну и тд.
В общем если сделать вот так ,то я думаю получиться:
В $_POST содержаться вот такие элементы из форм [model] => Samsung [tsvet] => green
$insert=mysql_query("insert into zayavki (model,tsvet) value('Samsung','green');");
, где model и tsvet указатели из массива $_POST, а в value его значения.
Вот тока не знаю как записать?
Или может кто подскажет лучший вариант?

  Ответить  
 
 автор: sim5   (09.08.2010 в 16:00)   письмо автору
 
   для: Eser   (09.08.2010 в 15:51)
 

Что-то много понаписано, суть вопроса потерялась. Проблема в чем? Как узнать для какого поля таблицы пришли данные?

  Ответить  
 
 автор: Eser   (09.08.2010 в 16:04)   письмо автору
 
   для: sim5   (09.08.2010 в 16:00)
 

Нет мне нужно заставить скрипт записывать элементы форм в столбец который имеет такое же название что и у формы.
У формы например название "MODEL" и нужно напихать значение этой формы в столбец который также называется "MODEL"

  Ответить  
 
 автор: sim5   (09.08.2010 в 16:19)   письмо автору
 
   для: Eser   (09.08.2010 в 16:04)
 

А разве я не об этом спрашиваю? Есть у вас элемент формы с именем model, придет он со значеним 15, например. Ключом массива POST будет имя поля формы, это и есть ваш столбец, а значение, это естественно значение для столбца. Хотя, на мой взгляд, лучше не указывать истинные имена полей таблицы в форме, а использовать псевдонимы, легче будет проверить в случае "эксперементов с формой" изерами.
И не очень удобно будет именно такое именование элементов name=model, если кроме этих элементов у формы есть и иные элементы, которые не требуется записывать в базу, например, та же кнопка SUBMIT, если она передается на сервер. К тому же, если, например, элементов model может быть более одного. То есть, лучше именовать элементы как элементы вложенного массива.

  Ответить  
 
 автор: Eser   (09.08.2010 в 16:33)   письмо автору
 
   для: sim5   (09.08.2010 в 16:19)
 

Принял к сведению спасибо. Но как все таки записать?

  Ответить  
 
 автор: sim5   (09.08.2010 в 17:21)   письмо автору
 
   для: Eser   (09.08.2010 в 16:33)
 

Записать, это INSERT... Я думал иные проблемы вызывают трудности. Вы выставляя форму, формируете ее элементы по именам уже известных вам полей, насколько я понял. Так какие тогда проблемы?
<?
//параметры полей можно описать в массиве,
//например, тут спрятаны истинные имена полей таблицы
$_SESSION['fields'] = array('f1'=>'mode11''f2'=>'mode12''f3'=>'mode13');
if(
$_POST['f']) {
  
//проверяем те ли поля нам прислали
  
if(count(array_intersect_key($_POST['f'], $_SESSION['fields'])) == count($_SESSION['fields'])) {
    
//проверка значений полей формы опущена для примера
    
$values array_values(array_intersect_key($_POST['f'],$_SESSION['fields'])); 
    
array_walk($_SESSION['fields'], create_function('&$f','$f = "`" . $f . "`";'));
    
//строка имен полей для INSERT
    
$fields "(" implode(',',$_SESSION['fields']) . ")";
    
array_walk($valuescreate_function('&$v','
                       if(!is_numeric($v)) 
                       $v = "\'" . mysql_real_escape_string($v) . "\'";
              '
));
    
//строка значений для INSERT
    
$values "(" implode(','$values) . ")";
    
//строка запроса
    
$q "INSERT INTO `table` $fields VALUES $values";
    echo 
$q;
    
//пишем
    
mysql_query($q) or die (mysql_error());
  } 
//иначе обман
}
?>
<form action="" method="post">
<input type="text" name="f[f1]"><input type="text" name="f[f2]"><input type="text" name="f[f3]">
<br><br>
<input type="submit" value="Send">
</form>

  Ответить  
 
 автор: Eser   (09.08.2010 в 18:05)   письмо автору
 
   для: sim5   (09.08.2010 в 17:21)
 

Спасибо огромное дома посмотрю.

  Ответить  
Rambler's Top100
вверх

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