Post и get одновременно в php

у вас есть какие-либо предложения с моей проблемой. Мне нужно использовать get и post одновременно. Get, потому что мне нужно вывести то, что набрал пользователь. И сообщение, потому что мне нужно получить доступ к базе данных mysql по отношению к этому входу. Это выглядит примерно так:

<form name="x" method="get" action="x.php">
<input name="year" type="text">

<select name="general" id="general">
        <font size="3">
        <option value="YEAR">Year</option>

</form>

это выведет содержимое mysql в зависимости от того, что пользователь проверит:

<form name="y" method="post" action"y.php">
<input name="fname" type="checkbox">
</form>

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

   <?php

               if($_POST['general'] == 'YEAR'){
                   ?>
                   <?php echo $_GET["year"]; ?>
                   <?php
            $result2 = mysql_query("SELECT * FROM student
    WHERE student.YEAR='$syear'");
    ?>
    <table border='1'>
            <tr>

                    <?php if ( $ShowLastName ) { ?><th>LASTNAME</th><?php } ?>
                    <?php if ( $ShowFirstName ) { ?><th>FIRSTNAME</th><?php } ?>
        </tr>

    <?php while ( $row = mysql_fetch_array($result2) ) {
        if (!$result2)  { 

    }
        ?>
            <tr> 
                    <td><?php echo $row['IDNO']?> </td>
                    <td><?php echo $row['YEAR'] ?> </td>
     <?php if ( $ShowLastName ) { echo('<td>'.$row['LASTNAME'].'</td>'); } ?></td>
                    <?php if ( $ShowFirstName ) { echo('<td>'.$row['FIRSTNAME'].'</td>'); } ?>

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

5 ответов


У вас может быть только один глагол (POST, GET, PUT,...) при выполнении HTTP-запроса. Тем не менее, вы можете сделать

<form name="y" method="post" action="y.php?foo=bar">

и тогда PHP будет заполнять $_GET['foo'] также, хотя отправленный запрос был отправлен.

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


вы не можете сделать GET и POST одновременно.

объединить две формы в одну.

например, объедините формы в одну форму "post". В вашем коде извлеките все, что вам нужно, из $_POST.

и " год "не равно "год", ваш пример кода также нуждается в работе.


Как saig другими ответами, вы не можете сделать запрос get и post одновременно. Но если вы хотите унифицировать свой PHP-код, чтобы прочитать переменную, полученную через запрос get или post, возможно, вы можете использовать $_REQUEST


POST и GET (как глава, файл, удалить и т. д.) являются HTTP методы. Ваш браузер отправляет HTTP-запрос на сервер с одним из них перед запросом, поэтому вы не можете отправить два метода одновременно (пример заголовка запроса из веб-сниффера):

GET / HTTP/1.1[CRLF]
Host: web-sniffer.net[CRLF]
Connection: close[CRLF]
User-Agent: Web-sniffer/1.0.31 (+http://web-sniffer.net/)[CRLF]
Accept-Encoding: gzip[CRLF]
Accept-Charset: ISO-8859-1,UTF-8;q=0.7,*;q=0.7[CRLF]
Cache-Control: no[CRLF]
Accept-Language: de,en;q=0.7,en-us;q=0.3[CRLF]
Referer: http://web-sniffer.net/[CRLF]

большая разница от GET и в должности это получить получить ответ от URL-адресом и отправить отправить также некоторые данные контента на этот url. Когда вы отправляете ваша форма, данные собираются в стандартном формате, определенном атрибутом enctype и отправляются, также на этот раз, на url.

также url-адрес отформатирован стандартным образом, а часть строки находится за ? персонаж называется СТРОКА ЗАПРОСА.

когда сервер получает данные, он передает эту информацию PHP, который читает URL и читает метод, тело (данные) запроса и огромное количество других вещей. В конечном счете это заполняет его суперглобальные массивы с этими данными, чтобы вы знали, что пользователь отправляет (в$_SERVER, переменная$_GET и $_POST, где и куча других);

Внимание! Также, если PHP заполнит $ _GET superglobal строкой запроса URL и, в конечном итоге, $ _POST superglobal данными, найденными в теле запроса,$_POST и $_GET не связаны с HTTP.

Итак, если вы хотите заполнить $_POST, где и переменная$_GET в то же время вы должны отправить вашу форму таким образом:

<form method="post" action="http://myurl/index.php?mygetvar=1&mygetvar=2">
    <input name="year" type="text" />
    <imput type="submit" />
</form>

Я не тестировал это, но это возможное решение для отправки переменных GET через значение действия формы...

$request_uri = $_SERVER['REQUEST_URI'];
$request_uri = str_replace("&", "?", $request_uri);
$request_args = explode("?", $request_uri);
foreach($request_args as $key => $val) {
    if(strpos($val, "=") > 0) {
        $nvp_temp = explode("=", $val);
        $_GET[$nvp_temp[0]] = $nvp_temp[1];
    }
}

это не совсем доказательство дурака, но я столкнулся с проблемой с ошибкой заголовка("Location:") ранее, которая включала переменные get, не видимые сервером под $_GET с url-адресом, таким как http://website.com/page?msg=0 но они существовали в переменной $_SERVER['REQUEST_URI']. Надеюсь, это поможет и удачи!