Foros del Web » Programando para Internet » PHP »

Ayuda seria con buscadores

Estas en el tema de Ayuda seria con buscadores en el foro de PHP en Foros del Web. Buenas noches. Permítanme contarles que he revisado la red de arriba hacia abajo los últimos tres meses, he leído cuanto libro he encontrado para descargar, ...
  #1 (permalink)  
Antiguo 24/01/2010, 23:35
 
Fecha de Ingreso: enero-2010
Mensajes: 6
Antigüedad: 14 años, 10 meses
Puntos: 0
Ayuda seria con buscadores

Buenas noches.

Permítanme contarles que he revisado la red de arriba hacia abajo los últimos tres meses, he leído cuanto libro he encontrado para descargar, pero sin importar que haga al parecer soy muy tonto o demasiado confundido.

Lo que quiero pedirles, ya pero bien confianzudo de mi parte (estoy conciente de eso) es un ejemplo de formulario de buscador avanzado con su correspondiente buscador en php.

Ya sé, abuchéenme, grítenme, ríanse de mí o lo que quieran, pero de que necesito este tipo de buscador lo necesito ya casi con desesperación.

Totalmente entregado a ustedes les agradezco de antemano.
  #2 (permalink)  
Antiguo 24/01/2010, 23:38
Avatar de bioxido  
Fecha de Ingreso: diciembre-2008
Ubicación: $_SERVER['PHP_SELF']
Mensajes: 601
Antigüedad: 16 años
Puntos: 21
Respuesta: Ayuda seria con buscadores

En google hay varios codigos, hasta de buscadores con autosuggest, cuestion de buscar.

Google -> Buscador con php
  #3 (permalink)  
Antiguo 24/01/2010, 23:40
 
Fecha de Ingreso: enero-2010
Mensajes: 6
Antigüedad: 14 años, 10 meses
Puntos: 0
Respuesta: Ayuda seria con buscadores

Lo he hecho, amigo, y me he metido a las mismas direcciones una y otra vez, pero siempre hablan de ejemplos de buscadores simples, y en los foros en general siempre dan o sólo los formularios o sólo partes de códigos. Cuando uno no sabe y le cuesta aprender es una pesadilla, por eso dependo de este post ahora.
  #4 (permalink)  
Antiguo 24/01/2010, 23:46
Avatar de bioxido  
Fecha de Ingreso: diciembre-2008
Ubicación: $_SERVER['PHP_SELF']
Mensajes: 601
Antigüedad: 16 años
Puntos: 21
Respuesta: Ayuda seria con buscadores

Bien... Nos seria de ayuda que nos definas segun tu criterio que es un "buscador avanzado" , digamos que opciones "avanzadas" tiene,etc...

Otra cosa, el buscador seria para buscar resultados en una base de datos MYSQL ya existente, cierto?
  #5 (permalink)  
Antiguo 24/01/2010, 23:55
 
Fecha de Ingreso: enero-2010
Mensajes: 6
Antigüedad: 14 años, 10 meses
Puntos: 0
Respuesta: Ayuda seria con buscadores

Así es, funciona en base a Mysql, y quiero darte un abrazo por responderme tan pronto.
La idea es que pueda elegir en tres list/menu a la región, a la empresa y a la sucursal, además de una caja de texto para escribir el nombre del funcionario. Para mi eso ya es avanzado.
Aclaro que en hacer el formulario no hay problema, pero el php, que en general se llama "buscar.php", ése que el formulario lo llama por action, ahí es donde sudo sin parar.
  #6 (permalink)  
Antiguo 25/01/2010, 00:15
Avatar de bioxido  
Fecha de Ingreso: diciembre-2008
Ubicación: $_SERVER['PHP_SELF']
Mensajes: 601
Antigüedad: 16 años
Puntos: 21
Respuesta: Ayuda seria con buscadores

La verdad que no estoy familiarizado con consultas muy complejas, pero podrias hacer algo asi:


Código PHP:
$funcionario $_POST['funcionario'];
$sucursal $_POST['sucursal'];
$region $_POST['region'];

$query mysql_query("SELECT * FROM `tabla` WHERE funcionario LIKE '%$funcionario%' AND sucursal = '$sucursal'  "); //No me acuerdo si se podia usar mas un AND en la consulta, en caso de que se pueda, podrias agregar "AND region = '$region' " 
Si es como creo, y no se puede usar mas de un AND por consulta, podrias compararlo con un if.

