2017-02-19 1 views
0

Hallo ich kann nicht scheinen, um den Wert des Optionsfeldes zu erhalten, das durch die Schleifenanweisung erzeugt wird. Die $ _POST-Methode funktioniert nicht, selbst wenn der entsprechende Name der Optionsschaltfläche vorhanden ist.bekommen Radiobutton Wert php

<?php 
$servername = "127.0.0.1"; 
$username = "root"; 
$password = ""; 
$dbname = "test"; 
$i = null; 
$conn = new mysqli($servername, $username, $password, $dbname); 

for ($t=0;$t<4;$t++){} 
$sql = "SELECT * FROM questions LIMIT $t"; 
$result = $conn->query($sql); 

if ($result->num_rows > 0) { 
    $i = 0; 
     echo " <form action='radio.php' method='post'><table>"; 
     echo "<tr> 
     <th>Questions</th> 
     <th>Answers</th>  </tr> <tr>" ; 
    while($row = $result->fetch_assoc()) { 
    $ans=array($row['1'],$row['2'],$row['3']); 
    shuffle($ans); 
    echo $row['question']."<br>"; 
     foreach ($ans as $choice) { 
      echo "<input type='radio' name='radio$i' value = '$choice'>".$choice."<br>"; 
    } unset($choice); 
     echo " </tr>";$i++; 
    } 


     echo "</table> <input type = 'submit' value = 'finished'></form><br>"; 
echo ""; 
    } else { 
    echo "0 results"; 
} 
$conn->close(); 

?> 

Es führt immer in
Notice: Undefined index: radio0 in C: \ xampp \ htdocs \ Bootstrap \ radio.php here is an example output Auch tho den Index radio0 in dem Element des HTML existiert.

+0

Blick nicht verwenden können, werden Sie sehen, was btw auf –

+0

los ist, geschrieben Sie etwas ziemlich ähnlich schon http://stackoverflow.com/q/42178389/1415724 - wenn es das gleiche ist, sollten Sie diese ältere Frage löschen. –

+0

Sie wissen, dass Sie nichts innerhalb der ersten Schleife Bereich tun? 'für ($ t = 0; $ t <4; $ t ++) {}' diese Schleife hat einen leeren Körper trotzdem, wenn Sie Ihren Code richtig formatieren, werden Sie sehen, es gibt mehr Probleme mit dem Bereich – Robert

Antwort

0

der durch den Code nach und nach

for ($t=0;$t<4;$t++){} 

Diese for-Schleife ein leer gehen lassen. Die Klammern { und } sollten die Aktionen der Schleife enthalten. Da sie leer sind, dann geschieht nichts in dieser Schleife

$sql = "SELECT * FROM questions LIMIT $t"; 

Sie können nicht das $ t Variable hier verwendet werden, da sie außerhalb des Bereichs ist. Selbst wenn du könntest, bezweifle ich, dass du das wirklich willst, denn LIMIT beschränkt lediglich die Anzahl der Antworten, die du bekommen kannst.

$result = $conn->query($sql); 

Sie haben kein Verbindungsobjekt definiert (vorausgesetzt, Sie haben Ihren gesamten Code bereitgestellt).

$i = 0; echo " <form action='radio.php' method='post'><table>"; 

Es ist wirklich schreckliche Praxis, diese Dinge auf der gleichen Linie zu definieren (obwohl es möglich ist).

<th>Answers</th>  </tr> <tr>" ;while($row = $result->fetch_assoc()) { 

Noch einmal, schrecklich üben - es ist sehr schwer zu lesen.

$ans=array($row['1'],$row['2'],$row['3']); 

Sie sollten höchstwahrscheinlich Integer-Indizes anstelle von Strings verwenden. Beachten Sie außerdem, dass Arrays 0 -indiziert sind.

foreach ($ans as $choice) {echo "<input type='radio' name='radio$i' value = '$choice'>".$choice."<br>"; 
} unset($choice); 
       echo " </tr>";$i++;} 

Sie alle in der Schleife $i Variable definiert havn't, so dass Sie die $i an Ihrem HTML-Quellcode variable

+0

Hi ich weiß, es ist eine Art Messy aber irgendwie funktioniert es. und habe auch meinen Post für die ganze Syntax bearbeitet. Mein verbleibendes Problem ist, dass der $ _POST nicht von der Optionsschaltfläche erkannt wird, die von der Schleife erstellt wird. –