Comunidad de diseño web y desarrollo en internet online

Ayuda con consulta

Citar            
MensajeEscrito el 12 Feb 2007 09:42 am
Hola amigos! Les cuento mi caso: Tengo que hacer una consulta en MySQL, se trata de lo siguiente: Seleccionar un campo de una tabla cuyo contenido sea "parecido" a un valor. Concreto más: Quiero seleccionar los datos de la tabla clientes cuoy id esté en una cadena. Por ejemplo, si la cadena es "46 654 7" Seleccionar los clientes cuyo id sea 46 ó 654 ó 7. Este es el código que uso:

Código :

SELECT * FROM clientes WHERE id LIKE '$id_cliente' ORDER BY fecha_alta desc


Donde el string '$id_cliente' contiene la cadena de id a buscar. El caso es que si la cadena tiene un solo dígito, funciona bien, pero con más ya deja de funcionar, pues no encuentra nungun cliente. Alguna idea?

Saludos y gracias por anticipado.

Por Prometeo2006

122 de clabLevel



 

firefox
Citar            
MensajeEscrito el 12 Feb 2007 10:01 am
No lo entendí todo pero puedes probar esto

Código :

SELECT * FROM clientes WHERE id LIKE '%$id_cliente%' ORDER BY fecha_alta desc
A ver si es lo que buscas...

Por Yranac

421 de clabLevel



Genero:Masculino  

Lugo, Galicia

firefox
Citar            
MensajeEscrito el 12 Feb 2007 10:51 am
Hola Yranac! Antes de nada gracias por tu respuesta. La verdad es que he escrito el código mal, es como tú lo has puesto, pero no me funciona. El código:

Código :

SELECT * FROM clientes WHERE id LIKE '%$id_cliente%' ORDER BY fecha_alta desc


Se trat de seleccionar los id de los clientes que estén en la cande $id_cliente. Por ejemplo, si la cadena es 3 56 243 1 seleccionar los clientes cuyo id sea 3 ó 56 ó 243 ó 1. El caso es que si la cadena $id_cliente vale 4, selecciona al cliente con id=4, pero si la cadena tiene más números no funciona. He prbado quitando los espacios en blanco, pero tampoco vale. Alguna otra idea?

Saludos y gracias de nuevo por tu ayuda.

Por Prometeo2006

122 de clabLevel



 

firefox
Citar            
MensajeEscrito el 12 Feb 2007 11:06 am
Creo que utilizaria explode para separar los id y hacer algo asi (código sin probar :wink:)

Código :

   $id=explode(" ",$id_cliente);
   $cons="SELECT * FROM clientes WHERE id in(";
   for($i=0;$i<count($id);$i++){
      if($i>0){
         $cons.=", ";
      }
      $cons.=$id[$i];
   }
   $cons.=") ORDER BY fecha_alta desc";
Espero te sirva, un saludo ^^

Por Yranac

421 de clabLevel



Genero:Masculino  

Lugo, Galicia

firefox
Citar            
MensajeEscrito el 12 Feb 2007 04:43 pm
Hola de nuevo! He probado poniendo la cadena $idcleentes con los valores separados por "," por ejemplo "3,2,56" pero sigue sin fucnionar, pues solo muestra un id de cliente, aunque hay más coincidencias.

Muchas gracias de nuevo por tu ayuda.
Saludos!

Por Prometeo2006

122 de clabLevel



 

firefox
Citar            
MensajeEscrito el 12 Feb 2007 04:54 pm
Has hecho esto??

Código :

SELECT * FROM clientes WHERE id in($id_cliente) ORDER BY fecha_alta desc
Teneindo los id separados por comas??

Por Yranac

421 de clabLevel



Genero:Masculino  

Lugo, Galicia

firefox
Citar            
MensajeEscrito el 12 Feb 2007 06:17 pm
Exacto. Si el "id_cliente="5,67,23,1098" sólo me muestra el cliente con id=5, los demás no. Tengo un bucle para mostrar todos los datos seleccionados, además he verificado que funciona.

Mil gracias de nuevo por tu paciencia, amigo Yranac.

Por Prometeo2006

122 de clabLevel



 

firefox
Citar            
MensajeEscrito el 12 Feb 2007 06:27 pm
esto

Código :

$cons="SELECT * FROM clientes WHERE id in($id_cliente) ORDER BY fecha_alta desc"
no te funciona?? pues deberia... pon el código que tienes a ver cual puede ser el problema....

Por Yranac

421 de clabLevel



Genero:Masculino  

Lugo, Galicia

firefox
Citar            
MensajeEscrito el 13 Feb 2007 11:14 am
Ahora sí!!!!!!!!!!!!!!!! el error estaba en que ponía

Código :

id in('$id_cliente')


En lugar de in($id_cliente)

Mil gracias por tu valiosísima ayuda, Yranac, eres muy considerado.
Saludos.

Por Prometeo2006

122 de clabLevel



 

firefox
Citar            
MensajeEscrito el 13 Feb 2007 11:46 am

Prometeo2006 escribió:

Mil gracias por tu valiosísima ayuda, Yranac, eres muy considerado.
Saludos.
Para eso estamos, un saludo :wink:

Por Yranac

421 de clabLevel



Genero:Masculino  

Lugo, Galicia

firefox

 

Cristalab BabyBlue v4 + V4 © 2011 Cristalab
Powered by ClabEngines v4, HTML5, love and ponies.