Foros del Web » Programando para Internet » PHP »

Realizar búsquedas dinámicas con condiciones

Estas en el tema de Realizar búsquedas dinámicas con condiciones en el foro de PHP en Foros del Web. 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 ...
  #1 (permalink)  
Antiguo 12/07/2013, 10:07
Avatar de kana_kanji2000  
Fecha de Ingreso: mayo-2013
Ubicación: Caracas
Mensajes: 15
Antigüedad: 10 años, 11 meses
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

Etiquetas: bases-de-datos, campos, formulario, funciones, postgresql
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 18:57.