
04/02/2004, 00:12
|
| | Fecha de Ingreso: enero-2003
Mensajes: 25
Antigüedad: 22 años, 1 mes Puntos: 0 | |
Una vez vi un buscador bien basico que enseñaban a ser en una animacion de ejemplo de dreamweaver y por lo que pude enterder es bastante semejante.
Este buscador contenia principalmente 2 páginas:
la primera solo contenia un formulario con los campos de busqueda, podian ser texfield, select, etc, poniendonos en tu caso, tres campos para ingesar un texto. el formulario debemos enviarlo a la otra pagina, tu la quieres en PHP (tambien se puede en ASP u otro), debemos saber si el formulario lo mandamos como POST o como GET, la diferencia (basicamente) es que al mandar el formulario como GET las variables de la busqueda (los campos del formulario, debes saber como se llaman) apareceran en la URL y con POST no => si utilizamos GET el usuario podra guardar los resultados de una busqueda y consultarla nuevamente (copiando la direccion que aparece en el browser, me entiendes??). Para el caso de un buscador yo mandaria los datos como GET, si por ejemplo estamos haciendo una pagina de identificacion de usuarios nos combiene POST pues no queremos que el nombre de usuario y su contraseña queden en la URL y el historial.
(ahora supongo ya se han conectado a alguna base de datos y han hecho paginas que consulten a ella)
la otra pagina es la de respuesta, se supone que tenemos muchos registros y queremos seleccionar solo los que se parecen a los parametros de busqueda, si se fijan lo que hace dreamweaver cuando hacer el 'Recordset' mas simple es 'seleccionar todos los registro de cierta tabala de una base de datos' para ello utiliza la sentencia SQL : "SELECT * FROM nombre_tabla"
una forma de restringir los resultados es: "SELECT * FROM nombre_tabla WHERE campo1='hola'"
esto dice 'seleccionar todos los registro de cierta tabala de una base de datos DONDE el campo 'campo1' de la base de datos sea IGUAL a la palabra 'hola'.
ahora si cambiamos el '=' por 'like' en vez de seleccionar cuando sea igual va a seleccionar cuando dentro del campo1 exista la palabra 'hola'
ej:
usando " SELECT * FROM nombre_tabla WHERE campo1 like 'hola' "
si campo1="y dijo hola que tal" => se selecciona ese registro
si campo1="y dijo holas que tal" => NO se selecciona ese registro
podemos jugar con el caracter '%'
usando " SELECT * FROM nombre_tabla WHERE campo1 like 'hola%' "
se seleccionaran todos los registros donde campo1 contega palabras que empiecen con hola por ejemplo 'holas'
usando " SELECT * FROM nombre_tabla WHERE campo1 like '%hola' "
se seleccionaran todos los registros donde campo1 contega palabras que terminen con hola por ejemplo 'ssshola'
usando " SELECT * FROM nombre_tabla WHERE campo1 like '%hola%' "
se seleccionaran todos los registros donde campo1 contega palabras que contengan el caracter 'hola', por ejemplo 'sssholasss'
ahora solo hay q cambiar la palabra hola por una variable... cual?? la o las de los formularios
=> con el boton + de las variables agregamos todos los campos del formulario
(usando PHP)
*--------------*------------------*-------------------------------*
* nombre * valore prede * valor en tiempo de ejecucion *
*--------------*------------------*-------------------------------*
* nomb1 * % * $HTTP_GET_VARS['campo_form1'] *
*--------------*------------------*-------------------------------*
* nomb2 * % * $HTTP_GET_VARS['campo_form2'] *
*--------------*------------------*-------------------------------*
* nomb3 * % * $HTTP_GET_VARS['campo_form3'] *
*--------------*------------------*-------------------------------*
donde los nombi son nombres que yo invente que ahora las remplazaremos por el 'hola' y 'campo_formi' es el nombre de cada campo del formulario que hicimos y enviamos con GET, si lo envian con POST colocas $HTTP_POST_VARS['campo_form3'] y listo
ahora hay que definir la sentencia SQL, esta va a depender de sus necesidades, por ejemplo
si tienen una tabla dos campos: nombre y direccion de una persona y hacen un formulario con dos campos uno para el nombre y otro para la direccion ocuparemos
" SELECT * FROM nombre_tabla WHERE campo_nombre like '%nombre%' AND campo_direc like '%direc%' "
aqui se seleccionaran los usuarios en los que coincida el nombre Y la direccion, pueden cambiar el AND por OR y se seleccionar los usuarios en que coincida el nombre O la direccion
tambien pueden buscar los registros donde la variable nombre aparesca en varios campos:
" SELECT * FROM nombre_tabla WHERE campo1 like '%nombre%' OR campo2 like '%nombre%' "
etc, tu tienes que definir la que mas te acomode, para el ejemplo usare:
***
"SELECT * FROM nombre_tabla
WHERE campo1 like '%nomb1%' AND campo2 like '%nomb2%' AND campo3 like '%nomb3%'
ORDER BY campo1 "
***
esta sentencia se parece ejemplo de los usuarios
esos es todo lo que necesitas para tener listo el 'recordset', luego aceptas y deberia aparecer el nuevo set de registros en pantalla... si haces click en + te aparecen todos los campos de la tabla y ahora hay que hacer la pagina de respuesta agregando los campos y luego que tengas listo eso te vas a los comportamientos de servidor y haces un 'repetir region' del set de registros que generamos, eso es todo...!!!
lo siguiente seria mejorar la pagina de respuesta paginando los resultados!
espero que te sirva trate de ser lo mas didactico posible
nos vemos!
Última edición por llh; 04/02/2004 a las 12:01 |