所以我收到了这个错误:
注意:未初始化的字符串偏移量
我想在表格的每一行插入单选按钮的已选中单选按钮的值。
这意味着在我的桌子的每一行我都有这个问题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);
}
}
?>
答案 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"];