Эмуляция вложенности форм (тег FORM)
Как это работало если бы это было возможно:
При отправке формы (по нажатию submit, например) отправляются только данные содержащиеся непосредственно на данной форме,
а все родительские и дочерние формы просто игнорируются.
Зачем это надо?
Допустим у меня есть список чего-то (пусть он выводится в таблицу).
И я хочу прописать ряд действий как для каждого элемента в отдельности,
так и для нескольких, множество которых определяестя checkbox'ами.
Т.е. это выглядело бы следующим образом: один большой тег FORM для всего списка,
в котором для каждого элемента есть checkbox и плюс в нем множество дочерних FORM
по одному на каждый элемент.
В принципе, в моем случае множество маленьких FORM можно заменить на ссылки (тег "A"),
но я не хочу этого делать, т.к. с моей точки зрения это было бы не правильно:
1) Это действие, а не переход на другой раздел сайта.
2) Роботы поисковиков и проги-закачки сайтов будут переходить по этим ссылкам
{
Если здесь должно производиться сразу какое-то действие - то это смертельно (например: удаление записи).
Если эта ссылка на форму внесения изменений, то это - не смертельно, но зачем поисковикам это индексировать а так же скачивать пользователям (прогами),
а особенно если элементов много, и соответственно для каждого элемента и будет скачана эта форма редактирования.
}
Собственно вопрос:
Подскажите, пожалуйста, как можно проэмулировать вложенность форм.
Или как можно такое реализовать может быть с помошью JavaScript ?
*Обратите внимание, что код в посте оформляется специальными тэгами*
Так как вопрос скорее концептуальный (технологический) нежели чем просто решение конкретной проблемы...
Пока переделал на ссылки. То как было - закомментированно.
Код:
<?php
function print_post(post_data $post_data)
{
//
global $current_user;
//
$post =& $post_data->post;
$user =& $post_data->user;
?>
<table width="100%">
<tr>
<td rowspan="2" width="180"><?print($user->login)?></td>
<td><?
if( isset($current_user) && $current_user->is_admin )
{
?>
<input type="checkbox" name="selected_post_id_list[<?print($post->id)?>]" value="<?print($post->id)?>">
<?php
}
?><?print($post->create_time)?></td>
</tr>
<tr><td><?print($post->text)?></td></tr>
<tr>
<td>btns1</td>
<td align="right">
<!--<form method="get">
<input type="hidden" name="forum_action" value="post">
<input type="hidden" name="id" value="<?//print($post->thread_id)?>">
<input type="hidden" name="parent_post_id" value="<?//print($post->id)?>">
<input type="submit" value="Ответить">
</form>-->
<a href="?forum_action=post&id=<?print($post->thread_id)?>&parent_post_id=<?print($post->id)?>">Ответить</a>
</td>
</tr>
</table>
<?php
}
function print_post_in_cell(post_data $post_data)
{
?>
<tr><td>
<?php
print_post($post_data);
?>
</td></tr>
<?php
}
function print_post(post_data $post_data)
{
//
global $current_user;
//
$post =& $post_data->post;
$user =& $post_data->user;
?>
<table width="100%">
<tr>
<td rowspan="2" width="180"><?print($user->login)?></td>
<td><?
if( isset($current_user) && $current_user->is_admin )
{
?>
<input type="checkbox" name="selected_post_id_list[<?print($post->id)?>]" value="<?print($post->id)?>">
<?php
}
?><?print($post->create_time)?></td>
</tr>
<tr><td><?print($post->text)?></td></tr>
<tr>
<td>btns1</td>
<td align="right">
<!--<form method="get">
<input type="hidden" name="forum_action" value="post">
<input type="hidden" name="id" value="<?//print($post->thread_id)?>">
<input type="hidden" name="parent_post_id" value="<?//print($post->id)?>">
<input type="submit" value="Ответить">
</form>-->
<a href="?forum_action=post&id=<?print($post->thread_id)?>&parent_post_id=<?print($post->id)?>">Ответить</a>
</td>
</tr>
</table>
<?php
}
function print_post_in_cell(post_data $post_data)
{
?>
<tr><td>
<?php
print_post($post_data);
?>
</td></tr>
<?php
}
Код:
////////////////////////////////////////////////////////////////
// Тема
////////////////////////////////////////////////////////////////
<?php
else if( $forum_action == 'show_thread' )
{
$thread_id = $_REQUEST['id'];
$thread_data = load_thread_data($thread_id);
$thread =& $thread_data->thread;
$current_user_id = get_current_user_id();
$current_user = load_user($current_user_id);
//$thread->create_time
//$thread->fixed;
//$thread->closed;
//$thread_data->root_post_data;
//$thread_data->posts_data;
// Build Path
print_path(build_path_to_thread($thread->id));
?>
<form method="post">
<table width="100%">
<tr><td><h1><?print($thread->title)?>, <?print($thread->subtitle)?></h1></td></tr>
<?php
$mode = $_REQUEST['mode'];
if( ($mode == 'linear_ex') || !isset($mode) )
{
print_post_in_cell($thread_data->root_post_data);
foreach( $thread_data->posts_data as $post_data )
{
print_post_in_cell($post_data);
}
}
?>
<tr>
<td align="right">
<?php
if( $current_user->is_admin )
{
?>
<input type="hidden" name="forum_action" value="delete_post_list">
<input type="hidden" name="confirm" value="1">
<input type="hidden" name="thread_id" value="<?print($thread_id)?>">
<input type="submit" value="Удалить">
<?
}
?>
<!--<form method="get">
<input type="hidden" name="forum_action" value="post">
<input type="hidden" name="id" value="<?//print($thread_id)?>">
<input type="submit" value="Ответить">
</form>-->
<a href="?forum_action=post&id=<?print($thread_id)?>">Ответить</a>
</td>
</tr>
</table>
</form>
<?php
}
?>
// Тема
////////////////////////////////////////////////////////////////
<?php
else if( $forum_action == 'show_thread' )
{
$thread_id = $_REQUEST['id'];
$thread_data = load_thread_data($thread_id);
$thread =& $thread_data->thread;
$current_user_id = get_current_user_id();
$current_user = load_user($current_user_id);
//$thread->create_time
//$thread->fixed;
//$thread->closed;
//$thread_data->root_post_data;
//$thread_data->posts_data;
// Build Path
print_path(build_path_to_thread($thread->id));
?>
<form method="post">
<table width="100%">
<tr><td><h1><?print($thread->title)?>, <?print($thread->subtitle)?></h1></td></tr>
<?php
$mode = $_REQUEST['mode'];
if( ($mode == 'linear_ex') || !isset($mode) )
{
print_post_in_cell($thread_data->root_post_data);
foreach( $thread_data->posts_data as $post_data )
{
print_post_in_cell($post_data);
}
}
?>
<tr>
<td align="right">
<?php
if( $current_user->is_admin )
{
?>
<input type="hidden" name="forum_action" value="delete_post_list">
<input type="hidden" name="confirm" value="1">
<input type="hidden" name="thread_id" value="<?print($thread_id)?>">
<input type="submit" value="Удалить">
<?
}
?>
<!--<form method="get">
<input type="hidden" name="forum_action" value="post">
<input type="hidden" name="id" value="<?//print($thread_id)?>">
<input type="submit" value="Ответить">
</form>-->
<a href="?forum_action=post&id=<?print($thread_id)?>">Ответить</a>
</td>
</tr>
</table>
</form>
<?php
}
?>
Хм.. а PHP-то при чем? HTML код интересно посмотреть, т.е. то, что будет передано браузеру.
<html>
<head>
<meta http-equiv="content-type" content="text/html; charset=windows-1251" />
<meta http-equiv="pragma" content="no-cache" />
<meta http-equiv="cache-control" content="no-cache" />
<META HTTP-EQUIV="PRAGMA" CONTENT="NO-CACHE" />
<META HTTP-EQUIV="CACHE-CONTROL" CONTENT="NO-CACHE" />
<META HTTP-EQUIV="Expires" CONTENT="Wed, 26 Feb 1997 08:21:57 GMT" />
<META HTTP-EQUIV="Expires" CONTENT="0" />
<link rel="stylesheet" type="text/css" href="style.css" />
</head>
<body>
<table width="100%">
<tr>
<td><a href="index.php">Главная</a></td><td><a href="user_list.php">Пользователи</a></td><td><b>Форум</b></td>
<td width="50">
<form method="post">
<a href="profile.php?login=overall">overall</a>
<input type="hidden" name="login_action" value="logout">
<input type="submit" value="Выйти">
</form>
</td>
</tr>
</table>
<a href="forum.php">Форум</a>-><a href="?forum_action=show_forum&id=1">Форум 1</a>-><a href="?forum_action=show_thread&id=8">Тема 2</a>
<form method="post">
<table width="100%">
<tr><td><h1>Тема 2, суб 2</h1></td></tr>
<tr><td>
<table width="100%">
<tr>
<td rowspan="2" width="180">overall</td>
<td> <input type="checkbox" name="selected_post_id_list[13]" value="13">
2007-07-21 02:51:18</td>
</tr>
<tr><td>текст 2</td></tr>
<tr>
<td>btns1</td>
<td align="right">
<!--<form method="get">
<input type="hidden" name="forum_action" value="post">
<input type="hidden" name="id" value="">
<input type="hidden" name="parent_post_id" value="">
<input type="submit" value="Ответить">
</form>-->
<a href="?forum_action=post&id=8&parent_post_id=13">Ответить</a>
</td>
</tr>
</table>
</td></tr>
<tr><td>
<table width="100%">
<tr>
<td rowspan="2" width="180">overall</td>
<td> <input type="checkbox" name="selected_post_id_list[14]" value="14">
2007-07-21 02:52:19</td>
</tr>
<tr><td>текст 2.1</td></tr>
<tr>
<td>btns1</td>
<td align="right">
<!--<form method="get">
<input type="hidden" name="forum_action" value="post">
<input type="hidden" name="id" value="">
<input type="hidden" name="parent_post_id" value="">
<input type="submit" value="Ответить">
</form>-->
<a href="?forum_action=post&id=8&parent_post_id=14">Ответить</a>
</td>
</tr>
</table>
</td></tr>
<tr><td>
<table width="100%">
<tr>
<td rowspan="2" width="180">overall</td>
<td> <input type="checkbox" name="selected_post_id_list[15]" value="15">
2007-07-21 02:52:41</td>
</tr>
<tr><td>текст 2.2</td></tr>
<tr>
<td>btns1</td>
<td align="right">
<!--<form method="get">
<input type="hidden" name="forum_action" value="post">
<input type="hidden" name="id" value="">
<input type="hidden" name="parent_post_id" value="">
<input type="submit" value="Ответить">
</form>-->
<a href="?forum_action=post&id=8&parent_post_id=15">Ответить</a>
</td>
</tr>
</table>
</td></tr>
<tr><td>
<table width="100%">
<tr>
<td rowspan="2" width="180">overall</td>
<td> <input type="checkbox" name="selected_post_id_list[16]" value="16">
2007-07-21 02:53:50</td>
</tr>
<tr><td>текст 2.3</td></tr>
<tr>
<td>btns1</td>
<td align="right">
<!--<form method="get">
<input type="hidden" name="forum_action" value="post">
<input type="hidden" name="id" value="">
<input type="hidden" name="parent_post_id" value="">
<input type="submit" value="Ответить">
</form>-->
<a href="?forum_action=post&id=8&parent_post_id=16">Ответить</a>
</td>
</tr>
</table>
</td></tr>
<tr><td>
<table width="100%">
<tr>
<td rowspan="2" width="180">overall</td>
<td> <input type="checkbox" name="selected_post_id_list[17]" value="17">
2007-07-21 03:06:03</td>
</tr>
<tr><td>текст 2.4 new</td></tr>
<tr>
<td>btns1</td>
<td align="right">
<!--<form method="get">
<input type="hidden" name="forum_action" value="post">
<input type="hidden" name="id" value="">
<input type="hidden" name="parent_post_id" value="">
<input type="submit" value="Ответить">
</form>-->
<a href="?forum_action=post&id=8&parent_post_id=17">Ответить</a>
</td>
</tr>
</table>
</td></tr>
<tr><td>
<table width="100%">
<tr>
<td rowspan="2" width="180">overall</td>
<td> <input type="checkbox" name="selected_post_id_list[18]" value="18">
2007-07-21 03:06:20</td>
</tr>
<tr><td>текст 2.5 new 2</td></tr>
<tr>
<td>btns1</td>
<td align="right">
<!--<form method="get">
<input type="hidden" name="forum_action" value="post">
<input type="hidden" name="id" value="">
<input type="hidden" name="parent_post_id" value="">
<input type="submit" value="Ответить">
</form>-->
<a href="?forum_action=post&id=8&parent_post_id=18">Ответить</a>
</td>
</tr>
</table>
</td></tr>
<tr><td>
<table width="100%">
<tr>
<td rowspan="2" width="180">overall</td>
<td> <input type="checkbox" name="selected_post_id_list[19]" value="19">
2007-07-21 03:07:35</td>
</tr>
<tr><td>текст 2.6 new 3</td></tr>
<tr>
<td>btns1</td>
<td align="right">
<!--<form method="get">
<input type="hidden" name="forum_action" value="post">
<input type="hidden" name="id" value="">
<input type="hidden" name="parent_post_id" value="">
<input type="submit" value="Ответить">
</form>-->
<a href="?forum_action=post&id=8&parent_post_id=19">Ответить</a>
</td>
</tr>
</table>
</td></tr>
<tr><td>
<table width="100%">
<tr>
<td rowspan="2" width="180">overall</td>
<td> <input type="checkbox" name="selected_post_id_list[20]" value="20">
2007-07-21 03:11:08</td>
</tr>
<tr><td>dfgdg</td></tr>
<tr>
<td>btns1</td>
<td align="right">
<!--<form method="get">
<input type="hidden" name="forum_action" value="post">
<input type="hidden" name="id" value="">
<input type="hidden" name="parent_post_id" value="">
<input type="submit" value="Ответить">
</form>-->
<a href="?forum_action=post&id=8&parent_post_id=20">Ответить</a>
</td>
</tr>
</table>
</td></tr>
<tr><td>
<table width="100%">
<tr>
<td rowspan="2" width="180">overall</td>
<td> <input type="checkbox" name="selected_post_id_list[21]" value="21">
2007-07-21 03:11:51</td>
</tr>
<tr><td>sadfaasd</td></tr>
<tr>
<td>btns1</td>
<td align="right">
<!--<form method="get">
<input type="hidden" name="forum_action" value="post">
<input type="hidden" name="id" value="">
<input type="hidden" name="parent_post_id" value="">
<input type="submit" value="Ответить">
</form>-->
<a href="?forum_action=post&id=8&parent_post_id=21">Ответить</a>
</td>
</tr>
</table>
</td></tr>
<tr><td>
<table width="100%">
<tr>
<td rowspan="2" width="180">overall2</td>
<td> <input type="checkbox" name="selected_post_id_list[25]" value="25">
2007-07-21 03:28:35</td>
</tr>
<tr><td>_____________</td></tr>
<tr>
<td>btns1</td>
<td align="right">
<!--<form method="get">
<input type="hidden" name="forum_action" value="post">
<input type="hidden" name="id" value="">
<input type="hidden" name="parent_post_id" value="">
<input type="submit" value="Ответить">
</form>-->
<a href="?forum_action=post&id=8&parent_post_id=25">Ответить</a>
</td>
</tr>
</table>
</td></tr>
<tr><td>
<table width="100%">
<tr>
<td rowspan="2" width="180">overall</td>
<td> <input type="checkbox" name="selected_post_id_list[32]" value="32">
2007-07-21 06:44:11</td>
</tr>
<tr><td>ЖЖЖЖЖЖЖЖЖ</td></tr>
<tr>
<td>btns1</td>
<td align="right">
<!--<form method="get">
<input type="hidden" name="forum_action" value="post">
<input type="hidden" name="id" value="">
<input type="hidden" name="parent_post_id" value="">
<input type="submit" value="Ответить">
</form>-->
<a href="?forum_action=post&id=8&parent_post_id=32">Ответить</a>
</td>
</tr>
</table>
</td></tr>
<tr>
<td align="right">
<input type="hidden" name="forum_action" value="delete_post_list">
<input type="hidden" name="confirm" value="1">
<input type="hidden" name="thread_id" value="8">
<input type="submit" value="Удалить">
<!--<form method="get">
<input type="hidden" name="forum_action" value="post">
<input type="hidden" name="id" value="">
<input type="submit" value="Ответить">
</form>-->
<a href="?forum_action=post&id=8">Ответить</a>
</td>
</tr>
</table>
</form>
<center><table border=1 cellspacing=0 cellpadding=3><tr><td align=center>счетчик</td>
<td align=center>кол-во<br>вызовов</td>
<td align=center>общее<br>вpемя</td><td align=center>сpеднее<br>вpемя</td>
</tr>
<tr><td colspan=4>вся пpогpамма pаботала 0.0359 сек</tD></tr>
<tr><td colspan=4>все внутpенные вызовы заняли 0.0000 сек (0 pаз)</tD></tr>
<tr><td colspan=4>остаток вpемени 0.0359 сек</tD></td></table></center>
</body>
</html>
[/html]
Ясно. Если вы хотите проверять все записи сразу, почему не используете единую форму для всей страницы?
Цитата: Комаджу
Ясно. Если вы хотите проверять все записи сразу, почему не используете единую форму для всей страницы?
Ладно, хрен с тобой, ты походу туп как болванка.
Если хочешь въехать в тему прочитай первый пост.
Спасибо, что соизволили сравнить свое неумение объяснить с моим задаванием наводящих вопросов. И, кстати, web-прогарммирование в другой ветке.
"проэмулировать" вложенность форм можно сбором данных со страницы (значений чекбоксов или чего еще подобного) скриптом JS. складываешь собранные данные в хиден-поля и не паришься.
нет необходимости эмулировать вложенность форм. Есть необходимость определеить какая кнопка была нажата. Допустим есть две кнопки. Первая N1 вторая N2. Когда мы нажимаем на N1 то обрабатываем форму по правилу function_N1, если N2 то function_N2 соответственно.