2011-10-15 9 views
8

Tengo un pequeño problema con mi código if(isset($_POST['submit'])). Lo que quiero es que algunos echos y una tabla no aparezcan cuando el script esté abierto, pero sí quiero que se muestre cuando se haga clic en el botón de enviar del formulario. Sin embargo, el problema es que cuando incluyo la función if(isset($_POST['submit'])), cuando hago clic en el botón de enviar, no se muestran los echos ni la tabla. ¿Por qué es esto y puede ayudarme con este problema, por favor?

A continuación se muestra el código:

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

Cualquier ayuda será muy apreciada, gracias.

Respuesta

25

Usted necesita darle a su <input> presentar un nombre o que no estará disponible usando $_POST['submit']:

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

respuesta pertinente buen trabajo – humphrey

+0

parámetro 'nombre' de la entrada, no 'valor' y no 'clase', ejemplo -> $ _POST [ 'TEST']; ... importante 'nombre' ... más fácil =) – KingRider

+0

gracias. tu me ayudas tambien es una cuestión de precisión ... la entrada debe tener un atributo de tipo y nombre, ¿verdad? (al menos) –

6

Nunca ha nombrado su botón de envío, por lo que respecta al formulario, es solo una acción.

O bien:

  1. Nombre del botón de envío (<input type="submit" name="submit" ... />)
  2. if (!empty($_POST)) prueba en lugar de detectar cuando los datos se han publicado.

Recuerde que las claves en la $_POST única superglobal aparecen nombrados para elementos de entrada. Por lo tanto, a menos que el elemento tiene el atributo de nombre, no va a venir a través de $_POST (o $_GET/$_REQUEST)

8

Lo que se está comprobando

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

pero no hay nombre de la variable llamada "enviar". bien, quiero que entiendas por qué no funciona. imaginemos que si le das a tu botón de enviar nombre eliminar <input type="submit" value="Submit" name="delete" /> y marcar if(isset($_POST['delete'])) entonces funciona en este código que no dio ningún nombre para enviar el botón y comprobar que existe o no con la función isset(); así que php no encontró ninguna variable como "enviar" para que no su trabajo, ahora pasa esto:

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

me salvó, estaba atrapado –

1

le tiene que dar un nombre al botón de enviar

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

a continuación, se puede llamar al botón con $_POST['login']

1

La función $_post necesita el valor del nombre como:

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

llamada

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

¿Qué de malo en esto?

<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'; 
} 
Cuestiones relacionadas