Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/meteor/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 在下一页显示动态复选框的值。并插入该值_Php - Fatal编程技术网

Php 在下一页显示动态复选框的值。并插入该值

Php 在下一页显示动态复选框的值。并插入该值,php,Php,我已经创建了一个动态复选框,但未能在另一页上显示其值。我所做的工作如下: index.php <form method="post" action="print.php"> <?php $host="localhost"; $username="root"; $password=""; $database="checkbox"; mysql_connect($host,$username,$password); my

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

index.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的secon页面上显示该值:

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

您需要使用
打印功能来显示数组中的所有值。像

print_r($_POST['name']);

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

print_r($_POST['name']);

查看代码中发生了什么:- 您正在数组中命名复选框。 因此,当您在php中获得提交时,您将收到一个名为:-name[]的数组 因此$\u POST['name']将在php中返回一个数组。 当您使用print方法时,它只能打印变量值。 它无法打印数组或对象。如果使用print/echo方法打印数组/对象,它将只打印它们的类型。 因此,要打印数组,可以使用print\u r()方法,也可以使用var\u dump()检查变量中的内容。 您可以通过任何循环以自己喜欢的方式访问阵列。 有关print-r和var_转储的更多信息,请遵循手动链接 [php.net手册

查看代码中发生了什么:- 您正在数组中命名复选框。 因此,当您在php中获得提交时,您将收到一个名为:-name[]的数组 因此$\u POST['name']将在php中返回一个数组。 当您使用print方法时,它只能打印变量值。 它不能打印数组或对象。如果使用打印/回显方法打印数组/对象,它将只打印它们的类型。 因此,要打印数组,可以使用print\u r()方法,也可以使用var\u dump()检查变量中的内容。 您可以通过任何循环以自己喜欢的方式访问阵列。 有关print-r和var_转储的更多信息,请遵循手动链接 [php.net手册

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

这里我添加了$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++;
}
如果您没有在代码中使用$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
    }
}
if(是数组($\u POST['name'])){
foreach($_POST['name']作为$key=>$name){
回显$key“=>”,$name“
”; //这里$key是数组索引,$name是复选框的值 } }
您将需要某种方法来确定选中了哪个复选框。您有两个选项可以使用和索引变量,并将其作为索引或从值中识别

这里我添加了$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++;
}
如果您没有在代码中使用$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
    }
}
if(是数组($\u POST['name'])){
foreach($_POST['name']作为$key=>$name){
回显$key“=>”,$name“
”; //这里$key是数组索引,$name是复选框的值 } }

愚蠢的问题…你在提交前是否勾选了框?你得到了什么?是的。但它会显示“数组”…复选框不会打印任何内容,除非你勾选了框。它只在勾选后打印…愚蠢的问题…你在提交前勾选了框吗?你得到了什么?是的。但它会显示“数组”……除非您勾选复选框,否则复选框不会打印任何内容。它仅在选中后打印……您的输入是array
name=“name[]”
,因此您只能在PHP代码中使用数组和数组。您的数组计数将与您选中的项目数相同。我应该如何仅将valueforeach($\u POST['name']作为$val)打印{echo$val;}它只打印value.thanx很多chandra kishor….但我也不知道….无法获得打印的速率之和。php$rate=0;foreach($_POST['name']as$val){echo$val;//它将显示value$valArr=explode(“-”,$val);//explode将从-中断开字符串并将其转换为数组//因此$valArr[0]将进行测试,$valArr[1]将是rate$rate+=$valArr[1];}echo$rate;//将打印rate之和您的输入是array
name=“name[]”
,因此您只能在PHP代码中预期和数组。您的数组计数将与您检查的项目数相同。我应该如何仅将valueforeach($\u POST['name']作为$val)打印{echo$val;}它只打印value.thanx很多chandra kishor….但我也不知道….无法获得打印的速率之和。php$rate=0;foreach($_POST['name']as$val){echo$val;//它将显示value$valArr=explode(“-”,$val);//explode将从-中断开字符串并将其转换为数组//因此$valArr[0]将进行测试,$valArr[1]将是rate$rate+=$valArr[1];}echo$rate;//将打印rate之和是的……结果完全相同……但我只需要显示值,而不是带值的数组信息……我已经添加了如何使用它,如果这是您想要的。如果您不使用名称索引,则
$key
没有任何意义,因为它将始终是一个连续的数字。是的……结果完全相同相同…但我只需要显示值,而不是带值的数组信息…我已经添加了如何使用它,如果这是您想要的。如果您不使用名称索引,则
$key
没有任何意义,因为它将始终是一个连续的数字。测试的数量大于70…因此它看起来是一个大页面…我如何显示结果o不同列中的f数组…如每列显示20个结果…您可以尝试如下操作:。只需遵循第二个示例。同样,这取决于您希望显示的方式。测试的数量大于70…因此这似乎是一个大页面…如何在不同列中显示数组的结果…如每列显示20个结果…您可以尝试一些方法像