Foros del Web » Programando para Internet » PHP »

Sera Posible

Estas en el tema de Sera Posible en el foro de PHP en Foros del Web. Supongamos que tengo una variable definida de la siguiente manera : Cita: $considencias="TQL005,TQL053"; $sql = "SELECT * FROM tabla WHERE campo LIKE ($...???) "; ($...???) ...
  #1 (permalink)  
Antiguo 11/11/2005, 13:08
Avatar de xyyy7  
Fecha de Ingreso: enero-2004
Ubicación: Maracay.-
Mensajes: 637
Antigüedad: 20 años, 2 meses
Puntos: 5
Sera Posible

Supongamos que tengo una variable definida de la siguiente manera :
Cita:
$considencias="TQL005,TQL053";
$sql = "SELECT * FROM tabla WHERE campo LIKE ($...???)";

($...???) Amigos que deberia de usar para que en los resultados de la busqueda aparescan los dos registros pertenecientes al desglose de la variable $considencia, osea TQL005 y TQL053

$sql = "SELECT * FROM tabla WHERE campo LIKE ....?
__________________
Maracay Edo Aragua - Venezuela :
Mi Favorita :
http://www.MySQL.Com
  #2 (permalink)  
Antiguo 11/11/2005, 13:24
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 22 años, 3 meses
Puntos: 129
Si tienes:

Código PHP:
$coincidencias="'TQL005','TQL053'" 
(ojo a las comillas en los datos .. deben estar si usas campos de texto)

Lo que necesitas de SQL no es un "LIKE" .. sino un "IN"

Código PHP:
$sql="SELECT * FROM tabla WHERE campo IN (".$coincidencias.")"
Un saludo,
  #3 (permalink)  
Antiguo 11/11/2005, 13:24
Avatar de flaconovato  
Fecha de Ingreso: noviembre-2005
Ubicación: Bogota, Colombia
Mensajes: 137
Antigüedad: 18 años, 5 meses
Puntos: 1
De acuerdo Ummmmm

Una pregunta cada separacion la tienes por "," y todas empiezan por "TQL"
__________________
El pueblo que se resigna a tecnologías pasadas, sucumbe en el campo de la ignorancia y se entierra en sus ideales.:arriba: :arriba:
  #4 (permalink)  
Antiguo 11/11/2005, 15:41
Avatar de xyyy7  
Fecha de Ingreso: enero-2004
Ubicación: Maracay.-
Mensajes: 637
Antigüedad: 20 años, 2 meses
Puntos: 5
Cita:
$sql="SELECT * FROM tabla WHERE campo IN (".$coincidencias.")";
Cluster pana, muchas Gracias... funciono muy bien
solo me quedo un problemita, no acepta letras, sino numeros... dentro de la variable $coincidencias cuando hago la consulta,., osea si $coincidencias="1,2,3,4,5"; Todo bien , pero si $coincidencias="T1,2,T3,4,L5";arroja un error el scritp...

Warning: mysql_fetch_array():
Warning: mysql_free_result():
__________________
Maracay Edo Aragua - Venezuela :
Mi Favorita :
http://www.MySQL.Com
  #5 (permalink)  
Antiguo 11/11/2005, 19:10
Avatar de jc_moty  
Fecha de Ingreso: septiembre-2005
Ubicación: Usulután, El Salvador
Mensajes: 477
Antigüedad: 18 años, 6 meses
Puntos: 1
Fijate bien en el contenido de $coincidencias:
Código PHP:
$coincidencias "T1, 2, T3, 4, L5";
$sql "SELECT * FROM tabla WHERE campo IN (" $coincidencias ")"
El campo con el que comparas la variable es de tipo numerico o caracter?, porque en la variable estas combinando numeros con caracteres.
Ten en cuenta que los valores alfanumericos van entre comillas simples(' '), y los numeros van asi nomas, sin la comilla simple.
Por ejemplo:
Código PHP:
// En el caso de que sean caracteres
$coincidencias "'T1', '2', 'T3', '4', 'L5'";
$sql "SELECT * FROM tabla WHERE campo IN (" $coincidencias ")";

// En el caso de que sean numeros
$coincidencias "1, 2, 3, 4, 5";
$sql "SELECT * FROM tabla WHERE campo IN (" $coincidencias ")"
Saludos
  #6 (permalink)  
Antiguo 12/11/2005, 01:09
Avatar de Quest  
Fecha de Ingreso: diciembre-2002
Ubicación: Santiago
Mensajes: 129
Antigüedad: 21 años, 4 meses
Puntos: 2
bueno bueno ...
__________________
http://victorsanmartin.com
Web Developer
http://www.guiasitios.cl
  #7 (permalink)  
Antiguo 12/11/2005, 06:33
Avatar de xyyy7  
Fecha de Ingreso: enero-2004
Ubicación: Maracay.-
Mensajes: 637
Antigüedad: 20 años, 2 meses
Puntos: 5
Cita:
Iniciado por jc_moty
// En el caso de que sean caracteres
$coincidencias = "'T1', '2', 'T3', '4', 'L5'";
$sql = "SELECT * FROM tabla WHERE campo IN (" . $coincidencias . ")";
Gracias pana... es como me habia dicho Cluster, pero mi problema radica que tengo un formulario web en donde el usuario introduce los datos para la busqueda de busquedas separadas por comas,

