2017-05-06 89 views
0

问题遍历所有输入值

所以我的问题是,我有去到数据库并获取学生数据的一些PHP代码。然后该程序将学生信息输出到屏幕上。信息放在input内,因为用户将能够编辑信息。当用户编辑信息并点击Update时,我需要获取有关数据库更新的信息。我的问题是,我不知道如何循环所有输入。

PHP代码 - 当用户点击Update

foreach ($_POST as $data) { 
    echo $data . "<br>"; 
} 

PHP代码 - 允许用户编辑

<form action="server/edit/students.php" method="post"> 

        <table> 
         <tr> 
          <th>Student ID</th> 
          <th>Firstname</th> 
          <th>Lastname</th> 
          <th>Teacher's Firstname</th> 
          <th>Teacher's Lastname</th> 
         </tr> 

         <?php 

          // get student info 
          $getStudent = $link->prepare("SELECT * FROM students"); 
          $getStudent->execute(); 
          $getStudent = $getStudent->fetchAll(PDO::FETCH_ASSOC); 

          foreach ($getStudent as $student) { 
           $studentID = $student['studentID']; 
           $firstname = $student['firstname']; 
           $lastname = $student['lastname']; 
           $teacherID = $student['teacherID']; 
           $getTeacher = $link->prepare("SELECT * FROM teachers 
                  WHERE teacherID = :teacherID"); 

           $getTeacher->execute(array(
            "teacherID" => $teacherID 
           )); 

           $getTeacher = $getTeacher->fetchAll(); 

           foreach ($getTeacher as $teacher) { 
            $teacherFirstname = $teacher['firstname']; 
            $teacherLastname = $teacher['lastname']; 

            echo " 
             <tr> 
              <td><input type='text' value='$studentID'></td> 
              <td><input type='text' value='$firstname'></td> 
              <td><input type='text' value='$lastname'></td> 
              <td><input type='text' value='$teacherFirstname'></td> 
              <td><input type='text' value='$teacherLastname'></td> 
             </tr> 
            "; 
           } 

          } 

         ?> 
        </table> 

        <button type="submit" name="update">Update</button> 

       </form> 
+0

首先,我没有看到任何形式的标签。我想你只是忽略了那个?另一件事,你需要添加'name'-属性到你的输入字段,否则他们不会被发布。 –

+0

我编辑了我的问题 –

+1

我还建议您在第一次查询时使用'JOIN'来获取教师,而不是在每次迭代中再次调用数据库。 –

回答

0

所以,我所做的是我用一个变量来跟踪的数据行。

代码

<?php 

          // get student info 
          $getStudent = $link->prepare("SELECT * FROM students ORDER BY studentID"); 
          $getStudent->execute(); 
          $getStudent = $getStudent->fetchAll(PDO::FETCH_ASSOC); 

          $value = 0; // counts rows 

          // loop through each student 
          foreach ($getStudent as $student) { 
           $studentID = $student['studentID']; 
           $firstname = $student['firstname']; 
           $lastname = $student['lastname']; 
           $teacherID = $student['teacherID']; 

           // get teacher 
           $getTeacher = $link->prepare("SELECT * FROM teachers 
                  WHERE teacherID = :teacherID"); 

           $getTeacher->execute(array(
            "teacherID" => $teacherID 
           )); 

           $getTeacher = $getTeacher->fetchAll(); 

           // loop through each teacher 
           foreach ($getTeacher as $teacher) { 
            $teacherFirstname = $teacher['firstname']; 
            $teacherLastname = $teacher['lastname']; 

            // output data 
            echo " 
             <tr> 
              <td><input type='text' name='studentID-$value' value='$studentID'></td> 
              <td><input type='text' name='firstname-$value' value='$firstname'></td> 
              <td><input type='text' name='lastname-$value' value='$lastname'></td> 
              <td><input type='text' name='teacherFirst-$value' value='$teacherFirstname'></td> 
              <td><input type='text' name='teacherLast-$value' value='$teacherLastname'></td> 
             </tr> 
            "; 
           } 

           // add to row 
           $value += 1; 

          } 

         ?>