简体   繁体   中英

Getting a Button to Display Query Results in PHP MYSQL

I am trying to run a query that will display in my browser when I click the button, but instead the results are just displayed from the beginning. I have the button set to post and my php file as the action but it seems to just run the code from the beginning. Here is what I have:

<?php
$host = "localhost";
$db = "cis475";
$user = "root";
$pw = "";


$conn = new mysqli ($host, $user, $pw, $db);
if($conn->connect_error) die($conn->connect_error);

$readAllQuery = "SELECT * FROM enrollment JOIN course ON enrollment.CourseID 
= course.CourseID JOIN student ON enrollment.StudentID = student.StudentID";

    $result = $conn->query($readAllQuery);
    if (!$result) die($conn->error);

    echo "<table border='1'>";
    echo "<tr><td>EnrollmentID</td><td>Grade</td><td>EnrollmentSemester</td> 
   <td>CourseID</td><td>StudentID</td><td>Title</td><td>Credits</td> 
   <td>LastName</td><td>FirstMidName</td></tr>";
    while ($row = mysqli_fetch_assoc($result)){
        echo "<tr><td>{$row['EnrollmentID']}</td><td>{$row['Grade']}</td> 
   <td>{$row['EnrollmentSemester']}</td><td>{$row['CourseID']}</td><td> 
   {$row['StudentID']}</td><td>{$row['Title']}</td><td>{$row['Credits']} 
   </td> 
   <td>{$row['LastName']}</td><td>{$row['FirstMidName']}</td></tr>";

    }
echo "</table>";

?>

<form method='post' action='readAll.php'>

<input type='submit' name='submit' value='Show All Enrollments'>

</form>

You need to see if 'something' is there (in this case, all you have is the submit) and then do the display....

<?php
if($_POST['submit']){
    $host = "localhost";
    $db = "cis475";
    $user = "root";
    $pw = "";

    $conn = new mysqli ($host, $user, $pw, $db);
    if($conn->connect_error) die($conn->connect_error);

    $readAllQuery = "SELECT * FROM enrollment JOIN course ON enrollment.CourseID = course.CourseID JOIN student ON enrollment.StudentID = student.StudentID";

    $result = $conn->query($readAllQuery);
    if (!$result) die($conn->error);

    echo "<table border='1'>";
    echo "<tr><td>EnrollmentID</td><td>Grade</td><td>EnrollmentSemester</td> 
    <td>CourseID</td><td>StudentID</td><td>Title</td><td>Credits</td> 
    <td>LastName</td><td>FirstMidName</td></tr>";
    while ($row = mysqli_fetch_assoc($result)){
        echo "<tr><td>{$row['EnrollmentID']}</td><td>{$row['Grade']}</td> 
        <td>{$row['EnrollmentSemester']}</td><td>{$row['CourseID']}</td><td> 
        {$row['StudentID']}</td><td>{$row['Title']}</td><td>{$row['Credits']} 
        </td><td>{$row['LastName']}</td><td>{$row['FirstMidName']}</td></tr>";
    }
    echo "</table>";
}
?>

<form method='post' action='readAll.php'>

<input type='submit' name='submit' value='Show All Enrollments'>

</form>

Any code present in inside the program file will run upon execution, this is true for all languages, unless it is wrapped inside an if or any other conditional statements; in which case the code enclosed in the conditional statement will only be executed if the condition is true .

And thus to solve your issue, you'll need a conditional statement that checks if the form was submitted or not and if it was then execute the code that follows-

if(isset($_POST['submit'])){
    $host = "localhost";
    $db = "cis475";
    $user = "root";
    $pw = "";

    $conn = new mysqli ($host, $user, $pw, $db);
    if($conn->connect_error) die($conn->connect_error);

    $readAllQuery = "SELECT * FROM enrollment JOIN course ON enrollment.CourseID = course.CourseID JOIN student ON enrollment.StudentID = student.StudentID";

    $result = $conn->query($readAllQuery);
    if (!$result) die($conn->error);

    echo "<table border='1'>";
    echo "<tr><td>EnrollmentID</td><td>Grade</td><td>EnrollmentSemester</td> 
    <td>CourseID</td><td>StudentID</td><td>Title</td><td>Credits</td> 
    <td>LastName</td><td>FirstMidName</td></tr>";
    while ($row = mysqli_fetch_assoc($result)){
        echo "<tr><td>{$row['EnrollmentID']}</td><td>{$row['Grade']}</td> 
        <td>{$row['EnrollmentSemester']}</td><td>{$row['CourseID']}</td><td> 
        {$row['StudentID']}</td><td>{$row['Title']}</td><td>{$row['Credits']} 
        </td><td>{$row['LastName']}</td><td>{$row['FirstMidName']}</td></tr>";
    }
    echo "</table>";
}

In this snippet, we use if statement to check if variable $_POST['submit'] exists.
Here submit with is the name of your form's submit button
Note: a $_POST variable will only exist if the form was submitted, calling isset() will return false if the form wasn't submitted and as such your code inside { } will not be executed on first load but will run upon submit.

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM