【问题标题】:Get submit button value from multiple buttons php从多个按钮php获取提交按钮值
【发布时间】:2019-03-10 18:43:38
【问题描述】:

我在表单元素代码里面有一个动态菜单

<form method="GET" action="index.php">
<?php
display_menu(); // this function generates menu items
?>
</form>

生成菜单后,每个菜单项都是上述表单的提交按钮,我想通过提交按钮的名称或 id 属性获取单个元素的输入,并从数据库加载帖子。

<form method="GET" action="index.php">
<input type="submit" name="page-1" id="page-1" value="page-1">
<input type="submit" name="page-2" id="page-2" value="page-2">
<input type="submit" name="page-3" id="page-3" value="page-3">
<input type="submit" name="page-4" id="page-4" value="page-4">
</form>

所以当任何输入按钮被按下时,函数 display_post() 就会被调用。函数代码如下:-

function display_post(){
$conn = mysqli_connect('localhost', 'root', '', 'posts') or die('cannot connect');
if($_SERVER['REQUEST_METHOD'] == 'GET' ){
$blog_post_id = $_GET["id"]; 
$sql = "SELECT * FROM blog_posts where id='blog_post_id' ";
$result = mysqli_query($conn, $sql) or die('cannot load');
while ($row = mysqli_fetch_assoc($result)){
if($row > 0){
echo '<div>'.$row['content'].'</div>';
}else echo 'no posts';
}
}
}

但是,display_post() 方法在内容标签内调用,而 display_menu() 在另一个 div 内调用。 所以问题是我无法获得提交按钮的 ID,任何帮助将不胜感激。

【问题讨论】:

  • 哪个 ID?你的意思是输入值吗?
  • 不推荐使用未经处理的 GET 参数,这会导致 sqlinjections。您应该首先确保$blog_post_id 是一个数值。
  • page-1, page-2, page-3 是你的 blog_post_id 吗?
  • 我们无法通过id 获取输入字段,当您尝试获取$_GET["id"]; 时,我们通过name 获取输入字段
  • 我试过 $_GET["name"];也是,但同样的通知未定义

标签: php input dynamic menu submit


【解决方案1】:

当您点击提交按钮时,您将获得表单的所有输入值。

做一件事把print_r($_GET);exit;这个声明放在display_post()作为第一行,看看点击提交按钮后你会得到什么。

注意: 1.要获取点击按钮的值,那么你应该使用javascript或者jQuery和Ajax。 2.不能通过字段ID获取输入字段值。 前任。如果我们有字段&lt;input type="submit" name="page-1" id="page-1" value="page-1"&gt; 那么我们可以得到它的值:

echo $_GET['page-1'];

page-1是输入字段名。

【讨论】:

  • 我将变量 print_r($_GET) 放在 $blog_post_id = $_GET["id"]; 行之后并获取输出数组 ( [9] => html )
  • 把它作为函数print_r($_GET) ;exit();的第一行然后看结果是array("page-1"=&gt;page-1,"page-2"=&gt;page-2,"page-3"=page-3, "page-4"=&gt;page-4)
  • 相同的输出并具有与 Array ( [9] => html ) 相同的值,但我无法在变量 $blog_post_id = $_GET["id"] 中收集值,甚至无法使用数组索引 $blog_post_id = $_GET["0"]
【解决方案2】:

您可以为每个按钮制作5种不同的形式并将动作更改为

action="index.php?id=1" 

然后使用$_GET['id']

也改id='blog_post_id' " to id='$blog_post_id' "

【讨论】:

    【解决方案3】:

    如果我猜对了,那么你的困难是什么

    $blog_post_id = $_GET['id']; 
    $sql = "SELECT * FROM blog_posts where id='".$blog_post_id."' ";//I modified this line
    $result = mysqli_query($conn, $sql) or die('cannot load');
    

    【讨论】:

    • 它说注意:未定义索引:此行上的 id
    • 是的,正确的,请查看您的输入字段名称,这些是page-1page-2page-3page-4
    • @sudarshan,我们无法通过idname 等属性获取字段值,因为您正在尝试$_GET["id"]; 。这行不通。
    猜你喜欢
    • 2013-04-26
    • 2013-04-06
    • 1970-01-01
    • 2015-09-27
    • 2018-08-30
    • 2013-04-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多