插入foreach循环

时间:2017-01-30 06:42:54

标签: php mysql foreach

所以我收到了这个错误:

  

注意:未初始化的字符串偏移量

我想在表格的每一行插入单选按钮的已选中单选按钮的值。

这意味着在我的桌子的每一行我都有这个问题ll单选按钮设置ll评论。

调查表。

<?php
$link=Mysqli_connect($host,$login,$pass,$dbname);
$un = 0;
$msgerror = "Veuillez remplir tous les champs ";    
if(isset($_POST["bouton10"])) {
    $id = $_REQUEST["Picolo4"];
    $Nom = $_REQUEST["Picolo1"];
    $Prenom = $_REQUEST["Picolo2"];
    $Email = $_REQUEST["Picolo3"];

    if ($id !="" && $Nom !="" && $Prenom !="" && $Email !="") {
        $recherche= "SELECT Ref,Question,Choix,Commentara FROM questionnaire WHERE Qref ='$id'";
        mysqli_query($link,$recherche);
        $result= mysqli_query($link,$recherche);
        $num_results = $result->num_rows;

        while ($row = mysqli_fetch_assoc($result)) {
            $Ref =$row["Ref"];
            $Question =$row["Question"];
            $un++;

            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>
                <td width = \"60\"> <textarea> </textarea> </td> 
            </tr>                              
            </div>
            </div>"; 
        }
    } else {
        echo "<script type='text/javascript'>alert('$msgerror')</script>";
    }
}
//The part with the problem //
$un = 1;
if (isset($_POST["bouton11"])) {
    $i= 0 ;  
    while(isset($_POST[$un])) {
        //Line 71 //
        $choix = $_POST["$un"][$i];
        $enregistrer = "INSERT INTO questionnaire(Choix)  VALUES('$choix') ";
        $un++;
        $i++;
        mysqli_query($link, $enregistrer);
    }
 }
 ?>

1 个答案:

答案 0 :(得分:1)

$_POST["$un"]可能是

  

3,2,1,0或0。

然后,您尝试访问$_POST["$un"][$i],而$i是一个有价值的号码。当您尝试将字符串视为数组时 - [$i]将访问它的字符,但您的字符串只有1个字符,并且您的循环会继续运行,因为每个$_POST键存在超过1次明显。

例如:

$string = "abcd";
echo $string[0]; // a
echo $string[1]; // b
echo $string[5]; // Notice:  Uninitialized string offset: 5 in ..

所以你需要修改你的循环。 而不是使用:

foreach ($_POST as $val){

尝试使用:

while(isset($_POST[$un])){
   //your code here
   $un++; //don't forget to increase $un
}

更新1:

没有理由将$ _POST [$ un]视为一个数组,所以替换它:

$choix = $_POST["$un"][$i];

使用:

$choix = $_POST["$un"];