У вас есть предложения с моей проблемой. Мне нужно использовать get и post в одно и то же время. Получите, потому что мне нужно выводить то, что пользователь набрал. И сообщение, потому что мне нужно получить доступ к базе данных 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.
У вас может быть только один глагол (POST, GET, PUT, …) при выполнении HTTP-запроса . Однако вы можете сделать
<form name="y" method="post" action="y.php?foo=bar">
а затем PHP будет заполнять $_GET['foo']
, хотя отправленный запрос был POST'ed.
Тем не менее, ваша проблема, похоже, намного больше, чем вы пытаетесь отправить сразу две формы , направленные на два разных сценария. Это невозможно в рамках одного Запроса.
Вы не можете делать GET и POST одновременно.
Объедините две формы в одну.
Например, объедините формы в одну форму «post». В вашем коде извлекайте все, что вам нужно, из $ _POST.
И «YEAR» не соответствует «Году», ваш образец кода также нуждается в работе.
Как и другие ответы, вы не можете одновременно получать запрос на получение и отправку. Но если вы хотите унифицировать свой PHP-код, чтобы прочитать переменную, полученную с помощью запроса на получение или публикацию, возможно, вы можете использовать $ _REQUEST
POST и GET (как HEAD, FILE, DELETE и т. Д.) Являются методами 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 и POST заключается в том, что GET получает ответ от url и POST отправляет также некоторые данные контента на этот URL. Когда вы отправляете свою форму, данные собираются в стандартном формате, определяемом атрибутом enctype, и отправляются также на этот раз на url.
Также URL-адрес отформатирован стандартным образом и часть строки, найденная позади ? символ называется QUERY STRING .
Когда сервер получает данные, он передает эту информацию в PHP, который считывает URL-адрес и считывает метод, тело (данные) запроса и огромное количество других вещей. Наконец, он заполняет свои суперглобальные массивы этими данными, чтобы вы знали, что отправляет пользователь ( $ _SERVER , $ _GET и $ _POST и множество других);
Важное замечание! Кроме того, если PHP заполняет суперглобальную сумму $ _GET строкой запроса URL-адреса и, в конечном итоге, суперкоммулятором $ _POST с данными, найденными в теле запроса, $ _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 с URL-адресом, например http://website.com/page ? msg = 0, но они существовали в переменной $ _SERVER ['REQUEST_URI']. Надеюсь, что это помогает и удачи!