Código PHP:
echo '<strong>Resultados de busqueda:</strong>';
while(
$row mysql_fetch_assoc($query)){

if(
$row['region'] === $region){ //Si la region es igual a la ingresada en el formulario, se imprimen los resultados, sino, nada.
echo $row['funcionario'].'<br>';
}


Si mas o menos entendes php no creo necesites mas que esto para seguir por tu cuenta...

Fijate que lo hice como si los campos de tu tabla fueran: sucursal, funcionario, region. Si son diferentes, vas a tener que editar ahi.

Los name del form... funcionario, region, sucursal.

Suerte.
  #7 (permalink)  
Antiguo 25/01/2010, 00:22
 
Fecha de Ingreso: enero-2010
Mensajes: 6
Antigüedad: 14 años, 10 meses
Puntos: 0
Respuesta: Ayuda seria con buscadores

Mi querido bioxido, más o menos así son los ejemplos que he visto por la red y en libros, y en realidad (reitero, debo ser tonto o estar muy confundido) no encuentro cómo escribir estos códigos para armar el "buscar.php". Por ejemplo, ¿lo que escriba en la caja de texto debe ser igual que en la selección del list/menu ($funcionario = $_POST['funcionario'];)?
  #8 (permalink)  
Antiguo 25/01/2010, 00:29
Avatar de bioxido  
Fecha de Ingreso: diciembre-2008
Ubicación: $_SERVER['PHP_SELF']
Mensajes: 601
Antigüedad: 16 años
Puntos: 21
Respuesta: Ayuda seria con buscadores

Son las 3:30 de la mañana, mañana te armo el script completo (espero acordarme)

--

Me gustaria que este tema quede como ejemplo para todos esos noobs que no se gastan en escribir mas de 2 lineas en un tema y pretenden que les armen un script completo. Que para colmo despues se enojan si les decis que vallan al foro de Ofertas de empleo.

Si armaran sus temas como lo hiso Urgido2010 (LEIBLES) estoy seguro de que los foreros se tomarian aunque sea 10minutos en responder su tema, antes de decirles "Anda al foro de ofertas de empleo"

Solo un ejemplo.
  #9 (permalink)  
Antiguo 25/01/2010, 00:33
 
Fecha de Ingreso: enero-2010
Mensajes: 6
Antigüedad: 14 años, 10 meses
Puntos: 0
Respuesta: Ayuda seria con buscadores

Quedo muy agradecido.
Mañana me conectaré desde temprano.
Un fuerte abrazo y buenas noches.
  #10 (permalink)  
Antiguo 25/01/2010, 01:51
Avatar de dggluz  
Fecha de Ingreso: abril-2009
Ubicación: Buenos Aires, Argentina
Mensajes: 525
Antigüedad: 15 años, 7 meses
Puntos: 50
Respuesta: Ayuda seria con buscadores

Básicamente, en la página que procesa tienes dos partes:
  1. El código PHP de conexión/consulta/muestra de los resultados, que es casi genérico, de molde.
  2. El código de la consulta SQL; es aquí en donde tienes que indicar exactamente qué quieres, y dependerá de cómo tengas armadas las tablas.
Suponiendo que tengas una tabla para región, con un id_region; una para la empresa, con un id_empresa; una para la sucursal, con un id_sucursal; y una para los funcionarios, que tenga el nombre de los funcionarios, un id_funcionario y los ids de la región, la empresa y la sucursal, entonces en la consulta no tendrías que preocuparte más que por la última tabla, ya que podrías trabajar con los ids. Supongamos que el usuario quiere poder elegir si usar o no esos "filtros" (los selects de los que hablas), entonces sería muy práctico que los selects tengan todas las opciones con id y descripción, y una opción extra que sirva para no usar ese filtro en particular. Esta opción extra puede tener id=0 dado que si los ids de las tablas son autoincrementables (deberían serlo), empezarían a partir de 1. Bien, entonces para la página del formulario tendrías que leer las tablas de tu BD para poder armar los selects. En la página que procesa, la única parte "peliaguda" es armar la consulta SQL. Para eso puedes hacer lo siguiente:
Código PHP:
$sql="SELECT * FROM funcionarios WHERE nombre_funcionario LIKE '%".$_POST['funcionario']."%'";
if(
$_POST['region']!=0)
{
    
$sql.=" AND id_region=".$_POST['region'];
}
if(
$_POST['empresa']!=0)
{
    
$sql.=" AND id_empresa=".$_POST['empresa'];
}
if(
$_POST['sucursal']!=0)
{
    
$sql.=" AND id_sucursal=".$_POST['sucursal'];
}
$sql.=";"
Con eso estarás agregando las condiciones que seleccionan los usuarios, sólo si éstos las seleccionan. Como ya tienes una condición inicial, los AND pueden agregarse uno atrás del otro, sin miedo de que la consulta quede mal sintácticamente. En los casos en que no hay una condición que vaya siempre, yo suelo agregar como condición "1=1", que como es una tautología, valida siempre, lo cual es útil para concatenar ANDs. Se me hizo un poco larga la explicación, espero que haya quedado claro. ¡Suerte!

PD: ¡un poco más de autoestima amigo!, estoy seguro de que si eres capaz de hacer y entender el buscador, sólo debes tener un poco más de paciencia.
  #11 (permalink)  
Antiguo 25/01/2010, 02:44
 
Fecha de Ingreso: enero-2010
Mensajes: 6
Antigüedad: 14 años, 10 meses
Puntos: 0
Respuesta: Ayuda seria con buscadores

dggluz, agradezco de todo corazón tu explicación, que es mucho más clara de lo que he encontrado en libros y tutoriales.

Por supuesto seguiré intentando hasta hacer funcionar los buscadores de la manera en que los tengo en mi cabeza, todo gracias a ustedes, queridos amigos.


PD. "Sólo sé que no sé nada". Sócrates. Me sentí muy identificado.
  #12 (permalink)  
Antiguo 25/01/2010, 11:52
Avatar de bioxido  
Fecha de Ingreso: diciembre-2008
Ubicación: $_SERVER['PHP_SELF']
Mensajes: 601
Antigüedad: 16 años
Puntos: 21
Respuesta: Ayuda seria con buscadores

No lo eh probado pero deberia de funcionar...

buscar.php
Código PHP:
<?php

if(isset($_POST['buscar'])){ //Comprueba que se haya pulsado el boton "Buscar" en el formulario
    
//Conexion a la base de datos.


//Obtencion de datos por $_POST.    
$funcionario $_POST['funcionario'];
$sucursal $_POST['sucursal'];
$region $_POST['region'];
$empresa $_POST['empresa'];

//Consulta a la base de datos.
$query mysql_query("SELECT * FROM `tabla` WHERE funcionario LIKE '%$funcionario%' AND sucursal = '$sucursal' AND region = '$region' AND empresa = '$empresa' ");//Selecciona todos los campos de la tabla 'tabla' donde el campo funcionario contenga la frace ingresada por el formulario y la sucursal sea igual a la ingresada en el formulario, y la region también igual a la ingresada en el formulario. Case Insensitive (No reconoce entre mayusculas y minusculas)

//Bucle para imprimir los resultados de la consulta.
echo '<strong>Resultados de la b&uacute;squeda</strong>';
while(
$row mysql_fetch_assoc($query)){
    
echo 
$row['funcionario'];    
    
}

}else{

echo 
'<strong>No puede acceder directamente a esta pagina.</strong>';    //Si no se apreto el boton en el formulario aparece este mensaje.
    
}
?>
Y el formulario:

Código HTML:
Ver original
  1. <form action='buscar.php' method='post'>
  2.  
  3. <label for='funcionario'>Nombre del funcionario:</label> <br>
  4. <input id='funcionario' type='text' name='funcioario' value='' /><br><br>
  5.  
  6. <!-- Los value de los select DEBEN ser iguales a los de la tabla de la base de datos. -->
  7. <label for='region'>Regi&oacute;n:</label><br>
  8. <select name="region" id="region"  style="width: 150px;">
  9. <option value="region1"  selected="selected">Region1</option>
  10. <option value="region2" >Region2</option>
  11. <option value="region3" >Region3</option>
  12.  
  13. <label for='empresa'>Empresa:</label><br>
  14. <select name="empresa" id="empresa"  style="width: 150px;">
  15. <option value="empresa1"  selected="selected">empresa1</option>
  16. <option value="empresa2" >empresa2</option>
  17. <option value="empresa3" >empresa3</option>
  18.  
  19. <label for='sucursal'>Sucursal:</label><br>
  20. <select name="sucursal" id="empresa"  style="width: 150px;">
  21. <option value="sucursal1"  selected="selected">sucursal1</option>
  22. <option value="sucursal2" >sucursal2</option>
  23. <option value="sucursal3" >sucursal3</option>
  24.  
  25. <input type="submit" name="Buscar" value="Buscar" />
  26. </form>

Ya con esto no creo tengas problemas.

El formulario es muy estático, pero desconozco como esta formada tu DB, asique ya no puedo hacer mucho mas.

El código (ademas de para que funcione) lo hice para que aprendas, php es un lenguaje bastante extenso, pero no difícil. Si lo intentas lo vas a lograr, no se necesita mas que este foro y google para aprenderlo
  #13 (permalink)  
Antiguo 25/01/2010, 12:22
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 18 años, 6 meses
Puntos: 2135
Respuesta: Ayuda seria con buscadores

Aportes, Sistemas en PHP -> [Aporte] Como hacer un buscador sencillo usando PHP y MySQL

Etiquetas: buscadores, seria
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

SíEste tema le ha gustado a 1 personas




La zona horaria es GMT -6. Ahora son las 23:43.