ホームページ >データベース >mysql チュートリアル >ページ読み込み時に `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 サイトの他の関連記事を参照してください。