使用$ _POST

时间:2016-04-08 19:09:19

标签: php variables

我有一个searchresult.php文件,我从我的数据库中取出所有菜单名称并用一个靠近它们的按钮打印它们,其中按钮的输入类型隐藏在哪里我通过变量$关联菜单名称nameofmenu。像

这样的东西

Menu1 - >按钮(参见菜单)

Menu2 - >按钮(参见菜单)

菜单3 - >按钮(参见菜单)

<?PHP
while($myrow = pg_fetch_assoc($result)) {
  $nameofmenu = $myrow[name];
  echo $nameofmenu; //It prints correctly the name of the menu
  echo '<form name"formname" method="post" action="resultsmenu.php">';
 echo "<input type='hidden' name='menuname' value=' $nameofmenu ' />";
 echo "<input type='submit' name='submit' value='See Menu' />";
}
?>

然后我的resultsme​​nu.php文件会在我点击任何按钮时打开。

<?php
  $nameofmenu = $_POST['menuname'];
  $db = pg_connect('host=localhost dbname=test user=myuser password=mypass');

    $query = "SELECT * FROM menu where name='$nameofmenu'";
    $result = pg_query($query);
    if (!$result) {
        echo "Problem with query " . $query . "<br/>";
        echo pg_last_error();
        exit();
    }
    $myrow = pg_fetch_assoc($result); 
    $description = $myrow[description];
 ?>

我有两个问题:

  1. 第一个问题:在searchresult.php中,即使它正确地打印出所有不同的菜单名称,每当我点击任何按钮时,所有按钮都返回我的相同菜单(最后一个,在示例中) :结果菜单文件的$ nameofmenu = $ _POST [&#39; menuname&#39;];中的菜单3。

  2. 第二个问题:这个问题发生在resultsme​​nu.php文件中。即使对于菜单3,它也会识别变量中的已识别值。意思是我没有从查询中找回任何结果或值:$ query =&#34; SELECT * FROM menu其中name =&#39; $ nameofmenu&#39;&#34 ;; 但是,如果我手动设置值,就像$ nameofmenu =&#34; Menu3&#34 ;;那它有效。 我甚至试过这段代码来查看从$ _POST [&#39; menuname&#39;]传递的值是否有任何不同,并且手动键入的值和它接缝是相同的值,因为它打印了#34;两个变量都相同&#34;

    $nameofmenu2 = "Menu3";
    $nameofmenu = $_POST['menuname']; //where the value in menuname is Menu3
     if ($nameofmenu2 = $nameofmenu){echo "Both variables are the same";}
    
  3. 非常感谢

2 个答案:

答案 0 :(得分:0)

你一遍又一遍地覆盖相同的输入字段(= name),所以只有&#34; last&#34;覆盖返回/可用。为避免这种情况,请将数据作为POST-ARRAYs(也切换引号):

echo '<input type="hidden" name="menuname[]" value="'.$nameofmenu.'" />';

提交后,您现在会看到$_POST['menuname']array! e.g。

var_dump($_POST['menuname']);

答案 1 :(得分:0)

如David所述,您将nameofmenu2指定给nameofmenu。但此外,当你回应:

 echo "<input type='hidden' name='menuname' value=' $nameofmenu ' />";

你在$ nameofmenu的两边都包含空格。当您进行查询时,这可能会导致问题。尝试使用:

var_dump($_POST['menuname']);

检查您预期的帖子数据。