И вновь о POST запросах

CjEcho

Новичок
И вновь о POST запросах

Всем привет, интересует следующее.

Есть страничка admin.php, на ней расположенны 3 кнопки-ссылки вида:

<a href='admin.php' class='button'><span>button 1</span></a>
<a href='admin.php' class='button'><span>button 2</span></a>
<a href='admin.php' class='button'><span>button 3</span></a>

Каким образом заставить реагировать кнопки таким образом, чтобы при нажатии на них в POST данных передавалось следующее:

1. Переменные PHP, к примеру $login, $password.
2. Переменная $button_id с номером нажатой кнопки ... (1-3)

Проблема в неясности того, как вызвать метод POST при нажатии на ссылку <a>, а не на элемент <BUTTON>.

Более развёрнутое пояснение для чего это нужно:
Прежде всего это страница модерирования.
admin.php на входе получает из формы login.php POST данные $login, $password
Рисует добавленную пользователями сайта информацию (message_id), и предлагает следующие действия.

1. Добавить сообщение на сайт.
2. Отложить сообщение на потом.
3. Не добавлять сообщение с сайта.

Вот это и есть 3 кнопочки оформленные в виде ссылки, с помощью тега <a>.

При нажатии на любую из этих ссылок. Должно произойти следующее:

1. Переменные $message_id, $button_id, $login, $password должны быть записаны в POST.
2. Страница должна перейти на саму себя <a href='admin.php'>. Принять POST данные.
3. В заголовке после проверки данных авторизации перехватывается код нажатой кнопки $button_id, и на основании этого в БД с записью $message_id происходят изменения.
4. Выводим следующее сообщение и предлагаем опять выбрать действие.

Помогите, а?
 

Gremboloid

инженера Гр...
<a href - это ссылка, а не кнопка
По ссылке можно сделать только GET запрос
Хочешь передать POST данные по нажатию на ссылку, javascript тебе в помощь
 

Савелей

Новичок
Gremboloid
В начале ВЫ написали- только через GET, а далее когда я отправил код, Вы уже отредактировали свое сообщение.
 

Савелей

Новичок
Gremboloid
примите мои извинения, наверно я ошибся...
но самое главное, что человеку помогли решить его вопрос:)
 

CjEcho

Новичок
Спасибо Вам большое, я и не спорил, что это кнопка. То есть мой код должен быть примерно следующим:

PHP:
<FORM action='admin.php' method='post' name='form_moderate'>
     <INPUT type="hidden" name="login" value="<?php echo $login;?>">
     <INPUT type="hidden" name="password" value="<?php echo $password;?>">
     <INPUT type="hidden" name="message_id" value="<?php echo $message_id;?>">

     <A href='admin.php' onClick="document.form_moderate.submit()" class='button'><SPAN>button_1</SPAN></A>
     <A href='admin.php' onClick="document.form_moderate.submit()" class='button'><SPAN>button_2</SPAN></A>
     <A href='admin.php' onClick="document.form_moderate.submit()" class='button'><SPAN>button_3</SPAN></A>
</FORM>
Здесь я ссылка сгенерирует событие POST, но мне нужно чтобы как то кнопочки различались... То есть переменная $button_id была хотя бы... Как это сделать?

-~{}~ 23.09.09 12:58:

JavaScript просто пока вообще не знаю... Извините уж...
 

CjEcho

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

Фанат

oncle terrible
Команда форума
<A href='admin.php'
<A href='admin.php'
<A href='admin.php'
и ты хочешь сказать, что не знаешь, как передать переменную скрипту через адрес?
Может быть, не стоит тупить так жестоко? А попробовать сняться с ручника?

-~{}~ 23.09.09 11:10:

у меня графическая кнопка..
input type=image
если не знаешь яваскрипта, то зачем его использовать?
 

CjEcho

Новичок
Я думаю так:

<A href='admin.php?button_id=1'
<A href='admin.php?button_id=2'
<A href='admin.php?button_id=3'

Но ведь это же GET запрос... Всё будет нормально? Если я буду и POST и GET передавать одновременно. Возможно я туплю.. )
 

Фанат

oncle terrible
Команда форума
одновременно разный тип запроса послать, конечно, нельзя.
но строка URL никакого отношения к типу запроса не имеет
 

CjEcho

Новичок
Что то не работает, при нажатии на кнопки (ссылки) просто $posterror="1". Соответственно $user_login и $user_password = empty...
Пробовал сделать <INPUT type='submit'>, тоже самое...

admin.php
PHP:
<?php 
if (empty($_POST)):$posterror=1; else:$posterror=0; endif;

echo $posterror; #debug info
echo $user_name; #debug info
echo $user_password; #debug info
?>

<FORM name='moderate' action='admin.php' method='post'>

	<INPUT TYPE='hidden' NAME='user_login' VALUE='<?php echo $user_login;?>'>
	<INPUT TYPE='hidden' NAME='user_password' VALUE='<?php echo $user_password;?>'>

	<a href='admin.php?button_id=1' onClick='document.moderate.submit()'>Одобрить и добавить</a>
	<a href='admin.php?button_id=2' onClick='document.moderate.submit()'>Отложить</a>
	<a href='admin.php?button_id=3' onClick='document.moderate.submit()'>Удалить</a>
	
</FORM>
-~{}~ 23.09.09 15:49:

Выходит что POST данные не проходят?
 

Фанат

oncle terrible
Команда форума
кстати, да.
не пост данные, а ссылка никакая не отправляется.
используй input type=image
 

cDLEON

Онанист РНРСlub
Что с людьми jQuery то делает :(((
Скорее всего из-за пинга, отправляется, всё таки ссылка, а форма молчит. Потому как онклик фолс не возвращает.. Так как ты делаешь - нельзя делать.

-~{}~ 23.09.09 14:06:

Два варианта:
Перед сабмитом менять action, второй вариант - использывать ТО, что тебе СОВЕТУЮТ!
 

CjEcho

Новичок
Интересно ... но что то конструкция выдаёт при обновлении по F5:

$posterror=1
$login TRUE
$login TRUE

а, при нажатии на кнопку submit

$posterror=0
$login FALSE
$login FALSE

PHP:
<?php #ПРОВЕРКА POST ДАННЫХ
if (empty($_POST)):$posterror=1; else:$posterror=0; endif;	#ЕСЛИ ЗАПРОС НЕ POST, ТО $posterror=0

$user_login=$_POST['user_login'];
$user_password=$_POST['user_password'];

	#DEBUGGIN
	echo $posterror;
	echo $user_login;
	echo $user_password;

<FORM name='moderate' action='admin.php' method='post'>

	<INPUT TYPE='hidden' NAME='user_login' VALUE='<?php echo $user_login;?>'>
	<INPUT TYPE='hidden' NAME='user_password' VALUE='<?php echo $user_password;?>'>

	<input type='submit'>
	
</FORM>
-~{}~ 24.09.09 00:41:

Разве невозможно перейти на туже форму, изменив POST данные?
 

CjEcho

Новичок
заменил

<input type='submit'>
на
<button type='submit'>submit</button>

то же самое ... $posterror=1
 
Сверху