/
Inicio :: Foros

 F.A.Q.F.A.Q.                  Conéctese para revisar sus mensajesConéctese para revisar sus mensajes   

LIKE con mysql (y php)

 
      Índice del Foro elrincondelc.com -> PHP
Ver tema anterior :: Ver siguiente tema  
AutorMensaje
david_celta



Registrado: 02 Jun 2005
Mensajes: 165

MensajePublicado: 12/11/2007 5:02 pm
Título: LIKE con mysql (y php)

¿Haber alguien de por aqui sabe php con mysql, mas mysql que php o SQL o bases de datos?

Cuando se usa LIKE (me he dado cuenta que tambien ocurre en SQL) la cantidad de filas devueltas no es la correcta, alguien sabe ¿por que?

Probe un codigo SQL parecido a este:

consulta="select * from tabla where like campo '%$buscar%'"

Le ingreso cualquier palabra (incluso letras y cadena vacia) y SIEMPRE me devuelve 0 registros encontrados

Suponiendo:

consulta=mysql_query(...)
fila=mysql_fetch_assoc(...)
total=mysql_num_rows(...)

if(total==0)....
else// mostrar los registros

El problema es que siempre entra al if(total==0), pero se me ocurrio imprimir la fila (echo fila['campo']Wink y me mostro un registro correcto

¿Alguna idea de porque sucede esto? (y como se solucionaría)

Es algo en la consulta supongo, porque cuando lo he probado en SQL server (la misma consulta) tampoco me devuelve el numero correcto de filas

Y si estoy equivocado, me dicen.
_________________
Falls of Rauros
Volver arriba
grandzam



Registrado: 10 Feb 2005
Mensajes: 184
Ubicación: Guadalupe, Zacatecas, México

MensajePublicado: 12/11/2007 9:56 pm
Título:

Ahora no recuerdo bien pero creo que like va despues de campo:

Código:
consulta="select * from tabla where campo like '%$buscar%'";



ademas, le falto el $... a la variable consulta, pero creo que eso fue error de dedo cuando escribiste este mensaje. Checa bien de todos modos.


despues de eso intenta hacer:

imprime la variable $buscar;

Código:
echo "Buscar: ".$buscar;


Si la variable buscar no se imprime u ocurre algo extraño es porque no estas recibiendo bien la variable desde el formulario. Si es eso, entonces intenta:

Código:
$buscar=$_POST['buscar'];


o utilizando el método get:

Código:
$buscar=$_GET['buscar'];


si no es eso, entonces:

Código:
$resultado=mysql_query($consulta, $link);


donde $link es el link a la bd, bueno ya sabes...

enseguida intenta hacer esto:

Código:
echo "Numero de renglones: ".@mysql_num_rows($resultado);


y a ver que te sale...

ah y cierra la conexion una vez terminado lo que tengas que hacer con ella.

No se bien cual sea bien tu problema porque tendria que ver tu formulario, tu codigo, y tu tabla de la bd... pero tal vez sea algo de eso, sino ps vuelve a postear con los datos que tengas y ya veremos, a ver si alguien mas o yo mismo te podemos ayudar...
Volver arriba
david_celta



Registrado: 02 Jun 2005
Mensajes: 165

MensajePublicado: 14/11/2007 5:32 pm
Título:

Buenosi, like va despues pero ese no era el problema, en si el problema no es que no funcione, si funciona, es decir, hago la consulta con like y todo biemn hechecito y obtengo los resultados que quiero, excepto UNO: el numero total de filas (no me devuelve el valor que deberia)

Por Ejemplo: Todos los nombres que lleven una J en cualquier parte:

select nombres like '%J%'
(obviamente la J esta en una variable $buscar que se ingresa mediante una caja de texto y todo eso)

Me devuelve supongamos:
Juan
Jose
Julio
aJuar
baJito

Hasta ahi bien, pero si miro el total de filas (mysql_num_rows($resultado)) que me devuelve, me da 0 (cero, nada)

Entonces mi pregunta va mas por ese lado, porque si hace la consulta correctamente y obtiene los datos correctos, devuelve un numero de filas equivocado (lo cual genera el problema adicional si quiero mostrar esos datos por partes, ya que no tengo la cantidad exacta de filas, a menos que las cuente una por una)

Mi duda es referente a mysql_num_row() cuando se usa un LIKE '%$var%'
_________________
Falls of Rauros
Volver arriba
grandzam



Registrado: 10 Feb 2005
Mensajes: 184
Ubicación: Guadalupe, Zacatecas, México

MensajePublicado: 17/11/2007 11:59 am
Título:

Hola, bueno tal vez sea algo de tu código, no se... Yo aca he hecho algo como lo que quieres y me funciona a la perfeccion.

Tengo una tabla que se llama attendee y dentro de ella tengo los siguientes datos en la columna FIRSTNAME:

Código:
Michael
Alan
Andy
Pete
Frank
Steve
Jeff
Michael
Michael


$buscar='t';
y si mi regla de busqueda es:

Código:
"Select * from attendee where FIRSTNAME like '%$buscar%'"


el numero de renglones debe ser igual a dos, estas de acuerdo? (Steve y Pete).

y si $bucar='n';

el numero de renglones debe ser igual a tres (Alan, Andy, Frank).

Y me da el resultado exsacto.

Aca te dejo la base de datos:

y también el código:

Código:
<?php
function Conectarse()
{
   if (!($link=mysql_connect("localhost","root","")))
   {
      echo "Error conectando a la base de datos.";
      exit();
   }
   if (!mysql_select_db("demo1",$link))
   {
      echo "Error seleccionando la base de datos.";
      exit();
   }
   return $link;
}

$link=Conectarse();
echo "Conexión con la base de datos conseguida.<br>";
$buscar='n';
$resultado=mysql_query("Select * from attendee where FIRSTNAME like '%$buscar%'",$link);

echo "<br>Registros: ".mysql_num_rows($resultado);

mysql_close($link); //cierra la conexion
?>
Volver arriba
david_celta



Registrado: 02 Jun 2005
Mensajes: 165

MensajePublicado: 17/11/2007 12:59 pm
Título:

Pues si, funciona y es casi lo mismo a lo que estaba probando, excepto porque yo tengo la consulta dentro de un sprintf() con %%$b%%, aunque si la saco del sprintf y dejo %$b% sigue igual, o a lo mejor como dices, debe ser que por algun lado del codigo he colocado algo que me esta generando ese error.

Gracias por el codigo.
_________________
Falls of Rauros
Volver arriba
      Índice del Foro elrincondelc.com -> PHP
Página 1 de 1Todas las horas están en GMT - 8 Horas

 
No puede crear mensajes
No puede responder temas
No puede editar sus mensajes
No puede borrar sus mensajes
No puede votar en encuestas

(c) ElRincondelC.com

Un proyecto de UrlanHeat.com