|
|
|
| Наставте так сказать на путь истинный.
Сразу надо сказать что в формы вводиться информация на латинице.
У меня есть страница для клиентов где они должны делать заявки, но элементы форм не могут быть статическими(могут добавляться новые формы или удаляться старые(в общем ваяю их в админке)), их названия и параметры тянуться из таблицы.
Всего есть три таблицы:
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 его значения.
Вот тока не знаю как записать?
Или может кто подскажет лучший вариант? | |
|
|
|
|
|
|
|
для: Eser
(09.08.2010 в 15:51)
| | Что-то много понаписано, суть вопроса потерялась. Проблема в чем? Как узнать для какого поля таблицы пришли данные? | |
|
|
|
|
|
|
|
для: sim5
(09.08.2010 в 16:00)
| | Нет мне нужно заставить скрипт записывать элементы форм в столбец который имеет такое же название что и у формы.
У формы например название "MODEL" и нужно напихать значение этой формы в столбец который также называется "MODEL" | |
|
|
|
|
|
|
|
для: Eser
(09.08.2010 в 16:04)
| | А разве я не об этом спрашиваю? Есть у вас элемент формы с именем model, придет он со значеним 15, например. Ключом массива POST будет имя поля формы, это и есть ваш столбец, а значение, это естественно значение для столбца. Хотя, на мой взгляд, лучше не указывать истинные имена полей таблицы в форме, а использовать псевдонимы, легче будет проверить в случае "эксперементов с формой" изерами.
И не очень удобно будет именно такое именование элементов name=model, если кроме этих элементов у формы есть и иные элементы, которые не требуется записывать в базу, например, та же кнопка SUBMIT, если она передается на сервер. К тому же, если, например, элементов model может быть более одного. То есть, лучше именовать элементы как элементы вложенного массива. | |
|
|
|
|
|
|
|
для: sim5
(09.08.2010 в 16:19)
| | Принял к сведению спасибо. Но как все таки записать? | |
|
|
|
|
|
|
|
для: 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($values, create_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>
|
| |
|
|
|
|
|
|
|
для: sim5
(09.08.2010 в 17:21)
| | Спасибо огромное дома посмотрю. | |
|
|
|