使用PHP从HTML表单中收集信息

时间:2014-05-01 04:03:01

标签: php html forms

这就是我得到的。

formulario.php

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2//EN">

<html>
<head>
<title> Surveys </title>
</head>
<meta content="text/html; charset=utf-8" http-equiv=Content-Type>
<body>
<form action="main2.php" method="post">

    Number of Surveys <input type="number" name="number">
    <input type="submit" value="Send"/>

</form>
</body>
</html>

main2.php

<html>
<body>

<?

function Survey($number){

    if($number > 0){ 
        $a = 1;
        while ($a <= $number){ ?>
<h2>Survey for person number <? echo $a;?></h2> 
<form action="resultados.php" method="post">
Age <input type="number" name="age"/> <br><br>
Genre <br><br>
<input type="radio" name="male" value="6"/> Male <br>
<input type="radio" name="female" value="7"/> Female <br><br>
Marital Status <br><br>
<input type="radio" name="single" value="1"/> Single <br>
<input type="radio" name="married" value="2"/> Married <br>
<input type="radio" name="divorced" value="3"/> Divorced <br>
<input type="radio" name="free" value="4"/> Free Union <br>
<input type="radio" name="widowed" value="5"/> Widowed <br><br>
<?          
            $a = $a + 1;
        }
    }
}
echo Survey($_POST['number']);


?>

<input type="submit" value="Send"/>
</form>
</body>
</html>

resultados.php

<?

function Calculate($age){
    $array_of_ages = array();
    $array_of_ages[] = $age;
    var_dump($array_of_ages);
}

echo Calcular($_POST['age']);
?>

我想创建一个小调查,所以在&#34; formulario.php&#34;文件我选择了一定数量的人继续&#34; main2.php&#34;并为每个人创建调查。例如,如果我选择3个人,那么&#34; main2.php&#34;代码应该做的是在同一页面中一个接一个地创建3个调查,只有&#34;提交&#34; BUTTOM。然后,当我填写所有调查并按下提交按钮时,我尝试使用&#34; resultados.php&#34;是从这些表格中收集所有数据并做一些事情,例如,计算结婚或离婚的人数,女性和男性的平均年龄等等......并在我按下&#34;发送& #34;

问题在于我被卡住了,而且我对如何做到这一点没有任何线索。我已经搜索了一些方法来捕获数据,如数组,循环,但它们都不起作用。如你所见,我创建了&#34; resultados.php&#34;在哪里我会假设显示已处理的信息但没有运气。

根据我在第一个.php文件中选择的号码,&#34; while&#34;在&#34; main2.php&#34;创建了建议的调查数量,但根据我想达到的目标,我不知道它是否是正确的方法。

我很感激你的帮助。我本周刚刚开始学习PHP,现在我很沮丧,因为我无法弄清楚如何通过自己来解决它。

PD:抱歉我的英语,而不是我的母语。

1 个答案:

答案 0 :(得分:1)

第一件重要的事情是,您的<form>标记里面 while循环。虽然您的表单只关闭一次,但它会多次打开,导致HTML无效。所以将它放在while循环之前:

$a = 1; ?>
<form action="resultados.php" method="post">
<? while ($a <= $number){ ?>
<h2>Survey for person number <? echo $a;?></h2>

第二件事,因为你的 age 在你的表单中多次重复,你应该把它作为一个HTML输入数组,然后它才能保存多个值,所以改变你的年龄输入name属性:

<!-- `[]` tells the HTML that all values of input with this name should
be preserved. If you do not have this, only your last value will be passed -->
<input type="number" name="age[]"/>

另外需要考虑的是你的单选按钮,单选按钮作为组工作,现在逻辑上有人填写表单不能同时检查男性女性对吗?因此,您应该对它们进行分组,以便只填充一个,您可以通过更改name属性再次执行此操作:

<!-- Again the `[]` is added because you have it repeating.-->
<input type="radio" name="gender[]" value="6"/> Male <br>
<input type="radio" name="gender[]" value="7"/> Female <br><br>

最后,由于 age 是一个数组,你需要遍历PHP端的值:

function Calculate($age){
    foreach($age as $ages)
    {
      echo $ages;
    }
}