2017-01-27 2 views
0

Grundsätzlich muss ich eine Umfrage machen und alle Werte der ausgewählten Radio-Button in jeder Zeile, ich habe einige Werte, aber dann bekomme ich Fehler.Kann mir jemand helfen, meine Schleife zu korrigieren?

In jeder Zeile haben Sie einen Satz von 5 Radiobuttons.

Also, was ist das Problem mit meiner Schleife? btw

habe ich diesen Fehler:

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 

Also muss ich wissen, wie ich meine Schleife stoppen konnte. Die Bedingung könnte lauten: "Wenn ich keine Fragen mehr habe oder Zeile lesen muss, halte den Einsatz an".

Ich möchte hervorheben, dass der Name meines Optionsfeldsatzes eine Variable ist, die erhöht wird, um keine Konflikte zwischen verschiedenen Gruppen von Optionsfeldern in jeder Zeile zu bekommen.

<?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>"; 
    } 
} 
?> 

Antwort

2

Von dem, was Ihr Code zeigt,
ich einfach die Menge von Fragen fangen würden Sie geholt und es als Bedingung verwenden:

... 

$un = 0; 
$result = mysqli_query($link, $recherche); 
$num_results = $result->num_rows; 
while ($row = mysqli_fetch_assoc($result) && $un < $num_results) { 

... 

Auch die erste Abfrage in der Form hat mysqli_query($link, $recherche); keine Dienstprogramm, da Sie das Ergebnis nicht speichern. Dieser kann entfernt werden.

Wenn dies Ihr Problem nicht löst, schreiben Sie bitte den gesamten Code, da der von Ihnen eingereichte Code nicht vollständig ist.

+0

im Einsatzteil? –

+0

Nein, der Formularteil. – Faegy

+0

Wenn Ihre Abfrage eine Einfügung ist, müssen Sie die Ergebnisse nicht überprüfen (wenn Sie keine Fehler behandeln möchten). Aber wenn Sie nach einer Auswahl abfragen, müssen Sie das Ergebnis irgendwo speichern. – Faegy

1

Die While-Schleife ist das Drucken im Wesentlichen den gleichen Namen Wert im HTML, warum nicht versuchen, so etwas wie:

<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\"> 

Ich habe auch über ein doppelten Eingangstyp Radio bemerkt.

Ich würde empfehlen mit $un++; anstelle von $un = $un + 1;, ich weiß, das letztere ist lesbarer, aber ist ungewöhnlich in vielen modernen Programmiersprachen.

Geben Sie jedem HTML-Element auch einen eindeutigen ID-Wert auf dieser Seite, wie oben beschrieben, insbesondere wenn Sie beabsichtigen, mit diesen Elementen in JavaScript oder jQuery zu interagieren. Wenn Sie Ihre Daten geschrieben werden, finden Sie es mit:

if(!empty($_POST)){ 
    echo '<pre>' . print_r($_POST, 1) . '</pre>'; 
} 

die an der Spitze des Ortes gehen sollte, die Sie hochladen, wird (form action="myaction.php") zum Beispiel.

+0

so wird der fertige Code sein? Ich bin Französisch und Englisch ist nicht meine Muttersprache. Und ja es ist für das Duplizieren normal, weil der wirkliche Wert "PA" bedeutet, kann nicht auf diese Frage wegen der Situation angewandt werden, aber Wert ist 0, wenn Sie die Markierung der Umfrage zählen. –

+0

Leider wie ich nicht genau Ich weiß nicht, was Sie erreichen wollen, ich kann Ihnen kein funktionierendes Beispiel geben. Ich würde einen Dump Ihrer Datenbank und andere solche Dinge brauchen, um das richtig zu debuggen, aber Sie könnten das in Ihrem am unteren Ende des Skripts:' ', das erhöht den numerischen Wert Ihrer $ un-Variable in jedem Eingangsradio, da doppelte Namen auf einer Eingabe Probleme verursachen, ebenso wie ID auf demselben Element. –

+0

Um zu sehen, wie '++ $ un' funktioniert, sehen Sie sich das folgende Beispiel an: [link] (http://ideone.com/dWYUcd) –

Verwandte Themen