Организация данных из базы данных SQL с помощью PHP - PullRequest
0 голосов
/ 28 ноября 2018

У меня проблемы с выяснением, как внедрить sql в мой php-код для моей веб-страницы.К сожалению, это задание.

Если бы кто-нибудь мог помочь, это было бы здорово, потому что у меня был кто-то, кто собирался помочь мне сегодня, но они отменили в последнюю минуту, и я все еще застрял в этом.

В области «Мои основные предметы» на странице для каждого основного предмета (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, который подключается к базе данных sql в phpmyadmin и к моему файлу 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 голосов
/ 28 ноября 2018

Если я правильно понимаю ваш вопрос, хотите ли вы видеть всех студентов выбранной специальности?Ваш запрос будет выглядеть примерно так с представленной схемой:

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

, которая будет отображать всех пользователей электротехнической специальности

РЕДАКТИРОВАТЬ:

Так как этозадание я постараюсь помочь как можно больше без написания точного кода для этой части.Так что для майоров слева вы бы связали каждого из них с идентификатором и отправили бы его на страницу , щелкнув по нему:

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

, а в PHP вы бы $ _ GET "Major", а затем продолжите предыдущий запрос для идентификатора 1, но будьте осторожны, когда делаете что-то подобное, так как оно открывается для SQL-инъекции.

  $major_id = $_GET['major'];

Вы хотите проверить ввод.Что, я думаю, выходит за рамки этого.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...