Foros del Web » Programando para Internet » PHP »

BUSCADOR PHP, funciona, pero falta un query

Estas en el tema de BUSCADOR PHP, funciona, pero falta un query en el foro de PHP en Foros del Web. Hola y gracias por la visita a este post!!... Tengo una pregunta para los MASTER o con CONOCIMIENTO +1, lo digo por que soy novato. ...
  #1 (permalink)  
Antiguo 17/01/2006, 05:09
Avatar de Snoopy2  
Fecha de Ingreso: diciembre-2002
Ubicación: Lima
Mensajes: 332
Antigüedad: 15 años
Puntos: 1
Sonrisa BUSCADOR PHP, funciona, pero falta un query

Hola y gracias por la visita a este post!!...

Tengo una pregunta para los MASTER o con CONOCIMIENTO +1, lo digo por que soy novato.

Busque como hacer un buscador para mi web, un codigo en PHP para mYSQL, lo encontre, y despues de hacerle ciertos ajustes para que funcione en mi pagina, funciono, pero.....(siempre los peros), resulta que cuando no le coloco ninguna palabra a buscar, y preciono el boton de busqueda, me da todos los datos de la tabla!..

entonces, imagino que le falta un query donde diga que si no hay datos a buscar, no de ningun dato.

alguien me ayuda ?

aqui va:

Código PHP:
<?

////////////////////////////
// Configuración
///////////////////////////

//modifica estas variables según tu servidor de MySQL

$bd_servidor "localhost";

$bd_usuario "root";

$bd_contrasenya "";

$bd_bdname "convenio";

$bd_tabla "abarroterias"// Tabla donde se harán las búsquedas

// Conexión y selección de la base de datos

$link mysql_connect($bd_servidor,$bd_usuario,$bd_contrasenya);

mysql_select_db($bd_bdname,$link);

////////////////////////////
// Formulario
///////////////////////////

?>

<center>
<p><h2>Introduce las palabras para la búsqueda</h2></p>
<p><form name="buscador" method="post" action="buscador.php"><br>
Buscar en:
<select name="campo">
<?php

//Con este query obtendremos los campos por los cuales el usuario puede buscar

$result mysql_query("SHOW FIELDS FROM `$bd_tabla`",$link);

while(
$row mysql_fetch_row($result)) {

// en $row[0] tenemos el nombre del campo
// de esta manera no necesitamos conocer el nombre de los campos
// por lo que cualquier tabla nos valdrá

?>
<option value="<?php echo $row[0]; ?>"><?php echo $row[0]; ?></option>
<?php

}

?>
</select>
Palabra(s): <input type="text" name="palabra"><br>
<input type="submit" value="Enviar" name="enviar">
</form></p>
</center>

<?

////////////////////////////
// Proceso del Formulario
///////////////////////////

if(isset($_POST['enviar'])) {

// Solo se ejecuta si se ha enviado el formulario

$query "SELECT * from $bd_tabla WHERE `{$_POST['campo']}` LIKE '%{$_POST['palabra']}%'";

$result mysql_query($query,$link);



$found false// Si el query ha devuelto algo pondrá a true esta variable

while ($row mysql_fetch_array($result)) {

$found true;

echo 
"<p>";

foreach(
$row as $nombre_campo => $valor_campo) {

// Tenemos que mostrar todos los campos de las filas donde se haya
// encontrado la búsqueda.


if(is_int($nombre_campo)) {

continue; 
//Cuando hacemos mysql_fetch_array, php genera un array
// con todos los valores guardados dos veces, uno con
// índice numérico y otro con índice el nombre del campo.
// Solo nos interesa el del nombre del campo.

}

echo 
"<b>".$nombre_campo."</b> : ".$valor_campo."<br>";
}

echo 
"</p>";

}

if(!
$found) {

echo 
"No se encontró la palabra introducida";

}

}
?>



GRACIAS!!!
__________________
________________
"El que la sigue la consigue"....con mucho esfuerzo...
  #2 (permalink)  
