2016-05-14 12 views
0

ich diese Form bin mit Studentenlisten und ein Optionsfeld zum Anzeigen/Drop-Down vorhanden fehlt, was zu setzen, möchte ich wissen, wie ganze Daten von StudentenWie man Daten vom Formular in die MySQL-Datenbank einträgt?

zusammen mit dem Besuch in meinem db speichern
<form name="insert-attendance.php" action="insert-attendance.php" method="post"> 
    <?php 
     include('connection.php'); 
     $result = $db->prepare("SELECT * FROM sc_students WHERE Student_Class='$classname' AND Student_Section='$section'"); 
     $result->execute(); 
     for ($i = 0; $row = $result->fetch(); $i++) { 
      ?> 
      <tr> 
       <td><input type="text" name="stuid" value="<?php echo $row['Student_id'] ?>"></input></td> 
       <td><input type="text" name="stuname" value="<?php echo $row['Student_name'] ?>"></input></td> 
       <td><input type="text" name="stuclass" value="<?php echo $row['Student_Class'] ?>"></input></td> 
       <td><input type="text" name="section" value="<?php echo $row['Student_Section'] ?>"></input> 
        <input type="hidden" value="<?php echo date("Y-m-d"); ?>" name="attdate"> 
       <td> 
        <select name="attndc"> 
         <option value="present">PRESENT</option> 
         <option value="absent">ABSENT</option> 
         <option value="leave">LEAVE</option> 
        </select> 
       </td> 
      </tr> 
      <?php 
     } 
    ?> 
    <input type="submit" value="submit"> 
</form> 

und das ist meine insert.php Datei, aber es funktioniert nicht

<?php 
    $studentid = $_POST['stuid']; 
    $stuname = $_POST['stuname']; 
    $stuclass = $_POST['stuclass']; 
    $section = $_POST['section']; 
    $attdate = $_POST['attdate']; 
    $attndc = $_POST['attndc']; 
    include "connection.php"; 
    $values = "$studentid, $stuname, $stuclass, $section, $attdate, $attndc"; 
    $sql = array(); 
    $sql[] = '("' . int($row['student_id']) . '' . mysql_real_escape_string($row['stuclass']) . '", ' . $row['section'] . ', ' . $row['attndc'] . ', ' . $row['attdate'] . ')'; 
    $sql = 'INSERT INTO sc_attendance (student_id, class, section, status,attendance_date) VALUES ' . implode(',', $sql); 
    $stmt = $db->prepare($sql); 
    $db->execute($sql); 
?> 

Antwort

0

Sie haben Namen wie Arrays stuid[],stuname[] an Eingabefelder in der hTML-Formular zu verwenden, da gerade jetzt wird denselben Namen für alle Schüler stuid,stuname der Eingabefelder sein. Wenn in HTML 2 Eingabefelder denselben Namen haben, wird das letzte Feld als letztes Eingabefeld betrachtet und alle anderen Eingabefelder werden verworfen (tatsächlich werden ihre Werte durch das letzte Feld ersetzt). Um dieses Ersetzen des letzten Feldes zu vermeiden, müssen Sie [] mit Namen verwenden und sie als Arrays behandeln, sobald sie in PHP sind. Hier Ihre Form wird wie folgt aussehen:

<form name="insert-attendance.php" action="insert-attendance.php" method="post"> 
    <?php 
     include('connection.php'); 
     $result = $db->prepare("SELECT * FROM sc_students WHERE Student_Class='$classname' AND Student_Section='$section'"); 
     $result->execute(); 
     for ($i = 0; $row = $result->fetch(); $i++) { 
      ?> 
      <tr> 
       <td><input type="text" name="stuid[]" value="<?php echo $row['Student_id'] ?>"></input></td> 
       <td><input type="text" name="stuname[]" value="<?php echo $row['Student_name'] ?>"></input></td> 
       <td><input type="text" name="stuclass[]" value="<?php echo $row['Student_Class'] ?>"></input></td> 
       <td> 
        <input type="text" name="section[]" value="<?php echo $row['Student_Section'] ?>"></input> 
        <input type="hidden" value="<?php echo date("Y-m-d"); ?>" name="attdate[]"> 
       <td> 
        <select name="attndc[]"> 
         <option value="present">PRESENT</option> 
         <option value="absent">ABSENT</option> 
         <option value="leave">LEAVE</option> 
        </select> 
       </td> 
      </tr> 
      <?php 
     } 
    ?> 
    <input type="submit" value="submit"> 
</form> 

Jetzt in insert.php Sie Eingabefelder als Arrays zu behandeln, so dass Sie Daten aller Schüler bekommen können und sie in Datenbanktabelle einzufügen:

<?php 
    include "connection.php"; 
    $total = count($_POST['stuid']); 

    for($i=0;$i<$total;$i++){ 
     $studentid = $_POST['stuid'][$i]; 
     $stuname = $_POST['stuname'][$i]; 
     $stuclass = $_POST['stuclass'][$i]; 
     $section = $_POST['section'][$i]; 
     $attdate = $_POST['attdate'][$i]; 
     $attndc = $_POST['attndc'][$i]; 

     $sql = $db->prepare("INSERT INTO sc_attendance (student_id, class, section, status,attendance_date) VALUES (?, ?, ?, ?, ?)"); 
     $sql->bind_param($studentid, $stuclass, $section, $attdate, $attndc); 
     $db->execute($sql); 
    } 
?> 

Sie haben viele Fehler in Ihrer SQL-Anweisung und Abfrage gemacht. Das habe ich für dich korrigiert.

Verwandte Themen