Cita:
<input type="text" name="coincidencias " size="20">
si el usuario coloca valores numericos : 1,256,88 //por dar un ejemplo
todo sale bien

pero si escriben asi: '1','225','88','T65' //por dar un ejemplo
da errores al efectuar la busqueda

Como podria solucionar ese detalle o que funcion le tendira yo que aplicar a $coincidencias para que cuando haga la consulta MySQL no me arroje errores?

Gracias
__________________
Maracay Edo Aragua - Venezuela :
Mi Favorita :
http://www.MySQL.Com
  #8 (permalink)  
Antiguo 12/11/2005, 06:44
Avatar de JavierB
Colaborador
 
Fecha de Ingreso: febrero-2002
Ubicación: Madrid
Mensajes: 25.052
Antigüedad: 22 años, 2 meses
Puntos: 772
Hola xyyy7

Puedes "eliminar" las comillas simples con str_replace()
Código PHP:
$cad="'1','225','88','T65'";
$cad=str_replace("'","",$cad); 
Espero que te sirva. Saludos,
  #9 (permalink)  
Antiguo 12/11/2005, 07:01
Avatar de xyyy7  
Fecha de Ingreso: enero-2004
Ubicación: Maracay.-
Mensajes: 637
Antigüedad: 20 años, 2 meses
Puntos: 5
Cita:
Iniciado por JavierB
Hola xyyy7

Puedes "eliminar" las comillas simples con str_replace()
Código PHP:
$cad="'1','225','88','T65'";
$cad=str_replace("'","",$cad); 
Espero que te sirva. Saludos,
Gracias Javier, ya lo intente pero el problema permite por lo siguiente, al eliminar las comillas simples con el str_replace()
no quedaria que :
Código PHP:
//una variable con valores no numéricos, sino, de caracteres
//por la presencia de T65
$cad="1,225,88,T65"
y en este caso entonces arrojaria error en la consulta
Código PHP:
$sql "SELECT * FROM tabla WHERE campo IN (" $coincidencias ")"
la cosa es que usuario coloque solo valores ya sean numericos, de caracteres o combinados, separados por comas en el campo [coincidencias] del formalario web... y al ejecutar
$sql = "SELECT * FROM tabla WHERE campo IN (" . $coincidencias . ")"; no produzca errores y muestre los resultados
__________________
Maracay Edo Aragua - Venezuela :
Mi Favorita :
http://www.MySQL.Com

Última edición por xyyy7; 12/11/2005 a las 07:58
  #10 (permalink)  
Antiguo 12/11/2005, 09:01
Avatar de Vaalegk  
Fecha de Ingreso: abril-2005
Mensajes: 154
Antigüedad: 19 años
Puntos: 2
bueno la cuestion esta en saber el tipo del campo como dijo js_moty si "campo" es numerico olvidate de las comillas y elimina de tu $coincidencias todo lo que no es numerico. si "campo" es alfanumerico agregale comillas a los campos y azle un adslashes.

bueno esa es mi opinion, espero te ayude.
  #11 (permalink)  
Antiguo 12/11/2005, 12:22
Avatar de jc_moty  
Fecha de Ingreso: septiembre-2005
Ubicación: Usulután, El Salvador
Mensajes: 477
Antigüedad: 18 años, 6 meses
Puntos: 1
Bien, para solucionar este problema se me ocurrieron 2 ideas
La primera es con un LIKE por cada valor que se encuentre despues de una coma:
Código PHP:
$cadBusq "T1,2,T3,4,L5";
$valores explode(","$cadBusq);
$n_elementos count($valores);
for(
$i=0$i<$n_elementos$i++)
{
    
$rsTabla=mysql_query("SELECT * FROM tabla WHERE campo LIKE '%" $valores[$i] . "%'");
    for(
$k=0$k<mysql_num_rows($rsTabla); $k++)
        echo 
mysql_result($rsTabla$k"campo") . "<br>";

... Y la segunda, es poniendo el valor despues de cada coma entre comillas y al final haciendo la comparacion con IN:
Código PHP:
$cadBusq "T1,2,T3,4,L5";
$valores explode(","$cadBusq);
$n_elementos count($valores);
for(
$i=0$i<$n_elementos$i++)
{
    if(
$i $n_elementos-1)
        
$valores[$i] = "'" $valores[$i] . "',";
    else
        
$valores[$i] = "'" $valores[$i] . "'";
    
$var_in $var_in $valores[$i];
}
$rsTabla=mysql_query("SELECT * FROM tabla WHERE campo IN (" $var_in ")");
for(
$k=0$k<mysql_num_rows($rsTabla); $k++)
    echo 
mysql_result($rsTabla$k"campo") . "<br>"
Espero te sirva
Saludos

Última edición por jc_moty; 12/11/2005 a las 12:32
  #12 (permalink)  
Antiguo 12/11/2005, 13:35
Avatar de xyyy7  
Fecha de Ingreso: enero-2004
Ubicación: Maracay.-
Mensajes: 637
Antigüedad: 20 años, 2 meses
Puntos: 5
Cita:
Iniciado por jc_moty
Espero te sirva
Saludos
Mejor imposible pana!
Con la ayuda de todos se a logrado un buen Trabajo...
Gracias de nuevo amigo.-

Problema Resuerto
__________________
Maracay Edo Aragua - Venezuela :
Mi Favorita :
http://www.MySQL.Com
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 00:10.