2017-01-30 3 views
2

Так я получаю эту ошибку:Вставка Еогеасп петля

Примечание: Uninitialized строка смещения

Я хочу, чтобы вставить значение проверяемого кнопки радио кнопки радио, установленной на каждой строке моего стола.

Это означает, что в каждом ряду моей таблицы у меня есть этот вопрос. Ll Radio button set ll Commentary.

A анкета форма.

<?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

Это скорее всего потому, что значение '$ _REQUEST [x]' не существует, попробуйте что-то вроде '$ id =! Empty ($ _ REQUEST [" Picolo4 "])? $ _REQUEST ["Picolo4"]: ""; ** ** НО **, пожалуйста, дезинфицируйте свои материалы и используйте подготовленные заявления. Ваш код действительно уязвим для инъекций SQL. – Peon

+0

По-прежнему получить ту же ошибку –

+0

Какая полная ошибка? Он должен показать вам, в какой строке это делается, и, таким образом, вы можете проверить, какой индекс вы пытаетесь прочитать, чего еще нет. Т.е., '$ choix = $ _POST [" $ un "] [$ i]' также выглядит подозрительно – Peon

ответ

1

$_POST["$un"] может быть

3,2,1,0 или 0.

И затем вы пытаетесь получить доступ к $_POST["$un"][$i] в то время как $i является incresing номер. Когда вы пытаетесь обрабатывать строку как массив - [$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 
} 

Update 1:

Там нет причин пытаться лечить $ _POST [$ ип] как массив, так заменить это:

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

с:

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

Хорошо, позвольте мне объяснить себя, я делаю опрос, который автоматически генерирует набор переключателей и текстовую область комментариев, если у вас есть вопрос или много вопросов в опросе. Цель состоит в том, чтобы не менять код каждый раз, когда вы добавляете вопрос в опрос, но генерируете его. Это означает, что у меня возник вопрос, тогда ==> создайте переключатель, затем ==> сгенерируйте текстовую область. Таким образом, поэтому я использую в одно и то же время переменную для переключателя, установленную так, чтобы не возникало конфликт между другими переключателями. –

+0

Постарайтесь выполнить обновление моего ответа и изменить свой цикл. –

+0

Примечание: Неинициализированное смещение строки: 1 в C: \ wamp \ www \ Foredeck \ foredeckaffiche_client.php в строке 71. Так что мне нужно сделать строку для каждого значения каждого набора переключателей? –

Смежные вопросы