Antiguo 17/01/2006, 05:19
Avatar de uamistad  
Fecha de Ingreso: diciembre-2004
Ubicación: Cd. de México
Mensajes: 1.395
Antigüedad: 13 años
Puntos: 1
podrían ser varias

Podría haber varias soluciones, se me ocurre esto, hay una parte en ese Script en donde se ve lo siguiente:

Código PHP:
////////////////////////////
// Proceso del Formulario
///////////////////////////

if(isset($_POST['enviar'])) { ... 
Podrías aumentarle las condiciones, es decir,

Código:
Si(isset($_POST['enviar'] AND $otra_condicion)
Otra_condición podría ser el usar la función strlen para contar las letras de la palabra que se insertó. Si ese número de letras es menor a 3 o 4 (por decir algo), entonces la condición no se cumplirá.
  #3 (permalink)  
Antiguo 17/01/2006, 05:25
Avatar de Snoopy2  
Fecha de Ingreso: diciembre-2002
Ubicación: Lima
Mensajes: 332
Antigüedad: 15 años
Puntos: 1
GRACIAS!!...pero no quiero pecar de ignorante,...pero como seria esa linea del codigo con strlen completa¡??....

de todas maneras buscare en google,

gracias nuevamente.

pero dices que es una posiblidad eso quiere decir que hay otras?....otras formas de plasmarlo o otros planteamientos?.
__________________
________________
"El que la sigue la consigue"....con mucho esfuerzo...
  #4 (permalink)  
Antiguo 17/01/2006, 05:36
Avatar de uamistad  
Fecha de Ingreso: diciembre-2004
Ubicación: Cd. de México
Mensajes: 1.395
Antigüedad: 13 años
Puntos: 1
ahh, pues si tú permites que alguien pueda buscar una sola letra, saldrán muchos resultados, si busca 2 letras, también.

Así que digamos que quieres que tu palabra mínima a buscar tenga 3 letras o más, entonces comparas la palabra que se capturó en el formulario (que me parece que está en tu variable $_POST["palabra"] y checas si tiene esa longitud mínima que tú deseas:
Código PHP:
////////////////////////////
// Proceso del Formulario
///////////////////////////

if(isset($_POST['enviar']) AND strlen($_POST["palabra"])>=3) { ... [ 

Claro que hay otras soluciones, cuando buscas en Google "Cristina Aguilera" aparecen más de seis millones de resultados, pero no se llena tu navegador porque te muestra los resultados sólo de 50 en 50 o como tú le digas.

Así tú también podrías decirle que sólo mostrara cuando mucho 10 resultados y ya no tendrías que hacer lo de la palabra mínima que te comenté.

Claro que esto, que por aquí le llaman 'paginación', es un poquito más complicado y hay que meterle más programación. En este foro se ha hablado mucho de eso, si buscas seguro que encuentras.
  #5 (permalink)  
Antiguo 17/01/2006, 06:00
Avatar de Snoopy2  
Fecha de Ingreso: diciembre-2002
Ubicación: Lima
Mensajes: 332
Antigüedad: 15 años
Puntos: 1
GRACIAS!!!....

voy a probarlo, ....
se aprende mucho aqui, ya que le habia colocado, esto:

if(isset($_POST['enviar']) AND strlen(>3) y no me salio nada....jajajaja....

poco a poco, voy entendiendo la sintaxis de esto.

sabes donde puedo encontrar alguna pagina donde enseñen las sintaxis de los codigos?
__________________
________________
"El que la sigue la consigue"....con mucho esfuerzo...
  #6 (permalink)  
Antiguo 17/01/2006, 06:03
Avatar de Snoopy2  
Fecha de Ingreso: diciembre-2002
Ubicación: Lima
Mensajes: 332
Antigüedad: 15 años
Puntos: 1
pues te cuento que no sale....
pense que eran por que le habias colocado doble comilla y se los cambie por una comilla, pero igual....
__________________
________________
"El que la sigue la consigue"....con mucho esfuerzo...
  #7 (permalink)  
Antiguo 17/01/2006, 06:04
Avatar de Snoopy2  
Fecha de Ingreso: diciembre-2002
Ubicación: Lima
Mensajes: 332
Antigüedad: 15 años
Puntos: 1
UPSS!!..sorry, error de tipeo, TODO OK!!...

GRACIAS UAMISTAD!!....
__________________
________________
"El que la sigue la consigue"....con mucho esfuerzo...
  #8 (permalink)  
Antiguo 17/01/2006, 06:08
Avatar de Snoopy2  
Fecha de Ingreso: diciembre-2002
Ubicación: Lima
Mensajes: 332
Antigüedad: 15 años
Puntos: 1
una pregunta mas......
este codigo esta creado para que sea colocado una pagina con extension PHP, y con un nombre especifico, ya que el nombre de la pagina esta dentro del codigo, pero que pasa si quiero colocarla:

OPCION 1, dentro de una pagina html (es posible?)
OPCION 2 , dentro de una pagina php, pero dentro de una celda, (es posible?)
__________________
________________
"El que la sigue la consigue"....con mucho esfuerzo...
  #9 (permalink)  
Antiguo 17/01/2006, 06:24
Avatar de uamistad  
Fecha de Ingreso: diciembre-2004
Ubicación: Cd. de México
Mensajes: 1.395
Antigüedad: 13 años
Puntos: 1
la página oficial

Visita la pag. oficial en:
http://www.php.net/manual/es/

Ahí aprendes mucho sobre la sintaxis y hasta vienen ejemplos.

Cita:
una pregunta mas......
este codigo esta creado para que sea colocado una pagina con extension PHP, y con un nombre especifico, ya que el nombre de la pagina esta dentro del codigo, pero que pasa si quiero colocarla:

OPCION 1, dentro de una pagina html (es posible?)
OPCION 2 , dentro de una pagina php, pero dentro de una celda, (es posible?)
Si te refieres a una página con extensión html, por ejemplo pagina.html, no se puede porque una página .html es estática y no puede ejecutar código PHP (a menos que uses el mod_rewrite para cambiar las extensiones, pero no es nada sencillo que te metas con eso ahora que vas empezando).

Dentro de una página PHP pero dentro de una celda, no entiendo bien. A la mejor te refieres a hacer una tabla y mostrar los resultados dentro de esa tabla para que no ocupen toda la página sino sólo un espacio asignado. Sí, de esa manera sí.

Un saludo, dices que en esta página se aprende mucho, yo diría que un montón, me gusta pasar por aquí seguido para ver qué cosa aprendo. Es adictivo, jeje.
  #10 (permalink)  
Antiguo 17/01/2006, 06:41
Avatar de Snoopy2  
Fecha de Ingreso: diciembre-2002
Ubicación: Lima
Mensajes: 332
Antigüedad: 15 años
Puntos: 1
GRACIAS!!..nuevamente...

si sigues por aqui, atrevidamente te pregunto:
SI TIENES TIEMPO....

que significa esta linea:

<form name="buscador" method="post" action="buscador.php">

ya que es una linea que esta en todas las paginas php, ....que estoy viendo.
__________________
________________
"El que la sigue la consigue"....con mucho esfuerzo...
  #11 (permalink)  
Antiguo 17/01/2006, 06:50
MindPaniC
Invitado
 
Mensajes: n/a
Puntos:
Cita:
Iniciado por Snoopy2
GRACIAS!!..nuevamente...

si sigues por aqui, atrevidamente te pregunto:
SI TIENES TIEMPO....

que significa esta linea:

<form name="buscador" method="post" action="buscador.php">

ya que es una linea que esta en todas las paginas php, ....que estoy viendo.
pues es una linea html que inicia un formulario... es decir lo que esta contendido dentro de las etiquetas <form> y </form> es un formulario que al parecer pasa las variables a un scrip que es "buscador.php"

saludos
  #12 (permalink)  
Antiguo 17/01/2006, 06:55
Avatar de Snoopy2  
Fecha de Ingreso: diciembre-2002
Ubicación: Lima
Mensajes: 332
Antigüedad: 15 años
Puntos: 1
Gracias!.....
__________________
________________
"El que la sigue la consigue"....con mucho esfuerzo...
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 19:49.