提交表单后无法获取变量

时间:2016-04-24 10:45:20

标签: php mysql

$ _POST ['add sub menu']中的$ role_id中没有提取变量$ role_id1。   我想将$ role_id1存储在$ role_id中并插入到数据库中。我点击提交按钮,role_id1正在获取父菜单但是在我点击添加子菜单之后,role_id在后端存储0。但是我想要它存储谷值在我点击submit后获取的role_id1的内容。如果可能的话,建立任何解决方案。

  <?php

 $dbcon = new MySQLi("localhost","root","","menu");
if(isset($_POST['add_main_menu']))
{
$menu_name = $_POST['menu_name'];
$parent_id = 0;
$role_id = $_POST['role_id'];
$menu_link = $_POST['mn_link'];
$sql=$dbcon->query("INSERT INTO menu   VALUES('','$menu_name','$parent_id','$role_id','$menu_link')");
}
  if(isset($_POST['add_sub_menu']))
{
$parent_id = $_POST['parent'];
$name = $_POST['sub_menu_name'];

$role_id = $role_id1;
$menu_link = $_POST['sub_menu_link'];

$sql=$dbcon->query("INSERT INTO menu VALUES('','$name','$parent_id','$role_id','$menu_link')");
} 

?>

<head>
 <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Dynamic Dropdown Menu</title>
<link rel="stylesheet" type="text/css" href="style.css" media="all" />
</head>
<body>
<div id="head">
<div class="wrap"><br />
<h1><a href="index.php">Back to menu</a></h1>
</div>
</div>
<center>
<pre>
<form method="post">
 <input type="text" placeholder="menu name :" name="menu name" /><br />

 <input type="text" placeholder="role id :" name="role_id" /><br />
 <input type="text" placeholder="menu link :" name="mn_link" /><br />
   <button type="submit" name="add_main_menu">Add main menu</button> 
 </form>
 </pre>
<br />
<pre>
<form method="post">
<select name="role_id">
<option selected="selected">select role id</option>

<?php
$res=$dbcon->query("SELECT distinct role_id FROM menu");
while($row=$res->fetch_array())
{
    ?>
     <option value="<?php echo $row['role_id']; ?>"><?php echo       $row['role_id']; ?></option>
<?php
 }
  ?>
  </select><br />
  <input type="submit" value="submit" name="submit">

<?php if(isset($_POST['submit']))
{
?>
 <select name="parent">
  <option selected="selected">select parent menu</option>
<?php
$role_id1 = $_POST['role_id'];

$res=$dbcon->query("SELECT * FROM menu where role_id= $role_id1 AND    parent_id=0 ");
 while($row=$res->fetch_array())
 {
?>
     <option value="<?php echo $row['id']; ?>"><?php echo $row['name']
;

?></option>
<?php


   }
   }



   ?>
  </select><br />
   <input type="text" placeholder="menu name :" name="sub_menu_name" /><br    />
   <input type="text" placeholder="menu link :" name="sub_menu_link" /><br />
   <button type="submit" name="add_sub_menu">Add sub menu</button>
 </form>
  </pre>
  <a href="index.php">back to main page</a>
  </center>

   </body>
    </html>

1 个答案:

答案 0 :(得分:1)

$role_id1 = $_POST['role_id'];

$role_id1的生命周期是脚本停止的位置(最后一行),输出发送到浏览器(再次看到表单)。

所以在代码顶部的行上:

$role_id = $role_id1;

$role_id1不再存在。如果您查看错误记录(或打开display_errors),您会看到Notice: Undefined variable: role_id1 in ...

如果您想保留该值,请将其放入隐藏元素中,以便下次提交该表单时将其包含在POST数据中:

echo '<input type="hidden" name="previous_role_id" value="' . htmlspecialchars($_POST['role_id']) . '">';

一个旁注(为了完整性),虽然隐藏了元素,但用户可以更改该值。