Два обработчика формы?

amen666

Новичок
Два обработчика формы?

Такая проблема - для каждой выводимой новости нужно по два отдела - флажок на удаление и кнопка передающая коммент на редактирование в форму внизу страницы (нажимаешь кнопку - появляется форма с соответствующим сообщением). Вот значит цикл

PHP:
<form method="POST" action="delcomm.php">
<?
for ($i=1;$i<=$total_new_com;$i)
{
while ($rw = mysql_fetch_array($rs))
{
//Выбираем название новости
$head = "SELECT head, id FROM newslent
         WHERE id=".$rw['id_news']."";
$res = mysql_query($head);
$row = mysql_fetch_array($res);
 ?>
 <tr align=center>
   <?php 
   // Выводим коммент жирным или обчным шрифтом в зависимости от того, старый он или новый
   if (($rw['new']=='new'))
   echo "
   <th>".$i++."</th>
   <th>".$rw['name_com']."</th>
   <th align=left>".$rw['comm']."</th>
   <th>".$rw['date_reg']."</th>
   <th><a href=editcommentform.php?id=".$row['id'].">".$row['head']."</a></th>
   ";
   else echo"
   <td>".$i++."</td>
   <td>".$rw['name_com']."</td>
   <td align=left>".$rw['comm']."</td>
   <td>".$rw['date_reg']."</td>
   <td><a href=editcommentform.php?id=".$row['id'].">".$row['head']."</a></td>
   ";
   ?>
   
   <td width=40><?//Здесь должна была быть та самая форма?>
   </td>
   <td>
	   <input type="hidden" name="id_news" value="<?php echo $rw['id_news']?>">
	   <input type="hidden" name="newcomm" value="1">
	   <input type="checkbox" name="id[]" value="<?php echo $rw['id']?>">
 
 <?
}}//К О Н Е Ц цикла 
?>
   </td>
 </tr>
 </table>
   	 
	 <input type="submit" value="Удалить">
	 </form>

<?
Как видите цикл "обрамлён" формой с чекбоксом.

А вот форма(кнопка) для отправки коммента на редактирование:


<form method="POST" action="newcomments.php" style="display:inline">
<input type="submit" name="edit" value="Р" title="Редактировать коментарий">
<input type="hidden" name="date_reg" value="<?php echo $rw['date_reg']?>">
<input type="hidden" name="name_com" value="<?php echo htmlspecialchars($rw['name_com'])?>"> <input type="hidden" name="comm" value="<?php echo htmlspecialchars($rw['comm'])?>">
<input type="hidden" name="id" value="<?php echo $rw['id']?>">
<input type="hidden" name="id_news" value="<?php echo $rw['id_news']?>">
<input type="hidden" name="newcomm" value="1">
</form>


Что делать? Если объединить всё в одну форму, то как назначать какие скрытые поля какому обработчику нужно отправлять? И как вообще сделать, чтобы у одной формы было два обработчика?
 

AmdY

Пью пиво
Команда форума
дай самбиту name и проверяй какой был нажат.
и руки нужно отрывать за вставку тега form между tr, будут проблемы, учите html
 

amen666

Новичок
AmdY, "самбит" - это кнопка, как я понял?
А какие проблемы могут быть?


*****, опа, это я с условиями экспериментировал, видать забыл лишние скобки убрать))
 

Фанат

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

проблем никаких не будет
 

amen666

Новичок
new добавляется автоматически, при редактировании коммента, если чё.
 

amen666

Новичок
Поле new имеет два состояния - нью и олд. Когда юзер добавляет сообщение ставится нью, когда админ редактирует - олд.
 

Фанат

oncle terrible
Команда форума
ну вот об этом я и писал :)
автоматом - скажем, через два дня - никак?
только вручную?
 

amen666

Новичок
*****
не понял суть вопроса.
вобщем вручную ничего делать не надо - система работает как часы.

Как на счёт основного вопроса? Можно подробнее о принципе?
 

Фанат

oncle terrible
Команда форума
можно
дай самбиту name и проверяй какой был нажат.

если админ редактирует сообщение не вручную, то чем, интересно, он это делает...
 

amen666

Новичок
там значит так. это поле нью нужно для того, чтобы отображать комменты жирным или обычным.
если не отредактировали вручную - нет проблем - т.к там есть ещё дата последнего входа и идёт двойное условие.
нафиг мне чтоб у всех стоял олд?

-~{}~ 04.11.09 11:30:

дай самбиту name и проверяй какой был нажат.
Ты хотел сказать саБМиту..
Но тогда придётся обработчики засунуть на эту же страницу, да?
 

Фанат

oncle terrible
Команда форума
придется, ага.
это не так страшно, как кажется.
 

amen666

Новичок
Вобщем сделал так.
Я объединил две формы в одну. И тут встала такая проблема - для чекбокса нужна только одна форма (и это обязательно), а для кнопок редактирования - одна форма для одной кнопки. Так как можно использовать лишь одну форму, я подумал, что можно имя и текст коммента тоже записывать в массив, а индексами будут служить id комментов.

Подскажите, как правильно записать в массив имя и как потом из массива вытаскивать нужное.
Это в цикле:

PHP:
<input type="hidden" name="name_com['$rw['id']']" value="<?php echo htmlspecialchars($rw['name_com'])?>">
А это поле, в которое помещается имя при нажатии на кнопку:

<td><input type="text" name="name_com" size=50% value="<?echo #З Д Е С Ь нужно вытаскивать имя из массива>"></td>
 

Фанат

oncle terrible
Команда форума
а почему бы не сделать редактирование ссылкой?
 

amen666

