Foros del Web » Programación para mayores de 30 ;) » Bases de Datos General » Mysql »

Problemas con select Like en php y mysql

Estas en el tema de Problemas con select Like en php y mysql en el foro de Mysql en Foros del Web. La cuestion es la sigueinte, tengo una base de datos con información de usuarios de un sistema que desarrolle, pero no puedo realizar una busqueda ...
  #1 (permalink)  
Antiguo 16/06/2010, 14:56
 
Fecha de Ingreso: junio-2010
Mensajes: 4
Antigüedad: 13 años, 10 meses
Puntos: 0
Problemas con select Like en php y mysql

La cuestion es la sigueinte, tengo una base de datos con información de usuarios de un sistema que desarrolle, pero no puedo realizar una busqueda con la opcion select y like, por ejemplo:

Estructura de la tabla y contenido.

--
-- Estructura de tabla para la tabla `usuarios`
--

CREATE TABLE IF NOT EXISTS `usuarios` (
`id` int(3) unsigned NOT NULL AUTO_INCREMENT,
`user` varchar(10) COLLATE utf8_unicode_ci DEFAULT NULL,
`password` varchar(50) COLLATE utf8_unicode_ci DEFAULT NULL,
`cargo` int(2) DEFAULT NULL,
`proyecto` int(3) DEFAULT NULL,
`Nombre` varchar(50) COLLATE utf8_unicode_ci DEFAULT NULL,
PRIMARY KEY (`id`),
KEY `Nombre` (`Nombre`),
FULLTEXT KEY `Nombre_2` (`Nombre`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci AUTO_INCREMENT=12 ;

--
-- Volcar la base de datos para la tabla `usuarios`
--

INSERT INTO `usuarios` (`id`, `user`, `password`, `cargo`, `proyecto`, `Nombre`) VALUES
(1, 'admin', '21232f297a57a5a743894a0e4a801fc3', 5, 1, 'Administrador General'),
(10, '12', 'e10adc3949ba59abbe56e057f20f883e', 1, 1, 'Carlos PErez'),
(5, 'Peres', '827ccb0eea8a706c4c34a16891f84e7b', 1, 1, 'Jose'),
(7, 'jp', '827ccb0eea8a706c4c34a16891f84e7b', 1, 1, 'Jose Perez'),
(8, 'PIb', 'e10adc3949ba59abbe56e057f20f883e', 1, 1, 'Oscar cv'),
(11, 'pedro', '827ccb0eea8a706c4c34a16891f84e7b', 3, 2, 'pedro');

Estos datos son de prueba, leugo el codigo php es:

$nombre=$_POST['txtNombre'];
$cargo=$_POST['select3'];
$proyecto=$_POST['select4'];
$sql= "select * from usuarios ";
$a=0;
if($_POST['txtUsuario'] != NULL){
if($a==0){$sql.=" where ";};
$sql=$sql."(user ='".$_POST['txtUsuario']."') ";
$a=1;
}
if($_POST['select3'] != 0){
if($a==0){$sql.=" where ";};
if($a==1){$sql.=" and ";};
$sql=$sql."(cargo = ".$cargo." )";
$a=1;
}
if($_POST['select4'] != 0){
if($a==0){$sql.=" where ";};
if($a==1){$sql.=" and ";};
$sql=$sql."(proyecto = ".$proyecto." )";
$a=1;
}
if($_POST['txtNombre'] != NULL){
if($a==0){$sql.=" where ";};
if($a==1){$sql.=" and ";};
$sql=$sql."(nombre LIKE \"%".$nombre."%\" || nombre LIKE \"%".$nombre."\" || nombre LIKE \"".$nombre."%\" )";
}
$sql=$sql." ORDER BY nombre ASC";

en este caso funciona todo pero al darle que busque usuarios con "ca" o "car" dentro del campo nombre solo me da el resutaldo de carlos pero no el de oscar. y asi con varias otras varias combinaciones que estubo probando el encargado de sistemas a quien le estoy haciendo el programas.

Me olvidaba de escribir si ejecuto el sql restante en el myphpadmin con el que manejo la base de datos, me da los resultados correctos.
Desde ya gracias por la ayuda. Saludos Atte.
  #2 (permalink)  
Antiguo 16/06/2010, 17:31
Avatar de xcars  
Fecha de Ingreso: mayo-2005
Ubicación: El Salvador
Mensajes: 753
Antigüedad: 18 años, 11 meses
Puntos: 4
Respuesta: Problemas con select Like en php y mysql

primero, muestra el codigo donde imprimes los resultados, por otro lado, te recomendaria que luego de construir tu query le des un echo o print, es decir

echo $sql;

y asi veras como quedo construida tu consulta, pero tambien con el simple hecho de poner campo like '%valor_a_buscar%' es suficiente
__________________
Con Microaplicaciones puedes hacer tu tienda en línea de forma sencilla y rápida, sin costos ocultos y con mucha responsabilidad.
  #3 (permalink)  
Antiguo 16/06/2010, 21:30
 
Fecha de Ingreso: junio-2010
Mensajes: 4
Antigüedad: 13 años, 10 meses
Puntos: 0
Respuesta: Problemas con select Like en php y mysql

Lo de la imprecion lo hice y hace bien el sql e inclusive eso copie al phpmyadmin y lo ejecut sin drama, el codigo de imprecion

if(!isset($_GET['sql'])){
$query=mysql_query("select * from usuarios order by nombre, user ASC") or die(mysql_error());
}else{
$query=mysql_query($_GET['sql']);
}
while($fila=mysql_fetch_array($query)):
$query2=mysql_query("select text from cargos where id ='".$fila['cargo']."'");
$resul=mysql_fetch_array($query2);
$strcargo=$resul['text'];
$query2=mysql_query("select nombre from proyectos where id ='".$fila['proyecto']."'");
$resul=mysql_fetch_array($query2);
$strproyecto=$resul['nombre'];
if($strproyecto==''){
$strproyecto="<font color=\"#FF0000\"><b>NO TIENE PROYECTO </b></font>";
}
?>
<tr>
<td height="47"><?php echo($fila['id'])?></td>
<td><?php echo($fila['Nombre'])?></td><td><?php echo($fila['user'])?></td> <td><?php echo($strcargo)?></td>
<td><?php echo($strproyecto)?></td>
<td width="74"><form name="form2" method="post" action="contenido.php?opcion=7">
<input type="submit" name="Submit2" value="Borrar">
<input type="hidden" name="hidden2" value="<?php echo($fila['id'])?>">
</form></td>
</tr>
<?php endwhile; ?>
  #4 (permalink)  
Antiguo 17/06/2010, 08:09
 
Fecha de Ingreso: junio-2010
Mensajes: 4
Antigüedad: 13 años, 10 meses
Puntos: 0
Respuesta: Problemas con select Like en php y mysql

Por algun motivo que aun no me explico algunas combinaciones de letras como %ca no lo reconoce como esos caracteres en html y me sale un simbolo raro, la solución que le di fue poner el caracter comodin "_" antes del %, en mis pruebas funciona ahora lo dejare para que el administrador del sistema que desarrolle lo pruebe.

Sentencia modificada

$sql=$sql."(nombre LIKE \"%_".$nombre."%\" || nombre LIKE \"%_".$nombre."\" || nombre LIKE \"".$nombre."%\" )";

Lo descubri poniendo el echo en la parte de impresion, cosa que no estaba haciendo

Saludos
  #5 (permalink)  
Antiguo 17/06/2010, 08:31
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 16 años, 4 meses
Puntos: 2658
Respuesta: Problemas con select Like en php y mysql

Los problemas de PHP te conviene consultarlos directamente en el foro de PHP.
Las normas de este (Bases de Datos), no nos permiten tratar temas de programación ni postear código que no sea SQL.
Esto último tiene un sentido fundamental: El código de programación resulta inentendible para quienes no trabajan en ese lenguaje y además esconden los problemas que no son originados por las consultas, tales como valores de variables y objetos que no pertenecen a la base de datos.
El problema de las conversiones implícitas de caracteres entre yel DBMS y la página, son cosas que los foristas de PHP conocen mejor que algunos de nosotros, que solamente trabajamos como DBA.
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)

Etiquetas: php, select
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 15:34.