在PHP中使用foreach的三页表单序列(复选框和文本/数字框)

时间:2015-08-09 16:39:31

标签: php forms session post foreach

我想通过3页传递变量。第一页询问用户他们喜欢哪种音乐类型(最终将有20多种类型)。第二页要求用户对他们选择的类型进行排名,第三页排序并显示他们的排名。

第一页要求用户选择他们喜欢的类型:

 <form id="genre" name="genre" method="post" action="musicsell.php">
  <input type="checkbox" name="genre[]" value="Rap"/>Rap<br />
  <input type="checkbox" name="genre[]" value="HipHop"/>HipHop<br />
  <input type="checkbox" name="genre[]" value="RnB"/>RnB<br />
  <input type="checkbox" name="genre[]" value="Rock"/>Rock<br />
  <input type="checkbox" name="genre[]" value="Jazz"/>Jazz<br />

  <p>
    <input type="submit" value="Next">
    <br />
  </p>
</form>

第二个要求他们对他们选择的类型进行排名(优先排序),其中1是最好的:

<body>
The genre(s) you selected are: <br>
<form id="form1" name="form1" method="post" action="musicresults.php">
<?php
$name = $_POST['genre'];

if(isset($_POST['genre'])) {
foreach ($name as $genre){

?>

<input 
type="number" required="required" id="<?php echo $genre ?>" name="music[<?php echo $genre ?>]" />
<?php echo $genre ?><br /> 

<?php
    }
} 
?>

<input type="submit" name="button" id="button" value="Submit" /></form>
</body>

第三页和最后一页对结果进行排序和回声:

<?php
//Get the form results (which has been converted to an associative array)     from the $_POST super global
$musicgenres = $_POST['music'];

//Sort the values by rank and keep the key associations.
asort($musicgenres, SORT_NUMERIC );

//Loop over the array in rank order to print out the values.
foreach($musicgenres as $music => $rank)
{
   echo "$musicgenres is your $rank choice";
   echo "<br>";
}
?>

这一切正常,直到我收到“数组到字符串转换”错误的最后一页。也许我需要输入会话变量,但我不确定。

任何帮助都将不胜感激。

1 个答案:

答案 0 :(得分:2)

这正是错误所说的。它无法将数组转换为字符串。

替换

echo "$musicgenres is your $rank choice"; 

echo "$music is your $rank choice";