ホームページ >データベース >mysql チュートリアル >ページ読み込み時に `if(isset($_POST['submit']))` がエコーとテーブルを非表示にしないのはなぜですか?

ページ読み込み時に `if(isset($_POST['submit']))` がエコーとテーブルを非表示にしないのはなぜですか?

Susan Sarandon
Susan Sarandonオリジナル
2024-11-06 20:17:03414ブラウズ

Why is my `if(isset($_POST['submit']))` Not Hiding the Echo and Table on Page Load?

if(isset($_POST['submit'])) がページ読み込み時にエコーとテーブルを非表示にするのに機能しない理由

問題の説明

if(isset($_POST['submit'])) ステートメントは、スクリプトが最初に開かれたときに、指定されたエコーとテーブルを非表示にすることを目的としています。ただし、このコードを実装した後、送信ボタンをクリックした後でもエコーとテーブルが表示されたままであるとユーザーが報告しています。

解決策

この問題は、送信ボタンに一意の割り当てが割り当てられていないために発生します。提供されたコード内の名前。これを修正するには、以下の修正されたコードに示すように、ボタンに名前を付ける必要があります。

<p><input type="submit" value="Submit" name="submit" /></p>

この変更により、if(isset($_POST['submit'])) ステートメントは正しく実行されます。送信ボタンがクリックされたことを検出し、目的の要素を非表示にする目的のアクションを実行します。

さらに、元のコードには、データベースに接続するデータベース接続コードが欠落しています。理解を深めるために、修正された完全なコードは次のとおりです:

<?php
$username = "xxx";
$password = "xxx";
$database = "mobile_app";

mysql_connect('localhost', $username, $password);

@mysql_select_db($database) or die("Unable to select database");

$sessionid = isset($_POST['sessionid']) ? $_POST['sessionid'] : "";
$moduleid = isset($_POST['moduleid']) ? $_POST['moduleid'] : "";
$teacherid = isset($_POST['teacherid']) ? $_POST['teacherid'] : "";
$studentid = isset($_POST['studentid']) ? $_POST['studentid'] : "";
$grade = isset($_POST['grade']) ? $_POST['grade'] : "";
$orderfield = isset($_POST['order']) ? $_POST['order'] : "";

$sessionid = mysql_real_escape_string($sessionid);
$moduleid = mysql_real_escape_string($moduleid);
$teacherid = mysql_real_escape_string($teacherid);
$studentid = mysql_real_escape_string($studentid);
$grade = mysql_real_escape_string($grade);

switch ($orderfield) {
    case 'ordersessionid':
        $orderfield = 'gr.SessionId';
        break;
    case 'ordermoduleid':
        $orderfield = 'm.ModuleId';
        break;
    case 'orderteacherid':
        $orderfield = 's.TeacherId';
        break;
    case 'orderstudentid':
        $orderfield = 'gr.StudentId';
        break;
    case 'ordergrade':
        $orderfield = 'gr.Grade';
        break;
}

$ordertable = $orderfield;

$result = mysql_query("SELECT * FROM Module m INNER JOIN Session s ON m.ModuleId = s.ModuleId JOIN Grade_Report gr ON s.SessionId = gr.SessionId JOIN Student st ON gr.StudentId = st.StudentId WHERE ('$sessionid' = '' OR gr.SessionId = '$sessionid') AND ('$moduleid' = '' OR m.ModuleId = '$moduleid') AND ('$teacherid' = '' OR s.TeacherId = '$teacherid') AND ('$studentid' = '' OR gr.StudentId = '$studentid') AND ('$grade' = '' OR gr.Grade = '$grade') ORDER BY $ordertable ASC");

$num = mysql_numrows($result);

if (isset($_POST['submit'])) {
    echo "<p>Your Search: <strong>Session ID:</strong> ";
    if (empty($sessionid)) echo "'All Sessions'";
    else echo "'$sessionid'";
    echo ", <strong>Module ID:</strong> ";
    if (empty($moduleid)) echo "'All Modules'";
    else echo "'$moduleid'";
    echo ", <strong>Teacher Username:</strong> ";
    if (empty($teacherid)) echo "'All Teachers'";
    else echo "'$teacherid'";
    echo ", <strong>Student Username:</strong> ";
    if (empty($studentid)) echo "'All Students'";
    else echo "'$studentid'";
    echo ", <strong>Grade:</strong> ";
    if (empty($grade)) echo "'All Grades'";
    else echo "'$grade'";
    "</p>";

    echo "<p>Number of Records Shown in Result of the Search: <strong>$num</strong></p>";

    echo "<table border='1'>";
    echo "<tr>";
    echo "<th>Student Id</th>";
    echo "<th>Forename</th>";
    echo "<th>Session Id</th>";
    echo "<th>Grade</th>";
    echo "<th>Mark</th>";
    echo "<th>Module</th>";
    echo "<th>Teacher</th>";
    echo "</tr>";
    while ($row = mysql_fetch_array($result)) {
        echo "<tr>";
        echo "<td>" . $row['StudentId'] . "</td>";
        echo "<td>" . $row['Forename'] . "</td>";
        echo "<td>" . $row['SessionId'] . "</td>";
        echo "<td>" . $row['Grade'] . "</td>";
        echo "<td>" . $row['Mark'] . "</td>";
        echo "<td>" . $row['ModuleName'] . "</td>";
        echo "<td>" . $row['TeacherId'] . "</td>";
        echo "</tr>";
    }
    echo "</table>";
}

mysql_close();
?>

以上がページ読み込み時に `if(isset($_POST['submit']))` がエコーとテーブルを非表示にしないのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。