2017-05-15 1 views
0

Ich habe versucht, dynamisch gefüllte Daten-Datenbank zu speichern. Es gibt 3 Radiobutton-Werte zu beachten. Versucht es für einige Zeit als solche, wie den Typ der Struktur von Int zu Enum ändern, aber kein Glück. Hoffentlich können Sie alle darauf hinweisen und eine Idee geben, um es zu reparieren. Vielen Dank.php Student Anwesenheitsstatus mit Radio-Button nicht speichern

Probe von Form:

<form action="try2.php" method="post" > 
<?php 
$con=mysqli_connect('localhost', 'root', '', 'attendance')or 
die(mysqli_error()); 

$sql = "Select * from users where id=id"; 
$result = $con->query($sql); 
if (!$result) { 
printf("Error: %s\n", mysqli_error($con)); 
exit(); 
} 
echo '<table id ="tabGroup" align="center" style="cellpadding: 10px; 
cellspacing: 10px;"> 

<tr style="background-color:#ddd;"> 
<td scope="col" abbr="">&nbsp;</td> 
<td scope="col" abbr="id" ><strong>Attendance</strong></td> 
<td scope="col" abbr="stuName" ><strong>Name</strong></td> 
</tr> 
'; 

while($row = mysqli_fetch_array($result)) 
{ 
    echo '<tr>'; 
    echo "<td scope='row' class='spec'>" . '<input name="id[]" type="textbox" 
value="'.$row['id'].'" hidden>' . "</td>"; 
    echo "<td>" . '<input type="radio" name="test['.$row['id'].']" 
value="1">attend<input type="radio" name="test['.$row['id'].']" 
value="2">Did not attend<input type="radio" name="test['.$row['id'].']" 
value="3">Drop subject' . "</td>"; 
    echo "<td>" . $row['id'] . "</td>"; 
    echo "<td>" . $row['fname'] . "</td>"; 
    echo '</tr>'; 
} 
echo "</table>"; 

mysqli_close($con); 
?> 
<table id="tabb" align="center"> 
<tr> 
<td id="tabb" colspan="5" align="center"> 
<u><a href="student.php">Cancel</a></u> 
&nbsp;<button class="mult_submit" title="Change" value="edit" 
name="submit_mult" type="submit"> 
<span class="nowrap"><img class="icon" width="16" height="16" alt="Change" 
title="Change" src="../images/b_edit.png">Change</span> 
</button></td></tr></table> 
</form> 

Prozess:

<?php 
if(isset($_POST['submit_mult'])) 
{ 
$con=mysqli_connect('localhost', 'root', '', 'attendant')or 
die(mysqli_error()); 
$id=$_POST['id']; 
$test=$_POST['test']; 
for($i=1;$i<count($id);$i++) 
{ 
    if($id[$i]!="" && $test[$i]!="") 
{ 
     mysqli_query($con, "UPDATE users SET test='$test[$i]' WHERE 
id='$id[$i]'"); 
    } 
} 
} 
?> 

Das Problem ist die Datenbank hat es nicht erkennen. Zur Zeit habe ich den Test-Datentyp mit Enum mit Option 1, 2 und 3.

Antwort

0

Zum einen sind Sie nicht einen Fehler machen auf der Update-Abfrage überprüft, so hinzufügen, dass in

Zweitens:.

$i wird wahrscheinlich nicht korrekt übereinstimmen, da Sie in Ihrem Formular $row['id'] als Schlüssel verwenden. Ich denke, dass Sie den Wert $id[$i] nicht $i wollen, wenn die Werte in der $test Array Referenzierung, oder einfacher, da die ID der Schlüssel in der Testanordnung ist:

foreach($test as $id => $test_value) { 
    // You can assign the key into a variable with the foreach loop to simplify your for loops. 
} 
+0

Erste Antwort: Hinzugefügt wurde das mysqli_error und Gewinn Ergebnis 'Hinweis : Undefinierter Offset: 1 in C: \ xampp \ htdocs \ Form \ 3 \ try2.php in Zeile 34' Zeile 34 wurde mit if-Schleife gestartet. Der Fehler wird angezeigt, wenn nicht alle Zeilen der Optionsschaltfläche ausgewählt sind. –

+0

Zweite Antwort: Es funktioniert sehr. Danke für die Hilfe. Darf ich wissen, warum '$ i' nicht den Wert von' $ row ['id'] 'beziehen kann? –

+0

'$ i' ist die inkrementierende Zählung von Ihrer Schleife, also ist es 0, 1, 2 usw.' $ row ['id'] 'wird die Spalte' id' von der aktuellen Zeile sein, während Sie durchschleifen die Abfrageergebnisse. Sie beziehen sich nicht auf dasselbe und werden wahrscheinlich nie den gleichen Wert haben. – Devon