>  기사  >  데이터 베이스  >  내 `if(isset($_POST['submit']))`가 페이지 로드 시 에코와 테이블을 숨기지 않는 이유는 무엇입니까?

내 `if(isset($_POST['submit']))`가 페이지 로드 시 에코와 테이블을 숨기지 않는 이유는 무엇입니까?

Susan Sarandon
Susan Sarandon원래의
2024-11-06 20:17:03328검색

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 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.