2017-01-27 8 views
0

В основном я должен сделать опрос и получить все значения выбранного переключателя в каждой строке, у меня есть некоторые значения, но затем я получаю ошибки.Может ли кто-нибудь помочь мне исправить мою петлю?

В каждой строке есть набор из 5 переключателей.

Так в чем проблема с моей петлей?

Я получил эту ошибку кстати:

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

Из того, что ваш код показывает,
я бы просто поймать количество вопросов, которые вы неправдоподобным и использовать его в качестве условия:

... 

$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); не имеет когда вы не сохраняете результат. Это можно удалить.

Если это не поможет решить вашу проблему, отправьте весь код, поскольку код, который вы отправили, не заполнен.

+0

во вставке часть? –

+0

Нет, форма часть. – Faegy

+0

Когда ваш запрос является вставкой, вам не нужно проверять результаты (если вы не хотите обрабатывать ошибки). Но когда вы запрашиваете выбор, вам нужно где-то сохранить результат. – Faegy

1

Хотя цикл по существу печати одинаковое значение имени в 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"), например.

+0

, так что будет заполнен код? Я французский и английский не мой первый язык. И да, это для дублирования это нормально, потому что реальное значение «PA» означает, что нельзя применять этот вопрос из-за ситуации, но значение равно 0, когда вы считаете отметку опроса. –

+0

К сожалению, поскольку я точно не знаю знаете, чего вы пытаетесь достичь, я не могу дать вам полный рабочий пример. Мне понадобится дамп вашей базы данных и других подобных вещей, чтобы отладить это правильно, но вы можете попробовать это в своем в нижней части вашего скрипта:' », что увеличит числовое значение вашей переменной $ un в каждом входном радио, поскольку наличие дубликатов имен на входе вызовет проблемы, а также дублирует идентификатор на одном элементе. –

+0

Чтобы увидеть, как работает '++ $ un', посмотрите здесь: [link] (http://ideone.com/dWYUcd) –