Новичок
Мне нужны кнопки. Я знаю, что можно ссылкой, но от этого страдает дизайн. Да и потом, нужно и этому научиться.
 

Фанат

oncle terrible
Команда форума
ох ты господи, какие запросы. всех ссылка устраивает, а у него дизайн особенный.
то-то я смотрю, в форме для отправки на редактирование ровно 8 лишних строк. явно требования дизайна.

учиться надо делать человеческий интерфейс, а не пихать все функции в одну форму.
натурально, как на картинке http://stuffthathappens.com/blog/2008/03/05/simplicity/

окей, что там тебе еще не ясно? при чем здесь какие-то хиддены и тексты? тебе сказали делать САБМИТЫ.
Тебе нужны кнопки? ВОТ В НИХ И прописывай. нужную инфу
 

amen666

Новичок
... они не лишние, ёмаё! Оработчик этой формы должен сделать апдейт базы данных - изменить текст коммента и имя юзера, если надо. И ему (обработчику) нужно передать параметры, чтоб он знал какой коммент редактировать и куда потом перенаправить пользователя.

Вобщем вот код. Думаю он всё разъяснит:



PHP:
////////////////////////////////////////////////////////
////////////////////////////////////////////////////////
///////////////ВЫВОД НОВЫХ КОММЕНТАРИЕВ/////////////////
////////////////////////////////////////////////////////
////////////////////////////////////////////////////////
?>
<table bgcolor=Beige border=1 width=97% align="center">
<form method="POST" action="newcomments.php">
   <tr bgcolor=olive>
     <th width=20>#</th>
	 <th>Автор</th>
	 <th width=500>Комментарий</th>
	 <th width=100>Дата</th>
	 <th>Новость</th>
	 <th>Ред</th>
	 <th>X</th>
   </tr>

<?
for ($i=1;$i<=$total_new_com;$i)
{
while ($rw = mysql_fetch_array($rs))
{
//Выбираем название новости
$head = "SELECT head, id FROM newslent
         WHERE id=".$rw['id_news']."";
$res = mysql_query($head);
$row = mysql_fetch_array($res);
 ?>
 <tr align=center>
   <?php 
   if ($rw['new']=='new')
   echo "
   <th>".$i++."</th>
   <th>".$rw['name_com']."</th>
   <th align=left>".$rw['comm']."</th>
   <th>".$rw['date_reg']."</th>
   <th><a href=editcommentform.php?id=".$row['id'].">".$row['head']."</a></th>
   ";
   else echo"
   <td>".$i++."</td>
   <td>".$rw['name_com']."</td>
   <td align=left>".$rw['comm']."</td>
   <td>".$rw['date_reg']."</td>
   <td><a href=editcommentform.php?id=".$row['id'].">".$row['head']."</a></td>
   ";
   ?>
   
   <td width=40>
       <input type="submit" name="edit" value="Р" title="Редактировать коментарий">  
	   <input type="hidden" name="date_reg" value="<?php echo $rw['date_reg']?>">
	   <input type="hidden" name="name_com[]" value="<?php echo htmlspecialchars($rw['name_com'])?>">
   	   <input type="hidden" name="comm" value="<?php echo htmlspecialchars($rw['comm'])?>">
   	   <input type="hidden" name="id" value="<?php echo $rw['id']?>">
   </td>
   <td>
   	   <input type="hidden" name="id_news" value="<?php echo $rw['id_news']?>">
	   <input type="hidden" name="newcomm" value="1">
	   <input type="checkbox" name='id[]' value="<?php echo $rw['id']?>">
 
 <?
}
}
?>
   </td>
 </tr>
 </table>
   	 
	 <input type="submit" name="del" value="Удалить">
	 </form>

<?

////////////////////////////////////////////////////////
////////////////////////////////////////////////////////
////////////ФОРМА РЕДАКТИРОВАНИЯ КОММЕНТАРИЯ////////////
////////////////////////////////////////////////////////
////////////////////////////////////////////////////////
if (isset($_POST['edit']))
{
$name_com = $_POST['name_com'];
echo $name_com;
 ?>


<table border=1 width=97% align="center" valign="bottom">
<br>
<br>
<br>
<br>
<br>
<form method="POST" action="redaktcomm.php">
<input type="hidden" name="id" value="<?echo $_POST['id'];?>">
<input type="hidden" name="newcomm" value="<?echo $_POST['newcomm'];?>">
<input type="hidden" name="id_news" value="<?echo $_POST['id_news'];?>">
  <th  bgcolor="peru">Редактирование Комментария</th>
  <tr bgcolor="peru">
	 <td><b><?echo $_POST['date_reg'];?></b></td>
  </tr>
  
  <tr bgcolor="peru">
	 <td><input type="text" name="name_com" size=50% value="<?echo array_values($name_com);?>"></td>
  </tr>
  
  <tr>
	 <?php $rr=$_POST['comm'];
	 //Функция обработки тегов
     TagTobbTag($rr);
	 ?>
	 <td bgcolor="peru"><textarea name="comm" rows=4 cols=75><?echo $rr;?></textarea></td>
  </tr>
  
  <tr>
	 <td bgcolor="peru"><input type="submit" value="Изменить"></td>
  </tr>
  
</form>
</table>
 
<?php
}
Для удаления ещё не написано.
 

Фанат

oncle terrible
Команда форума
чота я совсем перестал понимать.
откуда на этой странице взялся $_POST?
 

С.

Продвинутый новичок
Мне нужны кнопки. Я знаю, что можно ссылкой, но от этого страдает дизайн.
А то, что ссылку можно сделать визуально выглядящей, как кнопка (как минимум тремя разными способами), это уже похоже на ракетные технологии.
 
Сверху