create multi input

panika

Новичок
create multi input

Допустим у меня на странице доложна быть форма черед которую я буду добавлять сылки в определенную публикацию.
Т.е. допустим как в phpmyadmin реализовано создание таблицы где с помощью javascript добавляеться поле ввода, когда нужно добавить на 1 больше колонку чем расчитывал.
На javascript это ладно смогу сделать а вот как получить потом через POSt результат и более проще управляться этими данными, получить сколько всего создано полей с сылками и некоторыми несложными манипуляциями с помощью как я думаю array построить запрос на добавление в БД ссылок.
Пример формы:
PHP:
// Имя              ССылка              ДопПоле
<input name='c1_1' value='имя_1'><input name='c1_2' value='ссылка_1'><input name='c1_3' value='доп_1'><br />
<input name='c2_1' value='имя_2'><input name='c2_2' value='ссылка_2'><input name='c2_3' value='доп_2'><br />
<input name='c3_1' value='имя_3'><input name='c3_2' value='ссылка_3'><input name='c3_3' value='доп_3'><br />
...
# здесь кнопка которая манипулирует js добавление еще 1 строки дял формы c4, c5, c6 ...
если чтото непонятно в вопросе я сразу отвечу
 

StiM

Новичок
Добавь скрытый элемент в форму, и на JS увеличивай или уменьшай значение.
 

panika

Новичок
Вот что выводит print_r();

Array (
[c1_1] => имя_1
[c1_2] => ссылка_1
[c1_3] => доп_1
[c2_1] => имя_2
[c2_2] => ссылка_2
[c2_3] => доп_2
[c3_1] => имя_3
[c3_2] => ссылка_3
[c3_3] => доп_3
[submit] => Submit
)

Как теперь мне с этим управиться, есть ли способ облегчить задачу изменив код формы, ну хоть чтонибудь ниточку.
Я видел много проектов где такая фича реализовывалась теперь я с этим столкнулся и мне обязательно нада это сделать.
 

panika

Новичок
Я об этом думл но целесообразно ли будет мне не нада просто функцию а идею даже можно не скриптом а словами обьяснить что доложно с чем связываться, конечно примеры не помешалибы: вот что я придумал:
PHP:
<form method='POST'>
<input name='c[1][1]' value='имя_1'><input name='c[1][2]' value='ссылка_1'><input name='c[1][3]' value='доп_1'><br /> 
<input name='c[2][1]' value='имя_2'><input name='c[2][2]' value='ссылка_2'><input name='c[2][3]' value='доп_2'><br /> 
<input name='c[3][1]' value='имя_3'><input name='c[3][2]' value='ссылка_3'><input name='c[3][3]' value='доп_3'><br />
<input type='submit' name='submit' value='Submit'>
</form>
выводит:

Array (
[1] => Array (
[1] => имя_1
[2] => ссылка_1
[3] => доп_1
)
[2] => Array (
[1] => имя_2
[2] => ссылка_2
[3] => доп_2
)
[3] => Array (
[1] => имя_3
[2] => ссылка_3
[3] => доп_3
)
)

Поконстрирую посматрю что получиться. Жду дополнений, может я зря тут выжимаюсь.
 

StiM

Новичок
У тебя в любом случае получается массив. Всегда можно посчитать количество элементов в массиве. Вот тут почитай про обработку массивов: http://www.php.ru/manual/control-structures.foreach.html.
 

panika

Новичок
Как по другому из самого массива узнать сколько первых array в нем, тоесть тех которых содержат в себе еще по 3 строки.

-~{}~ 16.11.09 16:41:

потому как записывать лишнее поле в форму и изменять число при помощи js нецелесообразно.
 

panika

Новичок
да отличная функция правда на $_POST['c'] игнорирует но это ладно в прошлом теперь:
print_r($lala);
дял наглядности покажу что выводит:
Array (
[1] => Array (
[name] => имя_1
[link] => ссылка_1
[add] => доп_1
)
[2] => Array (
[name] => имя_2
[link] => ссылка_2
[add] => доп_2
)
[3] => Array (
[name] => имя_3
[link] => ссылка_3
[add] => доп_3
)
)

Но когда далее выполняеться вот этот скрипт:
PHP:
foreach ($lala as $v1) {
print "Name: ".$lala[$i]['name']." Link: ".$lala[$i]['link']." Add: ".$lala[$i]['add']."<br/>\n";
$i++;
}
ничего не выводит, т.е. :
Name: Link: Add:
Name: Link: Add:
Name: Link: Add:

Может я чтото не так делаю поправьте меня, слишком много времени уделяю этой фиче.
 

Фанат

oncle terrible
Команда форума
если слишком много, то, может, заняться чем-нибудь попроще?

читаем в документации про foreach и print_r
 

panika

Новичок
Все разобрался стоило лишь обратить на переменную $value
и все встало на свои места:

PHP:
foreach ($lala as $v1) {
    echo "Name: ".$v1['name']." Link: ".$v1['link']." Add: ".$v1['add']."<br/>\n";
}
Осталось уточнить когда я буду собирать запрос мне в foreach целесообразно и вообще осуществимо создавать отдельные запросы или соединять с помощью точки $query .= "blablabla";
чтобы получилось
"INSERT `files` blabla1; INSERT `files` blabla2; INSERT `files` blabla3;"
?

-~{}~ 16.11.09 17:30:

пока по делам бегал уже ответили )
 

StiM

Новичок
Автор оригинала: panika
Все разобрался стоило лишь обратить на переменную $value
и все встало на свои места:

PHP:
foreach ($lala as $v1) {
    echo "Name: ".$v1['name']." Link: ".$v1['link']." Add: ".$v1['add']."<br/>\n";
}
Осталось уточнить когда я буду собирать запрос мне в foreach целесообразно и вообще осуществимо создавать отдельные запросы или соединять с помощью точки $query .= "blablabla";
чтобы получилось
"INSERT `files` blabla1; INSERT `files` blabla2; INSERT `files` blabla3;"
?

-~{}~ 16.11.09 17:30:

пока по делам бегал уже ответили )
Ты можешь собирать запрос так как ты его указал, а после цикла выполнить, а можешь выполнять его каждый раз в конце блока цикла.
 

Фанат

oncle terrible
Команда форума
ну, та цепочка, которая здесь нарисована, скорее всего работать не будет, но вообще в одну строку можно.
хотя для трех запросов и не принципиально

и еще надо не забыть при составлении запросов волшебное слово mysql_real_escape_string
 

panika

Новичок
да конечно же mysql_real_escape_string но как мне кажется можно "INSERT INTO `files`".$matumba[0][1]." blabla"
 

Фанат

oncle terrible
Команда форума
можно.
но при составлении запросов не забыть волшебное слово mysql_real_escape_string
 
Сверху