|
|
|
| Доброго времени суток граждане...
В PHP я новичек но проблема серьезнач встала.
Суть такова: Есть огромная форма (150 полей ввода), можно миновать ручной прописки ВСЕХ 150 полей ввода? (соответстванно в обработчике формы 150 POST переменных).
То есть можно ли как то автоматически генерировать форму?
Может как то через массивы? Подскажите кто что может? | |
|
|
|
|
|
|
|
для: nek-v
(01.09.2008 в 11:11)
| | не совсем понятно, что нужно - генерировать форму или обрабатывать ее значения? | |
|
|
|
|
|
|
|
для: Balamut182
(01.09.2008 в 11:26)
| | Если поля однотипные - через цикл for | |
|
|
|
|
|
|
|
для: amigo62
(01.09.2008 в 11:37)
| | В форме 2 <textarea></textarea> и все остальное <input type="text"/>
нужно чтоб name полей ввода был уникальным | |
|
|
|
|
|
|
|
для: nek-v
(01.09.2008 в 11:41)
| | Выглядеть должна так http://nek-v.org.ru/in/form.php | |
|
|
|
|
|
|
|
для: Balamut182
(01.09.2008 в 11:26)
| | для начала ее нужно сгенерировать уж затем обработать...
Очень не хочется вписывать в обработчик 150 POST переменных...
Так же как и писать вручную всю форму...
Есть ли какое решение данного вопроса? | |
|
|
|
|
|
|
|
для: nek-v
(01.09.2008 в 11:11)
| | Вы можете цикле создать 150 полей формы - в скрипте, генерирующем форму.
Вы можете цикле обработать эти 150 полей формы - в скрипте, обрабатывающем форму.
Всё равно это бесполезно. Врядли найдется человек, который сможет все 150 полей сходу заполнить без ошибок. | |
|
|
|
|
|
|
|
для: Trianon
(01.09.2008 в 11:46)
| | Это точно.
Я бы даже пытаться не стал.
В таком случае, обычно, разбивают форму на несколько страниц и делают мастер.
Тогда пользователь не видит весь объём работы и гораздо веселее заполняет поля :) | |
|
|
|
|
|
|
|
для: Axxil
(01.09.2008 в 11:55)
| | На правильность заполнения мне в принципе пофиг,тек как сей скрипт для внутренних нужд фирмы и заполняющий форму человек очень педантичен.
А код можете привести? Если не трудно?
Данные в с формы пишутся в БД.
Имена полей это индексы массива? Так? | |
|
|
|
|
|
|
|
для: nek-v
(01.09.2008 в 12:06)
| | если Вам пофиг на правильность заполнения, то нам стало быть пофиг на правильность ответа... | |
|
|
|
|
|
|
|
для: Trianon
(01.09.2008 в 12:10)
| | ну ну ну....
Не жадничайте ))))
Со временем и проверку ввода сделаю.
просто нужно срочно а писать по 150 полей и переменных это очень долго...
Цикл вывода формы примерно ваглядет так
<form method="post">
<?php
for($i=0;$i<=150;$i++)
{
print '<input type="text" name="yourname[]" /><br />'."\n";
}
?>
<input type="submit" value="send" />
</form>
|
А как выглядет цикл обработки и записи в БД? | |
|
|
|
|
|
|
|
для: nek-v
(01.09.2008 в 12:16)
| |
<?php
$sql = "INSERT INTO `db_name` SET ";
foreach($_POST['yourname'] as $key=>$value)
{
$sql .= " `".$key."` = '".$value."',";
}
$sql = substr($sql, 0, strlen($sql)-1);
mysql_query($sql);
?>
|
| |
|
|
|
|
|
|
|
для: Balamut182
(01.09.2008 в 12:30)
| | То есть таблица создасться сама?
Или нужно ручками создавать? | |
|
|
|
|
|
|
|
для: nek-v
(01.09.2008 в 12:45)
| | думаю таблицы вам надо создать заранее ))
код вставит в нее одну запись
или что вам нужно? создать таблицы или вставить запись в нее? | |
|
|
|
|
|
|
|
для: Balamut182
(01.09.2008 в 12:54)
| | ага =)
Или создать руками ее с полями по номерам индесов массива? | |
|
|
|
|
|
|
|
для: nek-v
(01.09.2008 в 12:56)
| | в чем проблема? так же циклом создайте таблицу, только поменяйте запрос
$sql = "CREATE TABLE `table_name` (
`row_id` int(11) NOT NULL auto_increment,";
for($i = 0; $i < 150; $i++)
{
$sql .= "`col_".$i."` text, ";
}
$sql .= "PRIMARY KEY (`row_id`))";
mysql_query($sql);
|
| |
|
|
|
|
|
|
|
для: Balamut182
(01.09.2008 в 13:35)
| | СПАСИБО!!!!!
проблема в том что познаний маловато....
учу только, а задачи встают трудные для моего уровня знаний | |
|
|
|
|
|
|
|
для: nek-v
(01.09.2008 в 14:03)
| | Если не секрет, зачем понадобилось 150 полей одной формы? Для какой задачи? | |
|
|
|
|
|
|
|
для: Axxil
(01.09.2008 в 14:10)
| | http://nek-v.org.ru/in/form.php вот для этого.
Так оно должно выглядеть... | |
|
|
|
|
|
|
|
для: Balamut182
(01.09.2008 в 13:35)
| | Блин вот еще вопрос
<form method="post">
<?php
for($i=0;$i<=150;$i++)
{
print '<input type="text" name="yourname[]" /><br />'."\n";
}
?>
<input type="submit" value="send" />
</form>
|
выводит их все по одной на строку
<input><br/>
а надо <tr> <td><input></td><td><input></td><td><input></td><td><input></td><td><input></td></tr>
вобщем их все но по 7 ячеек на одну сторочку html таблицы...
Как? о_О | |
|
|
|
|
|
|
|
для: nek-v
(01.09.2008 в 14:12)
| | что-нибудь в этом роде
<form method="post">
<?php
$num_on_row = 7;
$num = 150;
$iter = $num + ($num_on_row - ($num % $num_on_row));
print '<table>';
for($i=1;$i<=$iter;$i++)
{
if($i % $num_on_row ==1) print '<tr>';
print '<td>'.(($i <= $num) ? '<input type="text" name="yourname[]" />' : '').'</td>';
if($i % $num_on_row ==0) print '</tr>\n';
}
print '</table>';
?>
<input type="submit" value="send" />
</form>
|
| |
|
|
|
|
|
|
|
для: Balamut182
(01.09.2008 в 14:24)
| | Ух!
Да вы асы ребятки....
А можно ли еще так чтоб при выводе первое поле в строке бало просто поле ввода
а последующие с атрибутом size="6"? | |
|
|
|
|
|
|
|
для: nek-v
(01.09.2008 в 14:38)
| |
<form method="post">
<?php
$num_on_row = 7;
$num = 150;
$iter = $num + ($num_on_row - ($num % $num_on_row));
print '<table>';
for($i=1;$i<=$iter;$i++)
{
if($i % $num_on_row ==1) print '<tr>';
print '<td>'.(($i <= $num) ? '<input '.(($i > 1) ? 'size="6" ' : '').'type="text" name="yourname[]" />' : '').'</td>';
if($i % $num_on_row ==0) print '</tr>\n';
}
print '</table>';
?>
<input type="submit" value="send" />
</form>
|
| |
|
|
|
|
|
|
|
для: Balamut182
(01.09.2008 в 14:45)
| | то что нужно но не до конца.
Первое поле КАЖДОЙ строчки ,не только самой первой. | |
|
|
|
|
|
|
|
для: nek-v
(01.09.2008 в 14:54)
| | вот так?
<form method="post">
<?php
$num_on_row = 7;
$num = 150;
$iter = $num + ($num_on_row - ($num % $num_on_row));
print '<table>';
for($i=1;$i<=$iter;$i++)
{
$ost = $i % $num_on_row;
if($ost ==1) print '<tr>';
print '<td>'.(($i <= $num) ? '<input '.(($ost ==1) ? '' : 'size="6" ').'type="text" name="yourname[]" />' : '').'</td>';
if($ost ==0) print '</tr>\n';
}
print '</table>';
?>
<input type="submit" value="send" />
</form>
|
| |
|
|
|
|
|
|
|
для: Balamut182
(01.09.2008 в 14:56)
| | *DANSE*
Да так!!!!!
Блин вы супер!!! | |
|
|
|
|
|
|
|
для: Balamut182
(01.09.2008 в 14:56)
| | А с выводом из базы не поможете?
Так же в цикле? | |
|
|
|
|
|
|
|
для: nek-v
(01.09.2008 в 15:00)
| | хм....
слабо представляю себе вашу таблицу. там будет только одна запись?
в принципе тоже самое.
делаете запрос на выборку и в инпут в цикле добавляете value | |
|
|
|
|
|
|
|
для: Balamut182
(01.09.2008 в 15:05)
| | записей там будет тысячи.
Ибо то с чем мы тут бьемся это сборник технологических карт - рецептов для ресторана.
А рецептов тысячи.
Я их буду выдергивать по id. то есть переходя по ссылке типа viev.php?act=viev&id=$id дуду выдергивать нужную запись.
Надо вывод такой же как и форма с небольшими добавками статического текста.
только выводить не в инпуты а в простые ячейки таблицы | |
|
|
|
|
|
|
|
для: nek-v
(01.09.2008 в 15:12)
| |
<table>
<?php
$num_on_row = 7;
$num = 150;
$iter = $num + ($num_on_row - ($num % $num_on_row));
$sql = "SELECT * FROM `table_name` WHERE `id_row` = '".$_GET['id']."'";
$query_id = mysql_query($sql);
$row = mysql_fetch_array($query_id);
for($i=1;$i<=$iter;$i++)
{
$ost = $i % $num_on_row;
if($ost ==1) print '<tr>';
print '<td>'.(($i <= $num) ? row['col_'.$i] : '').'</td>';
if($ost ==0) print '</tr>\n';
}
?>
</table>
|
подразумевается, что имена столбцов таблицы у вас называются col_1, col_2 и т.д.
первичный ключ - id_row | |
|
|
|
|
|
|
|
для: Balamut182
(01.09.2008 в 15:28)
| | я понимаю что я уже обнаглел сос воими вопросами,
но попытка записи выдала вот это:
Unknown column '0' in 'field list'
|
Что это значит? | |
|
|
|
|
|
|
|
для: nek-v
(01.09.2008 в 16:33)
| | Нет колонки с таким именем в таблице базы данных. | |
|
|
|
|
|
|
|
для: sim5
(01.09.2008 в 16:36)
| | но она есть! | |
|
|
|
|
|
|
|
для: nek-v
(01.09.2008 в 16:37)
| | Разумнее было бы вообще сделать эту форму как элементы многомерного массива, получив который сформировать многосточный запрос для INSERT. | |
|
|
|
|
|
|
|
для: sim5
(01.09.2008 в 16:44)
| | разумнее...
но мозгов у меня маловато...
Может покажете как? | |
|
|
|
|
|
|
|
для: nek-v
(01.09.2008 в 16:46)
| | пишите в аську | |
|
|
|
|
|
|
|
для: nek-v
(01.09.2008 в 16:46)
| | Можно привести и пример. Но. Сначала решите как у вас будет организована сама база этих данных. Если вы это уже решили, то как организована таблица/таблицы ее? "Номер блюда" - это обязательно должен вводить пользователь? Что означает этот параметр? | |
|
|
|
|
|
|
|
для: nek-v
(01.09.2008 в 16:33)
| | это эначит, что такое поле не найдено)
вам надо определиться с именами столбцов таблицы и именами инпутов формы и вести отсчет в циклах с одной позиции, т.е. начинать цикл допустим с 1 и называть колонки соответственно col_1, col_2 и т.д. и придерживаться этих имен при создании таблицы и при добавлении в нее записи
<?php
$sql = "INSERT INTO `table_name` SET ";
foreach($_POST['yourname'] as $key=>$value)
{
$sql .= " `col_".$key."` = '".$value."',";
}
$sql = substr($sql, 0, strlen($sql)-1);
mysql_query($sql);
?>
|
<?php
$sql = "CREATE TABLE `table_name` (
`row_id` int(11) NOT NULL auto_increment,";
for($i = 0; $i < 150; $i++)
{
$sql .= "`col_".$i."` text, ";
}
$sql .= "PRIMARY KEY (`row_id`))";
mysql_query($sql);
?>
|
<table>
<?php
$num_on_row = 7;
$num = 150;
$iter = $num + ($num_on_row - ($num % $num_on_row));
$sql = "SELECT * FROM `table_name` WHERE `id_row` = '".$_GET['id']."'";
$query_id = mysql_query($sql);
$row = mysql_fetch_array($query_id);
for($i=0;$i<$iter;$i++)
{
$ost = $i % $num_on_row;
if($ost ==1) print '<tr>';
print '<td>'.(($i <= $num) ? row['col_'.$i] : '').'</td>';
if($ost ==0) print '</tr>\n';
}
?>
</table>
|
| |
|
|
|
|
|
|
|
для: Balamut182
(01.09.2008 в 16:38)
| | о боже...
foreach($_POST['yourname'] as $key=>$value
|
это чья переменная???
Кнопки отправки или полей формы?
Может в нее col_ писать надо? | |
|
|
|
|
|
|
|
для: nek-v
(01.09.2008 в 16:56)
| | про это написано в предыдущем посте )
$sql .= " `col_".$key."` = '".$value."',"; | |
|
|
|
|
|
|
|
для: Balamut182
(01.09.2008 в 16:59)
| | вот эта
может так? | |
|
|
|
|
|
|
|
для: nek-v
(01.09.2008 в 17:13)
| |
<?php
$sql = "INSERT INTO `table_name` SET ";
foreach($_POST['yourname'] as $key=>$value)
{
$sql .= " `col_".$key."` = '".$value."',";
}
$sql = substr($sql, 0, strlen($sql)-1);
mysql_query($sql);
?>
|
| |
|
|
|
|
|
|
|
для: Balamut182
(01.09.2008 в 17:14)
| | угу
[You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '' at line 1PHP Warning: Invalid argument supplied for foreach() in G:\проекты\conf\add1.php on line 4
|
| |
|
|
|
|
|
|
|
для: nek-v
(01.09.2008 в 17:19)
| | напишите пожалуйста в аську 463-362-568 что содержит массив $_POST | |
|
|
|
|
|
|
|
для: nek-v
(01.09.2008 в 14:12)
| | --- | |
|
|
|
|
|
|
|
для: coloboc66
(01.09.2008 в 14:28)
| | ...по правилам русского языка принято писать жИры, а не жЫры!
(Прим см. учебник русского языка 3 класс// правила ЖИ-ШИ пиши с буквой И) | |
|
|
|
|
|
|
|
для: argo
(01.09.2008 в 18:41)
| | coloboc66 вообще-то туда не ходил. Поэтому не надо его попрекать. | |
|
|
|