有人可以帮我纠正我的循环吗?

时间:2017-01-27 06:49:15

标签: php html loops insert radio-button

基本上我必须进行调查并获取每行所选单选按钮的所有值,我得到了一些值,但后来我得到了错误。

在每一行中你都有一组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>";
    }
}
?>

2 个答案:

答案 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")。