Foros del Web » Programando para Internet » PHP »

Problema Busqueda Mysql

Estas en el tema de Problema Busqueda Mysql en el foro de PHP en Foros del Web. Buenas, soy un poco novato en este tema, quisiera consultar una cosita. Estoy preparando una pequeña base de datos para ir probando y aprendiendo. Pero ...
  #1 (permalink)  
Antiguo 09/10/2013, 18:27
Avatar de warnoise  
Fecha de Ingreso: julio-2011
Ubicación: Sevilla
Mensajes: 12
Antigüedad: 12 años, 8 meses
Puntos: 0
Problema Busqueda Mysql

Buenas, soy un poco novato en este tema, quisiera consultar una cosita.

Estoy preparando una pequeña base de datos para ir probando y aprendiendo. Pero por más que lo intento no me busca, lo máximo que he conseguido es que me vuelque el primer valor de mi tabla.

El código que utilizo en el buscador es el siguiente:
Código HTML:
<form action="search.php" method="POST">
		
			<input type="text" name="nficha" id="nficha" size="30" />
			<input type="submit" name="buscar" id="buscar" value="" />
		
	<form> 
Y luego el código que utilizo en la consulta es este:

Código PHP:
include("log.php");
$enlace =  mysql_connect($host,$user,$pass);
if (!
$enlace) {
    die(
'No pudo conectarse: ' mysql_error());
}
mysql_select_db($db$enlace);
$result mysql_query("SELECT * FROM 1_contactos_individuales WHERE Email LIKE '%$buscar%'"$enlace);

$rowmysql_fetch_assoc($result);{
    echo 
$row['Nombre y apellidos'];
    echo 
$row['Email'];

1_contactos_individuales es el nombre de la tabla y Email es la fila donde quiero buscar, creo que hasta ese punto lo tengo bien.

Gracias de antemano.
  #2 (permalink)  
Antiguo 09/10/2013, 19:13
Avatar de Triby
Mod on free time
 
Fecha de Ingreso: agosto-2008
Ubicación: $MX->Gto['León'];
Mensajes: 10.106
Antigüedad: 15 años, 8 meses
Puntos: 2237
Respuesta: Problema Busqueda Mysql

Por lo general se usa el método GET para formularios de búsqueda, esto te permite compartir el enlace o agregarlo a favoritos, cosa que con POST es casi imposible.

Luego, lee esto: http://www.forosdelweb.com/f18/anunc...oleta-1008145/

Finalmente, ya con tu problema: lo que pasa es que estás leyendo solo una fila con mysql_fetch_assoc, por eso siempre te muestra solo un registro; necesitas usar un bucle, el más conveniente para este caso es while:

Código PHP:
Ver original
  1. while($row = mysql_fetch_assoc($result)) {
  2.       /* Aquí muestras cada registro */
  3. }
__________________
- León, Guanajuato
- GV-Foto
  #3 (permalink)  
Antiguo 10/10/2013, 01:07
Avatar de warnoise  
Fecha de Ingreso: julio-2011
Ubicación: Sevilla
Mensajes: 12
Antigüedad: 12 años, 8 meses
Puntos: 0
Respuesta: Problema Busqueda Mysql

Muchas Gracias Triby
  #4 (permalink)  
Antiguo 10/10/2013, 07:43
 
Fecha de Ingreso: noviembre-2008
Ubicación: Cochabamba Bolivia
Mensajes: 519
Antigüedad: 15 años, 5 meses
Puntos: 26
Respuesta: Problema Busqueda Mysql

Ademas, si buscas comparar un email, se supone que no tiene que haber diferencias, por lo cual lo mas adecuado yo diria que uses un comparador.

WHERE email = $email

o me diras que el email que esta en la base de datos tendra caracteres extras fuera del .com o antes ([email protected]).

Tambien si la tabla no tendra campos repetidos en el Email, no hace falta un bucle "while", pues la consulta solo te mandara un resultado por ser un valor no repetido, por lo cual basta con

Código PHP:
Ver original
  1. $row = mysql_fetch_assoc($result);
  2. echo $row[Nombre y apellido];
  3. Echo $row[Email];

Sin llaves.
  #5 (permalink)  
Antiguo 10/10/2013, 12:47
Avatar de warnoise  
Fecha de Ingreso: julio-2011
Ubicación: Sevilla
Mensajes: 12
Antigüedad: 12 años, 8 meses
Puntos: 0
Respuesta: Problema Busqueda Mysql

Pues aquí sigo a pesar de darle vueltas al tema, he estado consultando lo que me indico Triby pero no consigo sacarlo a delante.

He introducido un comprobador en el código:

Código HTML:
<form action="search.php" method="GET">
		
			<input type="text" name="datos" id="nficha" size="30" />
			<input type="submit" name="buscar" id="buscar" value="" />
		
	<form> 
Código PHP:
<?php
include("conexion.php");

if (empty(
$datos)); {
    echo 
"ZOQUETE";

        
$sql "SELECT * FROM 1_contactos_individuales WHERE Email LIKE '%$datos%'";
        
$result mysql_query($sql$enlace);
        
$total mysql_num_rows($result);
    
while(
$row mysql_fetch_assoc($result));{
    echo 
'<td>',$row['Nombre y apellidos'],'</td>';
    echo 
'<td>',$row['Email'],'</td>';
}

?>
Estoy venda a darle vueltas y siempre me sale lo mismo le realize la busqueda con contenido o sin el me devuelve el ZOQUETE.
  #6 (permalink)  
Antiguo 11/10/2013, 02:25
Avatar de Triby
Mod on free time
 
Fecha de Ingreso: agosto-2008
Ubicación: $MX->Gto['León'];
Mensajes: 10.106
Antigüedad: 15 años, 8 meses
Puntos: 2237
Respuesta: Problema Busqueda Mysql

1- La variable $datos no está definida. Hace ya algunos años que en PHP se dejó de usar register_globals, que eran las causantes de crear automáticamente variables provenientes de formularios, cookies o sesiones.

2- A ese if le falta un else que encierre todo el código que generará la consulta y mostrará los datos cuando sea apropiado.

Ejemplo:
Código PHP:
Ver original
  1. if(empty($_GET['datos'])) {
  2.      echo 'ZOQUETE';
  3. } else {
  4.      $datos = $_GET['datos'];
  5.      // Aquí mismo pones todo el código de la consulta
  6. }
__________________
- León, Guanajuato
- GV-Foto

Etiquetas: busqueda, mysql, select, tabla
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 10:09.