基本上我必须进行调查并获取每行所选单选按钮的所有值,我得到了一些值,但后来我得到了错误。
在每一行中你都有一组5个单选按钮。
那我的循环有什么问题?
我得到了这个错误btw:
Notice: Undefined offset: 6 in C:\wamp\www\Foredeck\foredeck_insert_client.php on line 55
...
Notice: Undefined offset: 163 in C:\wamp\www\Foredeck\foredeck_insert_client.php on line 55
所以我需要知道如何阻止循环。条件可能是"如果我不再有问题或行读取停止插入"。
我想强调一下,我的单选按钮组的名称是一个增加的变量,不会在每行的不同单选按钮组之间产生冲突。
<?php
/**
* Insert
*/
$link = Mysqli_connect($host, $login, $pass, $dbname);
$s = 0;
$un = 1;
$id = 0;
if (isset($_POST["bouton11"])) {
while ($s <= $un) {
$choix = $_POST["$un"];
$link = mysqli_connect($host, $login, $pass, $dbname);
$enregistrer = "INSERT INTO questionnaire(Choix) VALUES('$choix') ";
$un = $un + 1;
$s++;
mysqli_query($link, $enregistrer);
}
}
?>
<?php
/**
* Form
*/
if ($id != "" && $Nom != "" && $Prenom != "" && $Email != "") {
$recherche = "SELECT Ref,Question,Choix,Commentara FROM questionnaire WHERE Qref ='$id'";
mysqli_query($link, $recherche);
$un = 0;
$result = mysqli_query($link, $recherche);
while ($row = mysqli_fetch_assoc($result)) {
$Ref = $row["Ref"]; /*Line 55*/
$Question = $row["Question"];
$un = $un + 1;
echo " <tr bgcolor=\"white\">
<td>$Question position: $un </td>
<td>
<input type=\"radio\" name =\"$un\" id =\"un\" value = \"3\">
<input type=\"radio\" name =\"$un\" id =\"un\" value = \"2\">
<input type=\"radio\" name =\"$un\" id =\"un\" value = \"1\">
<input type=\"radio\" name =\"$un\" id =\"un\" value = \"0\">
<input type=\"radio\" name =\"$un\" id =\"un\" value = \"0\">
</td>";
}
}
?>
答案 0 :(得分:2)
根据您的代码显示,
我只是抓住你提出的问题数量并将其作为条件使用:
...
$un = 0;
$result = mysqli_query($link, $recherche);
$num_results = $result->num_rows;
while ($row = mysqli_fetch_assoc($result) && $un < $num_results) {
...
此外,表单mysqli_query($link, $recherche);
中的第一个查询没有实用程序,因为您不存储结果。这个可以删除。
如果这不能解决您的问题,请发布整个代码,因为您提交的代码不完整。
答案 1 :(得分:1)
While循环实际上是在HTML中打印相同的名称值,为什么不尝试类似:
<input type=\"radio\" name =\"{$un}[]\" id =\"un4\" value = \"3\">
<input type=\"radio\" name =\"{$un}[]\" id =\"un3\" value = \"2\">
<input type=\"radio\" name =\"{$un}[]\" id =\"un2\" value = \"1\">
<input type=\"radio\" name =\"{$un}[]\" id =\"un1\" value = \"0\">
<input type=\"radio\" name =\"{$un}[]\" id =\"un0\" value = \"0\">
我还注意到上面有一个重复的输入类型广播。
我建议使用$un++;
代替$un = $un + 1;
,我知道后者更具可读性,但在许多现代编程语言中并不常见。
如上所述,还为每个HTML元素在该页面上提供唯一的ID值,特别是如果您打算在JavaScript或jQuery中与这些元素进行交互时。发布数据后,请参阅:
if(!empty($_POST)){
echo '<pre>' . print_r($_POST, 1) . '</pre>';
}
例如,这应该放在您要发布到的地方的顶部,(form action="myaction.php"
)。