Formulario de búsqueda con uno o más (múltiples) parámetros
He entendido lo básico, donde he creado dos archivos, el formulario de búsqueda donde un usuario ingresa los parámetros de búsqueda y el archivo de resultados que produce los elementos ingresados. En aras de la simplicidad, designaremos el archivo del formulario de búsqueda como search.php y la página de resultados como results.php.
EDITAR: etiqueta de etiqueta limpia para una lectura más suave.
search.php<?php
if(!empty($_POST['id']) && isset($_POST['id'])) {
header("Location: ?m=search.results&id=".$_POST['id']."");
} elseif(!empty($_POST['major']) && isset($_POST['major'])) {
header("Location: ?m=search.results&major=".$_POST['major']."");
} elseif(!empty($_POST['college']) && isset($_POST['major'])) {
header("Location: ?m=search.results&college=".$_POST['college']."");
} elseif (!empty($_POST['name']) && isset($_POST['name'])) {
header("Location: ?m=search.results&name=".$_POST['name']."");
} elseif (!empty($_POST['id']) && !empty($_POST['college']) && !empty($_POST['major'])
&& isset($_POST['submit']) && !empty($_POST['name'])) {
echo "<div class='alert alert-danger'>No students found. Please try different parameters.</div>";
}
?>
<h4>Search</h4>
<form method="POST">
<table width="100%">
<tr><td>ID:</td><td> <input type="text" name="id" class="form-control"></textarea></td></tr>
<tr><td>Name:</td><td> <input type="text" name="name" class="form-control"></textarea></td></tr>
<tr><td>Major:</td><td><select name="major" class="form-control"><option></option><?php echo majorSelect(); ?></select></td></tr>
<tr><td>College:</td><td><select name="college" class="form-control"><option></option><?php echo collegeSelect(); ?></select></td></tr>
<tr><td colspan="2"><input type="submit" name="submit" value="Search" class="btn btn-lrg btn-primary" style="margin-top:10px;"></td></tr>
</table>
</form>
resultados.php <?php if(isset($_GET['id'])){
$students = $db->query("SELECT * FROM `user_details` a, `user` b WHERE a.uid = b.id AND a.uid = '".$_GET['id']."'");
while($student = $students->fetch()) {
echo '
<tr>
<td>'.$student['uid'].'</td>
<td>'.$student['name'].'</td>
<td>'.$student['major'].'</td>
<td>'.$student['college'].'</td>
<td><a href="?m=profile&id='.$student['id'].'" style="display:block">View</a></td>
</tr>';
}
} elseif(isset($_GET['major'])){
$students = $db->query("SELECT * FROM `user_details` a, `user` b WHERE a.uid = b.id AND a.major = '".$_GET['major']."'");
while($student = $students->fetch()) {
echo '
<tr>
<td>'.$student['uid'].'</td>
<td>'.$student['name'].'</td>
<td>'.$student['major'].'</td>
<td>'.$student['college'].'</td>
<td><a href="?m=profile&id='.$student['id'].'" style="display:block">View</a></td>
</tr>';
}
} elseif(isset($_GET['college'])){
$students = $db->query("SELECT * FROM `user_details` a, `user` b WHERE a.uid = b.id AND a.college = '".$_GET['college']."'");
while($student = $students->fetch()) {
echo '
<tr>
<td>'.$student['uid'].'</td>
<td>'.$student['name'].'</td>
<td>'.$student['major'].'</td>
<td>'.$student['college'].'</td>
<td><a href="?m=profile&id='.$student['id'].'" style="display:block">View</a></td>
</tr>';
}
} elseif(isset($_GET['name'])){
$name = $_GET['name'];
$students = $db->query("SELECT * FROM `user_details` a, `user` b WHERE a.uid = b.id AND b.name LIKE '%". $name . "%'");
while($student = $students->fetch()) {
echo '
<tr>
<td>'.$student['uid'].'</td>
<td>'.$student['name'].'</td>
<td>'.$student['major'].'</td>
<td>'.$student['college'].'</td>
<td><a href="?m=profile&id='.$student['id'].'" style="display:block">View</a></td>
</tr>';
}
} ?>
Entonces, esencialmente me gustaría volver a escribir lo anterior, mientras que un usuario puede ingresar uno o más parámetros, y se devuelve el resultado deseado (por ejemplo, nombre y universidad, & name = x & college = y O todos los elementos si es necesario). Estoy pensando que tendré que repensar la lógica en ambos archivos, ¡pero estoy abierto a cualquier idea o sugerencia que usted, esta maravillosa comunidad, pueda tener! Cualquier consejo / guía sería muy apreciado.