【问题标题】:Fetching Multiple rows and Store it to another table in php Mysql获取多行并将其存储到php Mysql中的另一个表中
【发布时间】:2018-06-11 21:52:38
【问题描述】:

我正在创建一个程序来获取学生出勤数据并将其存储在数据库中。我创建了 student_table,用于存储学生注册后的详细信息,例如姓名、护照号码、班级。我创建了另一个表“attendance_table”。我在一个 php 文件中获取了学生的详细信息,并显示了附加列“出席”,该列采用单选按钮值来标记存在或不存在。

我的问题是在标记出勤后我希望它存储在出勤表中。由于详细信息是从 student_table 中获取的,我怎样才能将它存储在另一个表中。我是 php 新手。谢谢。

// FETCHING DATA FROM STUDENT_TABLE//

  <tr>
<td><?php echo $row['student_name']; ?></td>
<td><?php echo $row['Passport_no'] ?></td>
<td><?php echo $row['Teacher'] ?></td>

<td><?php echo $row['Class'] ?></td>
<td><?php echo $row['Period'] ?></td>

<td>
Present<input required type="radio" name="attendance[<?php echo $row['stud_id'] ?>]" value="Present" checked>
Absent<input required type="radio" name="attendance[<?php echo $row['stud_id']; ?>]" value="Absent" >
</td>

</tr>
  <?php } ?> 

//出勤表//

attendance的表结构

DROP TABLE IF EXISTS `attendance`;
CREATE TABLE IF NOT EXISTS `attendance` (
  `at_id` int(11) NOT NULL AUTO_INCREMENT,
  `stud_id` int(11) NOT NULL,
`student_name` varchar(100) NOT NULL,
  `Passport_no` varchar(100) NOT NULL,
  `Class` varchar(100) NOT NULL,
  `Period` varchar(100) NOT NULL,
  `Status` varchar(100) NOT NULL,
  `Date` date NOT NULL,
  PRIMARY KEY (`at_id`)
)

【问题讨论】:

  • 提交表单后,会得到提交的数据。如果您不知道如何处理这些数据,可以在这里提问。
  • 嗨,玛维娅。我检查了你的个人资料,但不幸的是我找不到在哪里提问。你能帮我解决我的问题吗?谢谢。
  • 我确实为您编写了代码。请检查。

标签: php mysql


【解决方案1】:

Dirie 你需要做的是将每一行的数据放入一个https://www.w3schools.com/tags/tag_form.asp 的表格中。当一个单选按钮被选中时,触发一个带有 jquery/javscript 的提交。或者有一个名为“Present”的按钮/输入(提交),它将为您提交表单。

另一种选择是使用 ajax (https://www.w3schools.com/xml/ajax_php.asp)。不过我个人认为提交表单更容易。

我怀疑您期待答案为您提供代码,但我不确定您是否会找到会为您编写解决方案的人。 网上有很多关于如何创建 HTML 表单、提交数据以及将表单中的详细信息保存到数据库中的代码示例。 祝你好运!

【讨论】:

    【解决方案2】:

    在 html 中创建表单很容易。只需将您要提交的数据放入表单元素中。在此示例中,period 被放入具有隐藏属性的 input tag 中,我们从您的查询中分配值。

    <form method="POST" action="saveattendance.php">
    <table>     
            <?php while($row = $db->fetch(PDO::FETCH_ASSOC)): ?>
                <input type="hidden" name="period" value="<?php echo $row['Period'] ?>">
            <tr>
                <td><?php echo $row['student_name']; ?></td>
                <td><?php echo $row['Passport_no'] ?></td>
                <td><?php echo $row['Teacher'] ?></td>
                <td><?php echo $row['Class'] ?></td>
                <td><?php echo $row['Period'] ?></td>
                <td>Present<input required type="radio" name="attendance[<?php echo $row['stud_id'] ?>]" value="Present" checked>
                    Absent<input required type="radio" name="attendance[<?php echo $row['stud_id']; ?>]" value="Absent">
                </td>
            </tr>
              <?php endwhile; ?> 
            <tr>
                <td colspan="6"><input type="submit" name="attendanceData" value="Save"></td>
            </tr>
      </table>
    </form>
    

    为了将表单保存到数据库,我们需要一个数据库连接,这里我使用了 PDO mysql。

    saveattendance.php

    <?php 
    require_once 'dbconnect.php';//contains PDO connection script
    
    if(isset($_POST['attendanceData'])){
        $today = date('Y-m-d');
        $period = $_POST['period'];
        foreach($_POST['attendance'] as $key =>$val){       
            $studentid = $key;
            $status = $val;
    
            if(!empty($studentid)){
                try{
                    $dbh->beginTransaction();
                    $stmt = $dbh->prepare("INSERT INTO `attendance` (`stud_id`,`Period`, `Status`,`Date`)VALUES(?,?,?,?)");
                    $stmt->execute(array($studentid, $period, $status, $today));
                    $update = $stmt->rowCount();
                    $dbh->commit();
                }catch(PDOException $e){
                    $dbh->rollBack();
                    $error = $e->getMessage();//Print the error
                    exit;
                }
            }else{
                //Student ID not there
            }
        }
    
    }else{
        //Form not submitted, display other useful info
    }
    ?>
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2018-01-22
      • 1970-01-01
      • 2018-10-23
      • 2016-01-08
      • 1970-01-01
      • 2015-11-10
      • 1970-01-01
      相关资源
      最近更新 更多