Использование if(isset($_POST[‘submit’])), чтобы не отображать эхо, когда скрипт открыт, не работает

#php #mysql #post #if-statement #isset

#php #mysql #Публикация #if-statement #isset

Вопрос:

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

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

     <!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>
  

Любая помощь будет высоко оценена, спасибо.

Ответ №1:

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

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

Комментарии:

1. параметр ‘name’ из входных данных, а не ‘value’ и не ‘class’ , пример <input name=»TEST»> -> $_POST[‘TEST’]; …важно ‘name’ … проще =)

Ответ №2:

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

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

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

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

Ответ №3:

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

Либо:

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

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

Комментарии:

1. Спасибо, я использовал !empty для тестирования, и это то, чего мне не хватало.

Ответ №4:

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

 <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']) amp;amp; !empty($_POST['submit'])) {
  // if (!logged_in()) 
  echo 'asodj';
}
  

Ответ №5:

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

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

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

Ответ №6:

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

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

Вызов

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

Ответ №7:

Другой вариант — использовать

 $_SERVER['REQUEST_METHOD'] == 'POST'
  

Комментарии:

1. Я думаю, что этот ответ был бы лучше с некоторой дополнительной информацией. Почему этот подход решает проблему? Почему это предпочтительнее принятого ответа?

Ответ №8:

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

Ответ №9:

Вы можете использовать :

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

Или, если хотите, кнопки для нас

<button type="submit" name="submit">Submit</button>

В вашем php-скрипте if(isset($_POST['submit']))

Наиболее важным является атрибут «name» для выполнения отправки формы