Gemäß Ihren Kommentaren möchten Sie die Formulareinträge mit den entsprechenden Datenbankzeilen, Studenten oder anderen Bezeichnern verknüpfen.
Um die Formularfelder zuzuordnen, müssen Sie die form fields as an array Werte für Ihr Update-Skript zur Verarbeitung übermitteln. Dazu verwenden Sie eckige Klammern als Suffix des Namensattributs für das Formularfeld. Wie name="field[]"
und optional einen gemeinsamen Bezeichner wie eine Datenbanktabellenzeilen-ID angeben, so dass keine Probleme mit fehlenden Datensätzen auftreten.
Datenansicht
<?php
while ($row = mysqli_fetch_assoc($moreDetails)) {
$id = $row['id'];
$reg = $row['reg_num'];
$sub = $row[$subject];
?>
<tr>
<td><?php echo $id; ?></td>
<td><?php echo $reg; ?></td>
<td>
<label for="score_<?php echo $id; ?>"></label>
<input id="score_<?php echo $id; ?>" type="text" class="form-control" name="student[<?php echo $id; ?>][score]" />
<input type='hidden' name='student[<?php echo $id; ?>][assessment]'/>
</td>
</tr>
<?php } ?>
Welche Ihnen einen resultierende von $_POST
Wert ähnlich wie diese geben wird.
array(1) {
["student"]=>
array(3) {
["86236762057e1df012e662"]=>
array(2) {
["score"]=>
string(1) "a"
["assessment"]=>
string(1) "A"
}
["40443582357e1df012e668"]=>
array(2) {
["score"]=>
string(1) "b"
["assessment"]=>
string(1) "A"
}
["112264948957e1df012e66c"]=>
array(2) {
["score"]=>
string(1) "c"
["assessment"]=>
string(1) "A"
}
}
}
Dann müssen Sie das Array von Daten in einem Update verarbeiten oder Abfrage einfügen und die eigenen Fehler Trapping und Bedingungen hinzufügen, die Abfragen auf Ihre Bedürfnisse zu generieren.
Insert-Controller
if (false === empty($_POST['student'])) {
$queryValues = array();
foreach ($_POST['student'] as $id => $student) {
$queryValues[] = "('" . $id . "', '" . $student['score'] . "')";
}
echo 'INSERT INTO ca (id, score) VALUES ' . implode(', ', $queryValues);
}
Insert Query Result
INSERT INTO ca (id, score) VALUES ('86236762057e1df012e662', 'a'), ('40443582357e1df012e668', 'b'), ('112264948957e1df012e66c', 'c')
Update-Controller-
if (false === empty($_POST['student'])) {
foreach ($_POST['student'] as $id => $student) {
echo "UPDATE ca
SET score = '" . $student['score'] . "'
WHERE id = '" . $id . "'";
}
}
Update-Abfragen Ergebnis
UPDATE ca SET score = 'a' WHERE id = '86236762057e1df012e662'
UPDATE ca SET score = 'b' WHERE id = '40443582357e1df012e668'
UPDATE ca SET score = 'c' WHERE id = '112264948957e1df012e66c'
Als Kenntnis von Best Practices, ich fordere Sie dringend zu prüfen, Aussagen unter Verwendung von SQL-Injection-Angriffe zu vermeiden. http://php.net/manual/en/mysqli.quickstart.prepared-statements.php
Ihr Code ist anfällig für SQL-Injection-Angriffe. Der versteckte Eingang dient keinem Zweck.Was machst du falsch? gute Frage ... Sie haben versäumt zu erklären, was nicht funktioniert ... – NDM
Ich bin ziemlich besorgt über '$ subject' ist eine Spalte in der Datenbank ... – NDM
Sie müssen Ihr genaues Problem beschreiben. Aber '$ sub' wäre ein ganzzahliger Wert, der nicht die beabsichtigten Ergebnisse zu sein scheint. Benutze '" SELECT * FROM ca WHERE class = '$ class' "' dann ändere dein Formular-Steuerelement ' ' – fyrye