发布,并在同一时间在PHP中

你对我的问题有什么build议吗? 我需要同时使用get和post。 获取,因为我需要输出用户input的内容。 而后,因为我需要访问相关的inputMySQL数据库。 它看起来像这样:

<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>'); } ?> 

当我这样做时,我真的得到了很多未定义的错误。 你可以推荐我为了得到用户input的值和mysql数据一起做什么。

进行HTTP请求时只能有一个动词(POST,GET,PUT,…) 。 但是,你可以做

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

然后PHP也会填充$_GET['foo'] ,虽然发送的请求是POST的。

然而,你的问题似乎更多的是你试图一次发送两个表格 ,针对两个不同的脚本。 在一个请求中这是不可能的。

您不能同时进行GET和POST。

将这两种forms合为一体

例如,将表单合并到一个“发布”表单中。 在你的代码中,从$ _POST中提取任何你需要的东西。

而“年”不等于“年”,你的示例代码也需要工作。

如其他答案一样,你不能同时做一个获取和一个发布请求。 但是,如果你想统一你的PHP代码,以读取通过获取或发布请求收到的variables,也许你可以使用$ _REQUEST

POST和GET(如HEAD,FILE,DELETE等)是HTTP 方法 。 您的浏览器在请求前发送一个HTTP请求到其中一个HTTP请求,所以您不能同时发送两个方法(一个来自Web嗅探器的请求头示例):

 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] 

GETPOST最大的区别在于GET从一个url中检索一个响应,而POST也向这个url发送一些内容数据。 当您提交表单时,数据以由enctype属性定义的标准格式收集,并且这次也发送到一个url。

此外,url是以标准方式格式化的,并且在 字符称为QUERY STRING

当服务器接收到数据时,它将这些信息传递给PHP,它读取URL并读取方法,请求的主体(数据)以及大量的其他内容。 最后它用这个数据填充它的超全局数组,让你知道用户发送了什么( $ _SERVER , $ _GET和$ _POST等等);

重要的提醒! 另外,如果PHP使用URL的查询string填充$ _GET超全局,并最终将$ _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> 

我没有testing过这个,但它是通过表单的动作值发送GETvariables的一个可能的解决scheme…

 $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]; } } 

这不是完全的傻瓜certificate,但我遇到了一个问题,早期包含一个头(“位置:”)的错误,包括获取variables不被$ _GET服务器看到一个url,如http://website.com/page ?msg = 0,但它们存在于$ _SERVER ['REQUEST_URI']variables中。 希望这有助于和祝你好运!