Могу ли я смешать $ _get и $ _post? - PullRequest
0 голосов
/ 31 января 2011

чтобы отредактировать мои записи, я хочу:

    <form id="pregunta" name="pregunta" class="form_pregunta" method="post" action="pregunta.php?id=26">
<h2>Titulo de la pregunta</h2><input name="q" id="q" class="q" value="este es mi títiulo " type="text">
<h2>Describe tu pregunta</h2>
<textarea name="texto" id="texto" style="width: 98%;">&lt;p&gt;esta es mi descripcion&lt;/p&gt;</textarea>
<h2>Etiquetas</h2>
<input name="tags" id="tags" onmouseover="mostrar_tooltip('nube_e','','0','70','')" onmouseout="ocultar_tooltip('nube_e')" value="dos,tres,una,">
<input name="responde_a" style="display: none;" id="responde_a" value="0">
<button name="pregunta" id="pregunta" type="submit">form_edit_question_button</button>
</form>

А затем в file.php

я бы хотел $_get['id'] и $_post['inputs']

но когда я пойду:

if(isset($_POST['edit_pregunta'])){
     echo 'lalalalalalalalalalalalalalala';
     post_edit_pregunta();
 }

, он никогда не войдет: S.это нормально или я что-то упускаю ... я хотел, чтобы не было скрытого ввода с идентификатором поста, который я хочу отредактировать ..

Ответы [ 7 ]

4 голосов
/ 31 января 2011

Я не уверен на 100%, но формы не отправляют свои name при отправке, тем более их id.

Вместо этого вы можете сделать следующее:

<form id="edit_pregunta" method="post" action="file.php?id='$this->id'">
    <input type="hidden" name="edit_pregunta" value="anything">
    ... //inputs here
</form>

и ваш if теперь должен войти.

2 голосов
/ 31 января 2011

Похоже, вы проверяете атрибут id вашей формы.Не отправляется при отправке формы, отправляются только значения в <input>, <select>, <textarea> и <button>.

Вы должны проверить одно из них.

Редактировать: Ваше имя кнопки "pregunta", так что это переменная POST, которую вы должны проверять, например,

if(isset($_POST['pregunta'])){

Просто чтобы прокомментировать общие параметрыв «действии» и входах формы вы можете смешивать их до тех пор, пока метод формы «отправлять».Вы не можете установить параметры GET в действии формы и использовать метод "get"

<!-- Good -->
<form action="proc.php?id=123" method="post">
<input name="foo" value="foo">
<input type="submit">
</form>

<!-- Bad -->
<form action="proc.php?id=123" method="get">
<input name="foo" value="foo">
<input type="submit">
</form>
1 голос
/ 31 января 2011

Не должно быть никаких проблем с наличием переменных get и post в одном запросе, но вы уверены, что ваш синтаксис правильный?Если это обычный php, разве вы не должны писать

<form id="edit_pregunta" method="post" action="file.php?id=<?php echo $this->id; ?>">
        ... //inputs here
</form>

[Edit]

Проблема в том (если я прав, и это стандартный php), что вы генерируете форму, котораявыглядит примерно так:

<form id="edit_pregunta" method="post" action="file.php?id='$this->id'">
        ... //inputs here
</form>

Это будет выглядеть так: '$this->id' (включая '-signs).Когда вы хотите что-то вроде этого:

<form id="edit_pregunta" method="post" action="file.php?id=51">
        ... //inputs here
</form>

Тогда $_GET['id'] будет 51.

[Edit2]

Кроме того, я думаю, что вам нужноизмените

if(isset($_POST['edit_pregunta'])){

на

if(isset($_POST['pregunta'])){

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

0 голосов
/ 07 февраля 2014

Используйте input type = "submit" вместо тега кнопки. Вам нужно имя для отправки формы и активировать скрипт php!

HTML код:

<form action="change.php" method="POST">
    <input type="password" name="p1" class="change_text" placeholder="New Password"/></br>
    <input type="password" name="p2" class="change_text" placeholder="Re-Password"/></br>
    <input type="submit" name="change" value="Change Password" id="change" />
</form>

PHP код:

<?php
    if (isset($_POST['change']) {
        $p1=$_POST['p1'];
    }
?>
0 голосов
/ 31 января 2011

Хотя спецификация HTTP не запрещает параметры запроса в методах POST, это несколько необычно. Было бы лучше использовать скрытое поле ввода в форме для передачи любых не пользовательских значений в сценарий.

Тем не менее, синтаксис вашей формы неправильный. Вам нужно использовать «echo», чтобы вставить значение $ this-> id в действие.

0 голосов
/ 31 января 2011

Простое добавление id к форме не приведет к созданию $_POST['edit_pregunta'], который вы проверяете.

Вместо этого, внутри тега формы, добавьте <input name="foo" />;в скрипте php проверьте $_POST['foo']

0 голосов
/ 31 января 2011

Да, можно, я делал это несколько раз. Возможно, что-то не так с вашим кодом.

Есть ли какой-либо элемент управления с именем = "edit_pregunta" или это просто идентификатор формы? Идентификаторы не отправляются на сервер.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...