Ver Mensaje Individual
  #1 (permalink)  
Antiguo 12/07/2013, 10:07
Avatar de kana_kanji2000
kana_kanji2000
 
Fecha de Ingreso: mayo-2013
Ubicación: Caracas
Mensajes: 15
Antigüedad: 11 años
Puntos: 0
Busqueda Realizar búsquedas dinámicas con condiciones

Hola de nuevo, siguiendo en la línea de mi proyecto, ahora me he atorado en un punto. Quiero realizar una búsqueda por campos, pero aunque tenga facilitado un framework que realiza esto, no lo he entendido, así que he realizado todo el buscador desde cero.

El asunto es que quiero filtrarlo por diversos campos:
el genérico, que lea el nombre o el apellido, (o por cédula sería interesante):
Código HTML:
Ver original
  1. <label>Buscar por nombres:
  2.     <input type="text" name="buscar" id="buscar" />
  3.     </label>
y filtrado de campos por componentes (lee desde la base de datos PostgreSQL, previa llamada
Código PHP:
Ver original
  1. <?php echo "<link href='CSS/estilos.css' rel='stylesheet' type='text/css' />"; include('postgres.php');?>
:
Código PHP:
Ver original
  1. <label>Buscar por componente:
  2.     <select name="componente">
  3.     <?php while($comp = pg_fetch_array($componente)){
  4.             echo "<option value=\"$comp[idcomponente]\">$comp[componente]</option>";
  5.         }
  6.     ?>
  7.     </select>
  8.     <br />
  9.     </label>
Y por cargo:
Código PHP:
Ver original
  1. </label>
  2.     <label>Buscar por cargo:
  3.     <select name="cargo" id="cargo">
  4.     <?php
  5.         while($cargom = pg_fetch_array($cargo)){
  6.             echo "<option value=\"$cargom[idcargo]\">$cargom[cargoocupa]</option>";
  7.         }
  8.     ?>
  9.     </select>
  10.     </label>

Pero quiero hacer que hayan condiciones: escojo un componente, muestra los resultados por componentes, escribo un nombre, sólo muéstrame los resultados por nombres. Ya probé y funcionan al menos dos, pero mal: si escojo un componente me rebota porque el campo texto está vacío:
Código PHP:
Ver original
  1. function comprobar(){
  2.     global $errores;
  3.     if($_REQUEST['buscar'] == ""){
  4.         $errores[] = "<font color='red'>Escriba un texto</font>";
  5.     }
  6. }


Y si filtro por nombre me los muestra aparte, pero muestra esto además:
Código PHP:
Ver original
  1. <h1>IDENTIFICACI&Oacute;N DE PERSONAL</h1>
  2. <table border=1 cellspacing=2 bordercolor="#CC0000" align="center">
  3. <tr>
  4. <td>Componente</td><td>idPersona</td><td>Nombres</td><td>Apellidos</td><td>G&eacute;nero</td><td>Tel&eacute;fono</td>
  5. </tr>
  6. <?php
  7. while ($datos = pg_fetch_row($consulta)){
  8.     echo "<tr>";
  9.     foreach($datos as $res){
  10.         echo "<td>",$res,"</td>";
  11.     }
  12.     echo "</tr>";
  13. }
vacío... queda requetefeo . Entonces, ¿hay alguna forma de filtrar por una y sólo una opción? Ya probé haciendo llamadas a funciones con, por ejemplo:
Código PHP:
Ver original
  1. if(isset($_POST['buscar'])){
  2.      buscarPorNombre();
  3. }
  4. else if(isset($_POST['componente])){
  5.     buscarPorComponente();
  6. }

pero me sale un error de "call to undefined function comprobar on (...) line 28". Esta función está dentro de "function buscarPorNombre()", y creo que es porque no se pueden llamar funciones dentro de funciones así a secas. ¿Hay otra forma de comprobar esto, además?

Última edición por kana_kanji2000; 12/07/2013 a las 10:09 Razón: Agregar notificación por correo electrónico