我无法弄清楚如何将sql实现到我的网页的
PHP代码中.不幸的是,这是一项任务.
如果有人能提供帮助那就太棒了,因为我今天有人会帮助我,但他们最后一刻取消了,我仍然坚持这一点.
页面上的My Majors区域,每个主要区域(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>
这是我的.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>© 2015 richard ricardo kung fu school</footer>
</body>
</html>
对不起,这是一个很长的页面,我也不知道如何插入较小的图像.如果我点击计算机科学作为主要的例子,这就是它应该看的样子.哦,database.php文件也使用了一个pdo对象.
最佳答案 如果我正确理解您的问题,您希望能够看到所选专业的所有学生吗?您的查询将是这样的,然后使用您呈现的模式:
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'];
您需要验证输入.我认为这超出了这个范围.