【问题标题】:Is it possible to pass a variable of value from associative array, using hidden input, to another page?是否可以使用隐藏输入将关联数组中的值变量传递到另一个页面?
【发布时间】:2013-06-10 01:40:48
【问题描述】:

我正在尝试获取 mysql 行的 $w['id'] 值,并使用隐藏的输入字段和变量 $blog_id 将其传递到另一个页面。这是第一页的代码:

$query = "SELECT * FROM blog WHERE username = '$username' ORDER BY created_date DESC;";
$result = $mysqli->query($query);
$rows = resultToArray($result);
// var_dump($rows); 
foreach($rows as $r => $w) {
echo "<tr>\n";
    echo "<td>{$w['title']}\n";
    echo "<td>{$w['id']}\n";
echo "<td>{$w['created_date']}</td>\n";
echo "<td>{$w['updated_date']}</td>\n";
echo "<td style=\"border:none\">{$w['template']}</td>\n";

$blog_id = $w['id'];

echo "<input type=\"hidden\" name=\"id\" value=\"$blog_id\" />\n";
echo "<td style=\"border:none\"><button type=\"submit\" name=\"view\">View</button></td>\n";

echo "<td style=\"border:none\"><button type=\"submit\" name=\"edit\">Edit</button></td>\n";

echo "<td style=\"border:none\"><button type=\"submit\" name=\"delete\"><font color=\"red\">Delete</font></button></td>";
echo "</tr>\n";
}

?>

在我的 html 表中,值正确回显,但是当我尝试获取 $w['id'] 值并使用例如编辑按钮将其传递到下一页时,该值始终是mysql 表。
第二页关键部分的代码是:

sec_session_start();
$username = $_SESSION['username'];
// $blog_id = $_SESSION['blog_id'];

if(isset ($_POST['edit'])) {
    $blog_id = $_POST['id'];

    $result = $mysqli->query("SELECT * FROM blog WHERE id = '$blog_id'");

    if($result->num_rows > 0) { 
        $rows = resultToArray($result);
        foreach($rows as $r => $w) { 

        ?>

        <body id="blog_editor">
<?php var_dump($_POST); ?>

var_dump($_POST) 的值总是 ["id"]=>string(2) "43" 而第一页上的 foreach 循环会产生许多不同的 ID。 有谁知道我做错了什么,或者有另一种方法可以做同样的事情吗?

【问题讨论】:

    标签: php variables associative-array hidden-field


    【解决方案1】:

    您使用foreach 并回显许多不同的id

    我没有看到任何SUBMIT 按钮或&lt;form&gt; 标记。

    您可以做的是,在 foreach 循环中,使用自己的按钮创建一个表单:

    <?php
        foreach($rows as $r => $w) {
           echo '<form action="page.php" ...>
           echo ....
           echo '<input type="submit">
        }
    ?>
    

    或者,如果您在一个表单内有多个结果,那么您必须在每次循环循环时更改元素的name(稍后将值赋给`$_POST['id'])。

    为此改变这一行:

    echo "<input type=\"hidden\" name=\"id\" value=\"$blog_id\" />\n";
    

    1) 到这个:

    echo "<input type='hidden' name='id".$blog_id."' value='$blog_id' />\n";
    

    然后当您调用 $_POST 时,您将拥有 $_POST['idXX'] 其中 XX = ID 编号

    2) 或 TO this 创建一个包含所有 ID 的数组:

    echo "<input type='hidden' name='id[]' value='$blog_id' />\n";
    

    然后$_POST['id'] 将是一个数组

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2016-07-18
      • 1970-01-01
      • 1970-01-01
      • 2012-02-09
      • 1970-01-01
      • 1970-01-01
      • 2010-11-30
      相关资源
      最近更新 更多