Więc stworzyliśmy interfejs, który akceptuje wejście z listy rozwijanej .. Jak logicznie używać PHP do wyświetlania wszystkich możliwych wartości tabeli bazy danych?
następnie wyświetla dane z trzech różnych tabel bazy danych w tabeli HTML ze wszystkimi wpisami, które są zgodne z kryteriami.
Tabela jest pokazana na dole powyższego obrazu.
Moje pytanie brzmi: jak używać PHP, używając pętli lub w inny sposób, aby przerobić mój kod i stworzyć ogromną stronę HTML, która przechodzi przez każde wydarzenie? AKA muszę wygenerować 126 tabele:
Ale nie jestem pewien, w jaki sposób podejść do tego. Moją pierwszą myślą było użyć pętli i po prostu umieścić kod, aby wygenerować w nim jedną tablicę, ale nie wiedziałbym, w jaki sposób zatrzymać warunek, ani nie wiedziałem, jak przełączać się między różnymi opcjami na listach rozwijanych. Nie proszę nikogo, aby utworzył kod dla mnie, ale raczej wskaż mi, w jakiej logice się posługiwać. Po tym, prawdopodobnie będę mógł sam to wymyślić. Dziękuje wszystkim. :)
Poniżej jest mój kod, który używam do generowania każdej tabeli, z adnotacjami w postaci komentarza:
<?php
error_reporting(E_ALL);
$dbhost = "localhost"; //logs into my localhost server
$dbname = "sportsDay";
$dbuser = "root";
$dbpass = "...";
$year=$_POST['Year']; //gets variables from the drop-downs in the form displayed above
$gender=$_POST['Gender'];
$event=$_POST['Event'];
$result[]=0;
try
{
$conn = new PDO("mysql:host=$dbhost;dbname=$dbname",$dbuser,$dbpass);
$conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
$conn->exec("SET CHARACTER SET utf8mb4");
$sql = "SELECT Students.lName, Students.fName, Students.house
FROM Entries INNER JOIN Events ON Entries.ev1ID = Events.ID
JOIN Students ON Students.stID = Entries.stID
WHERE (Entries.ev1ID = :event or Entries.ev2ID = :event2) and (Students.year = :year)
AND (Students.gender = :gender)
ORDER BY Students.house ASC";
//my SQL code that matches up the values from the drop-downs to the values in the database tables
$stmt = $conn->prepare($sql);
$stmt->bindValue(':event', $event);
$stmt->bindValue(':event2', $event);
$stmt->bindValue(':year', $year);
$stmt->bindValue(':gender', $gender);
$stmt->execute();
$result = $stmt->fetchAll();
$count = $stmt->rowCount();
}
catch(PDOException $e)
{
echo $e->getMessage();
}
?>
<html>
<body>
<?php if ($count > 0): ?> //checks to see if there are results. if there are results, it displays them:
<table border="1" >
<tr>
<th>Name</th>
<th>House</th>
<th>Score</th>
</tr>
<?php foreach ($result as $row) {
?>
<tr>
<td><?php echo $row['fName']. ' '.$row['lName'] ?></td>
<td><?php echo $row['house'] ?></td> <td></td>
</tr>
<?php } ?>
</table>
<?php else: echo "No results." ?> //if not, it displays that there are no results.
<?php endif ?>
</body>
</html>
Więc post był dużo objąć, ale jesteś próbując wygenerować wiele tabel naraz? To właśnie zyskałem czytając dolną część? – Jek
@Jek tak, w zasadzie próbuję wygenerować wiele tabel na raz. Tak mi przykro, że to było niejasne, będę edytować post dla jasności. –
@Jek ma teraz sens? –