0

我创建了一个动态复选框,但未能在另一个页面上显示其值。我所做的工作如下:

索引.php

<form method="post" action="print.php">
    <?php 
    $host="localhost";
    $username="root";
    $password="";
    $database="checkbox";

    mysql_connect($host,$username,$password);

    mysql_select_db("$database");
    //Create the query
    $sql = "select test, rate FROM lab";
    $result = mysql_query($sql) or die(mysql_error());
    while($row = mysql_fetch_assoc($result)) {
        echo <<<EOL
        <input type="checkbox" name="name[]"value="$row['test']}/{$row['rate']}"/>          
        {$row['test']}-{$row['rate']}<br />

        EOL;
    }

    ?>
    <br>

    <input type="submit" name="submit" value="Add" />
</form>

我正在尝试在名为 print.php 的第二个页面上显示该值:

<?php
print $_POST['name'];
?>
4

3 回答 3

4

您需要使用print_r函数来显示数组中的所有值。像

print_r($_POST['name']);
于 2013-07-22T08:20:23.643 回答
0

请参阅您的代码中发生了什么:-您在数组中命名您的复选框。因此,当您在 php 中获得提交时,您将收到一个名称为 :- name[] 的数组,因此 $_POST['name'] 将在 php 中返回一个数组。当您使用 print 方法时,它只能打印变量值。它不能打印数组或对象。如果您使用 print/echo 方法打印数组/对象,它只会打印它们的类型。因此,要打印数组,您可以使用print_r()方法,也可以使用var_dump()检查变量中的内容。您可以通过任何循环以您喜欢的方式访问数组。有关 print-r 和 var_dump 的更多信息,请按照手册链接 [php.net 手册][1] http://www.php.net/manual/en/function.var-dump.php

于 2013-07-22T08:36:39.880 回答
0

您将需要一些方法来确定选中了哪个复选框。您有几个选项使用和索引变量并将其作为索引或从值中识别它。

在这里,我添加了 $rowNum 作为name.

$rowNum=0;
while($row = mysql_fetch_assoc($result)) {
  echo <<<EOL
  <input type="checkbox" name="name[$rowNum]"value="$row['test']}/{$row['rate']}"/>          
      {$row['test']}-{$row['rate']}<br />

EOL;
$rowNum++;
}

在这里,如果您仅选中第一个和第三个复选框,在 PHP 中您将获得

$_POST['name'] = Array
(
    [0] => test0/rate0
    [2] => test2/rate2
)

如果您没有在代码中使用 $rowNum 并选择与上述相同的选项,您将获得以下输出。

$_POST['name'] = Array
(
    [0] => test0/rate0
    [1] => test2/rate2
)

您可以在以下位置使用这样的数组print.php

if (is_array($_POST['name'])){
    foreach($_POST['name'] as $key=>$name){
        echo $key, '=>', $name,'<br/>';
        //Here $key is the array index and $name is the value of the checkbox
    }
}
于 2013-07-22T09:22:42.850 回答