Использование if (isset ($ _ POST )), чтобы не отображать эхо, когда скрипт открыт, не работает

У меня небольшая проблема с кодом if(isset($_POST['submit'])) . Я хочу, чтобы некоторые эхо и таблица не отображались, когда скрипт открыт, но я хочу, чтобы он показывал, когда нажата кнопка отправки формы. Проблема заключается в том, что когда я включаю функцию if(isset($_POST['submit'])) , когда я нажимаю кнопку отправки, она вообще не отображает эхо и таблицу. Почему это и вы можете помочь мне решить эту проблему, пожалуйста.

Ниже приведен код:

  <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <title>Exam Interface</title> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> </head> <body> <p><strong>NOTE: </strong>If a search box is left blank, then the form will search for all data under that specific field</p> <form action="exam_interface.php" method="post" name="sessionform"> <!-- This will post the form to its own page"--> <p>Session ID: <input type="text" name="sessionid" /></p> <!-- Enter Session Id here--> <p>Module Number: <input type="text" name="moduleid" /></p> <!-- Enter Module Id here--> <p>Teacher Username: <input type="text" name="teacherid" /></p> <!-- Enter Teacher here--> <p>Student Username: <input type="text" name="studentid" /></p> <!-- Enter User Id here--> <p>Grade: <input type="text" name="grade" /></p> <!-- Enter Grade here--> <p>Order Results By: <select name="order"> <option value="ordersessionid">Session ID</option> <option value="ordermoduleid">Module Number</option> <option value="orderteacherid">Teacher Username</option> <option value="orderstudentid">Student Username</option> <option value="ordergrade">Grade</option> </select> <p><input type="submit" value="Submit" /></p> </form> <?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'> <tr> <th>Student Id</th> <th>Forename</th> <th>Session Id</th> <th>Grade</th> <th>Mark</th> <th>Module</th> <th>Teacher</th> </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(); ?> </body> </html> ,  <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <title>Exam Interface</title> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> </head> <body> <p><strong>NOTE: </strong>If a search box is left blank, then the form will search for all data under that specific field</p> <form action="exam_interface.php" method="post" name="sessionform"> <!-- This will post the form to its own page"--> <p>Session ID: <input type="text" name="sessionid" /></p> <!-- Enter Session Id here--> <p>Module Number: <input type="text" name="moduleid" /></p> <!-- Enter Module Id here--> <p>Teacher Username: <input type="text" name="teacherid" /></p> <!-- Enter Teacher here--> <p>Student Username: <input type="text" name="studentid" /></p> <!-- Enter User Id here--> <p>Grade: <input type="text" name="grade" /></p> <!-- Enter Grade here--> <p>Order Results By: <select name="order"> <option value="ordersessionid">Session ID</option> <option value="ordermoduleid">Module Number</option> <option value="orderteacherid">Teacher Username</option> <option value="orderstudentid">Student Username</option> <option value="ordergrade">Grade</option> </select> <p><input type="submit" value="Submit" /></p> </form> <?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'> <tr> <th>Student Id</th> <th>Forename</th> <th>Session Id</th> <th>Grade</th> <th>Mark</th> <th>Module</th> <th>Teacher</th> </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(); ?> </body> </html> 

Любая помощь будет очень признательна, спасибо.

Вам нужно указать свое имя для <input> или оно будет недоступно с помощью $_POST['submit'] :

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

Что вы проверяете

 if(isset($_POST['submit'])) 

но нет имени переменной «submit». ну, я хочу, чтобы вы поняли, почему это не работает. давайте представим, если вы дадите свое имя кнопки отправки delete <input type="submit" value="Submit" name="delete" /> и проверьте if(isset($_POST['delete'])) тогда он работает в этом коде вы не указали ни одного имени для отправки кнопки и проверки ее существования или нет с isset(); так что php не нашел никакой переменной, как «submit», поэтому ее не работает теперь попробовать:

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

Вы никогда не называли свою кнопку отправки, так как это касается формы, это просто действие.

Или:

  1. Назовите кнопку отправки ( <input type="submit" name="submit" ... /> )
  2. Проверьте, if (!empty($_POST)) вместо этого, чтобы обнаружить, когда данные были опубликованы.

Помните, что ключи в $_POST отображаются только для именованных элементов ввода. Итак, если элемент не имеет атрибута name, он не будет $_POST в $_POST (или $_GET / $_REQUEST )

Вы должны указать имя своей кнопки отправки

 <input type="submit" value"Submit" name="login"> 

Затем вы можете вызвать кнопку с $_POST['login']

Для функции $_post требуется значение имени:

 <input type="submit" value"Submit" name="example"> 

Вызов

 $var = strip_tags($_POST['example']); if (isset($var)){ // your code here } 

Что в этом плохого?

 <form class="navbar-form navbar-right" method="post" action="login.php"> <div class="form-group"> <input type="email" name="email" class="form-control" placeholder="email"> <input type="password" name="password" class="form-control" placeholder="password"> </div> <input type="submit" name="submit" value="submit" class="btn btn-success"> </form> 

login.php

 if(isset($_POST['submit']) && !empty($_POST['submit'])) { // if (!logged_in()) echo 'asodj'; }