2016-04-01 6 views
0

ändern Meine Kontrollkästchen werden mit einer while-Schleife erstellt, so dass ich nicht IDs oder Namen auf jedem von ihnen setzen kann, so kann ich den Datensatz nicht ändern . Die Kontrollkästchen sind aktiviert, wenn ein Wert 1 ist und nicht angekreuzt, wenn in meiner Tabelle ein Wert von 0 ist. Das ist gut für die Überprüfung, aber kann ich sie nicht verwenden, um den Wert des Datensatzes zu ändern, der dem Kontrollkästchen entspricht? Hier ist mein Code:Wie kann ich einen Datensatz in einer Datenbank mit einem Kontrollkästchen mit php

<?php 
       if($records === FALSE) { 
        die(mysql_error()); 
       } 

      while($student=mysql_fetch_assoc($records)){ 
       echo "<tr>"; 
       echo "<td>".$student['SID']."</td>"; 
       echo "<td>".$student['Student_Name']."</td>"; 
       if($student['Month_1'] == 1){ 
       echo "<td>"."<input type='checkbox' checked='true'>"."</td>"; 
       }else{ 
        echo "<td>"."<input type='checkbox' checked='false'>"."</td>"; 
       } 
       if($student['Month_2'] == 1){ 
       echo "<td>"."<input type='checkbox' checked='true'>"."</td>"; 
       }else{ 
        echo "<td>"."<input type='checkbox' checked='false'>"."</td>"; 
       } 
       if($student['Month_3'] == 1){ 
       echo "<td>"."<input type='checkbox' checked='true'>"."</td>"; 
       }else{ 
        echo "<td>"."<input type='checkbox' checked='false'>"."</td>"; 
       } 
       if($student['Month_4'] == 1){ 
       echo "<td>"."<input type='checkbox' checked='true'>"."</td>"; 
       }else{ 
        echo "<td>"."<input type='checkbox' checked='false'>"."</td>"; 
       } 
       if($student['Month_5'] == 1){ 
       echo "<td>"."<input type='checkbox' checked='true'>"."</td>"; 
       }else{ 
        echo "<td>"."<input type='checkbox' checked='false'>"."</td>"; 
       } 
       if($student['Month_6'] == 1){ 
       echo "<td>"."<input type='checkbox' checked='true'>"."</td>"; 
       }else{ 
        echo "<td>"."<input type='checkbox' checked='false'>"."</td>"; 
       } 
       if($student['Month_7'] == 1){ 
       echo "<td>"."<input type='checkbox' checked='true'>"."</td>"; 
       }else{ 
        echo "<td>"."<input type='checkbox' checked='false'>"."</td>"; 
       } 
       if($student['Month_8'] == 1){ 
       echo "<td>"."<input type='checkbox' checked='true'>"."</td>"; 
       }else{ 
        echo "<td>"."<input type='checkbox' checked='false'>"."</td>"; 
       } 
       if($student['Month_9'] == 1){ 
       echo "<td>"."<input type='checkbox' checked='true'>"."</td>"; 
       }else{ 
        echo "<td>"."<input type='checkbox' checked='false'>"."</td>"; 
       } 
       if($student['Month_10'] == 1){ 
       echo "<td>"."<input type='checkbox' checked='true'>"."</td>"; 
       }else{ 
        echo "<td>"."<input type='checkbox' checked='false'>"."</td>"; 
       } 
       if($student['Month_11'] == 1){ 
       echo "<td>"."<input type='checkbox' checked='true'>"."</td>"; 
       }else{ 
        echo "<td>"."<input type='checkbox' checked='false'>"."</td>"; 
       } 
       if($student['Month_12'] == 1){ 
       echo "<td>"."<input type='checkbox' checked='true'>"."</td>"; 
       }else{ 
        echo "<td>"."<input type='checkbox' checked='false'>"."</td>"; 
       } 
       echo "</tr>"; 
      } 
     ?> 
+1

Nun, zum einen, KEINE Ihrer Kontrollkästchen haben 'Name' Attribute, so gibt es nichts zu übermitteln, wenn/wenn dieses Formular eingereicht wird. Sie haben auch kein "Wert" -Attribut. Selbst wenn sie einen Namen hätten, würde es keine Daten geben, die zusammen mit dem Namen gesendet werden könnten. Es gibt also keine Möglichkeit, ein bestimmtes Kontrollkästchen mit diesen hoch-repetiven 'Month_X'-Bits zu verknüpfen du testest. –

+0

vielleicht nützlich für Sie? [Was ist der richtige Weg, ein Kontrollkästchen in HTML5 zu aktivieren und zu deaktivieren?] (Http://stackoverflow.com/questions/12700626/what-is-the-proper-way-to-check-and-uncheck-a-checkbox -in-html5). –

Antwort

0

ich halte Sie einen Namen für jedes Kontrollkästchen enthält Monat Flagge und Schüler-ID wie sollte hinzufügen:

echo "<td>"."<input type='checkbox' checked='true' name='Month_1[".$student['SID']."]'>"."</td>"; 

Dann, nach dem Formular eingereicht Sie Datenbankwerte in Arrays mit einem Schlüssel Matching $ Student ändern kann [ ‚SID‘] :

while($student=mysql_fetch_assoc($records)){ 
    $Month_1 = (!empty($_POST['Month_1'][$student['SID']])) ? 1 : 0; // returns 1 if checkbox was ticked or 0 if it wasn't 
    // get the rest of months 
    // update mysql record with `SID` = $student['SID']] 
} 
+0

Parse-Fehler: Syntaxfehler, unerwartete '' (T_ENCAPSED_AND_WHITESPACE), erwartet Kennung (T_STRING) oder Variable (T_VARIABLE) oder Nummer (T_NUM_STRING) in update_fees.php in Zeile 28, haben Sie Team Viewer? es wäre einfacher, denke ich ... Danke für die Hilfe – rohan510

+0

Was ist der Code auf der Leitung 28? Leider kann der Team Viewer jetzt nicht verwendet werden –

+0

$ q_m1 = "UPDATE bio_fees SET Monat_1 = $ Monat_1 WHERE SID = $ student ['SID']"; – rohan510

0

Zunächst keine Notwendigkeit, diese echo "<td>"."<input type='checkbox' checked='false'>"."</td>"; zu schreiben, schreiben Sie es wie diese echo "<td><input type='checkbox' checked='false'></td>"; (keine Notwendigkeit für Verkettung dort)

Zweitens sehen Sie diesen Link: http://php.net/manual/en/function.mysql-fetch-assoc.php

This extension was deprecated in PHP 5.5.0, and it was removed in PHP 7.0.0.

Drittens, in der Reihenfolge ", um den Wert des Datensatzes entsprechend dem Kontrollkästchen" zu ändern, müssen Sie grundsätzlich senden Daten zu einem Skript auf Ihrem Server (form -> changeDbEntry.php) und das Skript sollte eine Verbindung zur DB herstellen und die gewünschte Arbeit erledigen.

Ich weiß, das ist nicht die Antwort, die Sie erwarten, aber die Lösung ohne Verständnis, was vor sich geht, ist fast nutzlos. So ...

Tipps 1: lesen Sie über HTML-Formulare, POST/GET-Anfragen und AJAX (später lesen zu Kopf-, WebSockets, Protokolle ...)

Beratung 2: Check this out: http://www.php-fig.org/psr/psr-1/

Verwandte Themen