用php整理sql数据库中的数据

时间:2018-11-28 02:26:46

标签: php html css sql phpmyadmin

我在弄清楚如何在我的网页的php代码中实现sql时遇到了麻烦。不幸的是,这是一项任务。

如果有人可以帮助那会很棒,因为我有一个今天要帮助我的人,但是他们在最后一刻取消了,我仍然坚持下去。

页面上的“我的专业”区域中,每个专业(comp sci,eng,bus)都必须是可单击的,并且在单击它们时,它将更新index.php页面并在表中显示具有该专业的学生。我确实使用majorID作为识别专业的外键。我在知道如何使用php来执行此操作时遇到了麻烦。

我一直在考虑使用foreach循环使用此代码,除非我遇到太多错误,其中一个是未定义索引和致命的未捕获pdo。

<aside>
        <!-- display a list of majors-->
        <h2>Majors</h2>
        <nav>
        <ul>
        <?php foreach ($majors as $major) : ?>
            <li>
            <a href="?majorID=<?php 
                      echo $major['majorID']; ?>">
                <?php echo $major['majorname']; ?>
            </a>
            </li>
        <?php endforeach; ?>
        </ul>
        </nav>
    </aside>

My page right now.

这是我的.sql代码

DROP DATABASE IF EXISTS richard_ricardo_student_db;

CREATE DATABASE richard_ricardo_student_db;
DROP USER 'richardricardo1'@'localhost';
CREATE USER 'richardricardo1'@'localhost' IDENTIFIED BY 'richardisgreat';
GRANT SELECT, INSERT, UPDATE, DELETE ON `richard\_ricardo\_student\_db`.* TO 'richardricardo1'@'localhost';

CREATE table major (
 majorID int NOT NULL AUTO_INCREMENT,
 majorname varchar(255),
 PRIMARY KEY (majorID)
);

CREATE table student (
 studentID int NOT NULL AUTO_INCREMENT,
 majorID int,
 firstname varchar(255),
 lastname varchar(255),
 gender varchar(10),
 PRIMARY KEY (studentID),
 FOREIGN KEY (majorID) REFERENCES major (majorID)
);

INSERT INTO major (majorID, majorname)
VALUES (1, "Computer Science"),(2, "Electrical Engineering"),(3, "Business");

INSERT INTO student (studentID, majorID, firstname, lastname, gender)
VALUES (1, 1, "Po", "Black", "M"),(2, 1, "Shifu", "Hoffman", "M"),(3, 1, "Tigress", "Jolie", "F"),(4, 1, "Jennifer", "Yuh", "F"),(5, 1, "Ox", "Storming", "M"),(6, 2, "Monkey", "Chan", "M"),(7, 1, "Viper", "Liu", "F"),(8, 2, "Mantis", "Rogen", "M"),(9, 3, "Crane", "Cross", "M"),(10, 3, "Oogway", "Kim", "M"),(11, 3, "Ping", "Hong", "M");

这是我的index.php代码,它连接到phpmyadmin上的sql数据库和我的database.php文件。

<!DOCTYPE html>

<html lang="en">

<head>
    <meta charset="utf-8">
    <link rel="stylesheet" href="main.css?v=1">
    <title>richard ricardo kung fu school</title> 
</head>

<body>
<header>
<h1>Richard Ricardo Kung Fu School - Students</h1>
</header>

<section> 
<div id="MajorList">
<h2>Majors</h2>

<div id="MajorPadding">
<?php
include('richard_ricardo_database.php');

$stmt = $pdo->query('SELECT * FROM Major');
while ($row = $stmt->fetch())
{
    echo $row['majorname']. "<br><br>";
}
?>
</div>
</div> 
<div id="StudentList">
<h2>Student List</h2>

<table class="greyGridTable">
<thead>
<tr>
<th>Student ID</th>
<th>First Name</th>
<th>Last Name</th>
<th>Gender</th>
<th></th>
</tr>
<?php
$stmt = $pdo->query('SELECT * FROM Student');
while ($row = $stmt->fetch())
{
    echo "<tr><td>".$row['studentID']."</td><td>".strtoupper($row['firstname'])."
    </td><td>".strtoupper($row['lastname'])."</td><td>".$row['gender']."
    </td><td><a href='richard_ricardo_delete_student.php?id=".$row['studentID']."'>
    <button>Delete</button></a></td></tr>";
}
?>
</table>

<br>
<a href="richard_ricardo_add_student_form.php">Add Student</a>
<br>

<br>
<a href="richard_ricardo_add_major_form.php">List / Add Major</a>
<br>
</div>
</section>

<br>
<footer>&copy; 2015 richard ricardo kung fu school</footer>

</body>

</html>

抱歉,这页太长了,我也不知道如何插入较小的图像。例如,如果我单击计算机科学作为专业,这就是它的外观。哦,database.php文件也使用pdo对象。

enter image description here

1 个答案:

答案 0 :(得分:1)

如果我正确理解了您的问题,您希望能够看到所选专业的所有学生吗?您的查询将是这样的,然后使用您提供的模式:

SELECT studentID, firstname, lastname, gender
FROM   student
       JOIN major ON student.majorID = major.majorID
WHERE  major.majorID = 2;

它将显示电气工程专业的所有用户

编辑:

由于这是一项任务,因此我将尽我所能提供最大的帮助,而无需为此部分编写确切的代码。因此,对于左侧的专业,您将每个人与一个ID相关联,并在点击它时将send it to the page与之关联:

http://localhost/studentmajors.php?major=1

,在PHP中,您将$_GET“ major”,然后继续对ID为1的上一个查询,但是在进行此类操作时要小心,因为它会为SQL注入打开。

  $major_id = $_GET['major'];

您将要验证输入。我认为这超出了此范围。