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']. Надеюсь, это поможет и удачи!