Foros del Web » Programando para Internet » PHP »

Uso de "like"

Estas en el tema de Uso de "like" en el foro de PHP en Foros del Web. Hola a todos tengo esta duda con mi bd y se qe ustedes pueden ayudarme. Lo que no me funciona es esto: SELECT * FROM ...
  #1 (permalink)  
Antiguo 20/10/2009, 12:49
 
Fecha de Ingreso: agosto-2009
Mensajes: 53
Antigüedad: 15 años, 3 meses
Puntos: 0
Información Uso de "like"

Hola a todos tengo esta duda con mi bd y se qe ustedes pueden ayudarme.

Lo que no me funciona es esto:

SELECT * FROM detalle_salida where fk_salida LIKE '%$txtdsalida%' OR no_economico LIKE '%$txtnumec%'

Esta es mi tabla:

Código :
Ver original
  1. CREATE TABLE `detalle_salida` (
  2.   `fk_salida` varchar(10) NOT NULL,
  3.   `no_economico` varchar(10) NOT NULL,
  4.   `cantidad` int(3) unsigned NOT NULL,
  5.   `descripcion` text NOT NULL,
  6.   PRIMARY KEY  (`fk_salida`,`no_economico`),
  7.   UNIQUE KEY `no_economico` (`no_economico`)
  8. ) ENGINE=InnoDB DEFAULT CHARSET=utf8;
  9.  
  10. --
  11. -- Volcar la base de datos para la tabla `detalle_salida`
  12. --
  13.  
  14. INSERT INTO `detalle_salida` VALUES ('SF/09-0934', 'FED-087642', 1, 'pantalla tamaño pantalla 21" aspect ratio tv. a color tipo plana ultra delgada, audio sistema: ntsc');
  15. INSERT INTO `detalle_salida` VALUES ('SF/09-0934', 'FED-087643', 1, 'pantalla tamaño pantalla 21" aspect ratio tv. a color tipo plana ultra delgada, audio sistema: ntsc');
  16. INSERT INTO `detalle_salida` VALUES ('SF/09-0934', 'FED-087644', 1, 'pantalla tamaño pantalla 21" aspect ratio tv. a color tipo plana ultra delgada, audio sistema: ntsc');
  17. INSERT INTO `detalle_salida` VALUES ('SF/09-0934', 'FED-087645', 1, 'pantalla tamaño pantalla 21" aspect ratio tv. a color tipo plana ultra delgada, audio sistema: ntsc');
  18. INSERT INTO `detalle_salida` VALUES ('SX/09-0009', 'FED-789898', 2, 'camas clinicas de cirugia esteticas');



Y en el consulta.php tengo esto:

Código HTML:
<table>
        <form name = "modif" method="post">
        <tr>
        <td><b>Salida:</b></td>
    	<td><input type="text" name="txtdsalida" size="15" maxlength="10" onchange="f_trim(this.value,this.form,this.name);"/></td>
        <td rowspan="2"><button type="submit" class="Estilo10">Buscar <img src="imagenes/buscar.png" alt="Buscar" align="absmiddle" 
        width="24" height="24"/></button></td>
        </tr>
        <tr>
        <td><b>No. Económico:</b></td>
        <td><input type="text" name="txtnumec" size="15" maxlength="10"/></td></td></tr>
        </form></table> 

Esta es la sentencia que no me funciona:
Código PHP:
$res mysql_query("SELECT * FROM detalle_salida where fk_salida LIKE '%$txtdsalida%' OR no_economico LIKE '%$txtnumec%'");
    
$total_registros mysql_num_rows($res);
     
?> 
Código HTML:
 <p></p>
	<table class="tabla" style="color:#0171AF;">
	<tr>
	<td><b>No de Salida</b></td>
	<td align="center">Fecha</td>
	<td align="center">Unidad</td>
	<td><b>No. Economico</b></td>
    <td align="center"><b>Cantidad</b></td>
    <td align="center"><b>Descripcion</b></td>
</tr> 
Código PHP:
<?php
while($row mysql_fetch_array($res)){
    echo 
"    <tr>";
    
//    echo "         <td><a style=\"text-decoration:underline;cursor:pointer;\" onclick=\"eliminarDato('".$row['no_almacenista']."')\">".$row['no_almacenista']."</a></td>";
    
echo "         <td>".$row['fk_salida']."</td>";
    echo 
"         <td>".$row['fecha']."</td>";
    echo 
"         <td>".$row['nom_unidad']."</td>";
    echo 
"         <td>".$row['no_economico']."</td>";
    echo 
"         <td align = 'center'>".$row['cantidad']."</td>";
    echo 
"         <td>".$row['descripcion']."</td>";
    echo 
"    </tr>";
}
?>
Código HTML:
</table> 
  #2 (permalink)  
Antiguo 20/10/2009, 12:54
Avatar de David
Moderador
 
Fecha de Ingreso: abril-2005
Ubicación: In this planet
Mensajes: 15.720
Antigüedad: 19 años, 7 meses
Puntos: 839
Respuesta: Uso de "like"

Por favor, no coloque código de programación en la sección de bases de datos.
Véase: http://www.forosdelweb.com/f21/funci...-datos-413499/

En cuanto al problema, ¿Te da algún error la consulta?

Tema transladado desde la sección de MySQL.
__________________
Por favor, antes de preguntar, revisa la Guía para realizar preguntas.
  #3 (permalink)  
Antiguo 20/10/2009, 12:56
Avatar de huesos52
Colaborador
 
Fecha de Ingreso: febrero-2009
Ubicación: Manizales - Colombia
Mensajes: 5.980
Antigüedad: 15 años, 9 meses
Puntos: 360
Respuesta: Uso de "like"

ya revisaste el contenido de $txtdsalida y $txtnumec?

La sentencia SQL está bien. Creo que el problema lo tienes en php.
saludos
__________________
Without data, You are another person with an opinion.
W. Edwads Deming
  #4 (permalink)  
Antiguo 20/10/2009, 13:02
 
Fecha de Ingreso: agosto-2009
Mensajes: 53
Antigüedad: 15 años, 3 meses
Puntos: 0
Respuesta: Uso de "like"

Ok, disculpas David.

No me da ningun problema la consulta y si fuera en php el detalle del error donde seria?????
  #5 (permalink)  
Antiguo 20/10/2009, 13:06
Avatar de David
Moderador
 
Fecha de Ingreso: abril-2005
Ubicación: In this planet
Mensajes: 15.720
Antigüedad: 19 años, 7 meses
Puntos: 839
Respuesta: Uso de "like"

Pero si no da error, ¿por qué dices que no funciona? ¿no muestra datos?

¿Has comprobado el valor de las variables como te indica huesos52?
__________________
Por favor, antes de preguntar, revisa la Guía para realizar preguntas.
  #6 (permalink)  
Antiguo 20/10/2009, 13:14
 
Fecha de Ingreso: agosto-2009
Mensajes: 53
Antigüedad: 15 años, 3 meses
Puntos: 0
Respuesta: Uso de "like"

Efectivamente...... no muestra datos es decir no regresa ninguna de los dos parametros de busquedas

El valor de las variables txtdsalida y txtnumec estan bien no veo ninguna inconsistencia

SELECT * FROM detalle_salida where fk_salida LIKE '%$txtdsalida%' OR no_economico LIKE '%$txtnumec%'

Señores agradezco su paciencia y conocimiento!!!!
  #7 (permalink)  
Antiguo 20/10/2009, 13:17
Avatar de David
Moderador
 
Fecha de Ingreso: abril-2005
Ubicación: In this planet
Mensajes: 15.720
Antigüedad: 19 años, 7 meses
Puntos: 839
Respuesta: Uso de "like"

Haz un echo() a la consulta para ver cómo queda con las variables y ve si hay algún problema.
__________________
Por favor, antes de preguntar, revisa la Guía para realizar preguntas.
  #8 (permalink)  
Antiguo 20/10/2009, 13:20
 
Fecha de Ingreso: mayo-2009
Mensajes: 25
Antigüedad: 15 años, 6 meses
Puntos: 1
Respuesta: Uso de "like"

Mi estimado el uso de LIKE es mejor solo si buscas 1 palabra por ejemplo
"perro" "avion" etc...
para otras formas de búsqueda más precisas en mysql se utiliza match() y against()
eso hará una búsqueda muchísimo mejor que like y lo puedes combinar obviamente con un OR
si vas a usar match/against no olvides poner como "fulltext" los campos que vas a buscar....
te dejo documentación tal vez te sirva...
dev.mysql.com/doc/refman/5.0/es/fulltext-search.html
  #9 (permalink)  
Antiguo 20/10/2009, 13:25
 
Fecha de Ingreso: agosto-2009
Mensajes: 53
Antigüedad: 15 años, 3 meses
Puntos: 0
Respuesta: Uso de "like"

No se si sea asi:

echo $res;

si es asi lo que imprimio fue : Resource id #4
  #10 (permalink)  
Antiguo 20/10/2009, 13:26
Avatar de David
Moderador
 
Fecha de Ingreso: abril-2005
Ubicación: In this planet
Mensajes: 15.720
Antigüedad: 19 años, 7 meses
Puntos: 839
Respuesta: Uso de "like"

Imprime la consulta:
Código PHP:
Ver original
  1. echo "SELECT * FROM detalle_salida where fk_salida LIKE '%$txtdsalida%' OR no_economico LIKE '%$txtnumec%'";
__________________
Por favor, antes de preguntar, revisa la Guía para realizar preguntas.
  #11 (permalink)  
Antiguo 20/10/2009, 13:27
 
Fecha de Ingreso: agosto-2009
Mensajes: 53
Antigüedad: 15 años, 3 meses
Puntos: 0
Respuesta: Uso de "like"

Ok muchas gracias morpheus747, voy a probar lo que dices
  #12 (permalink)  
Antiguo 20/10/2009, 13:28
Avatar de huesos52
Colaborador
 
Fecha de Ingreso: febrero-2009
Ubicación: Manizales - Colombia
Mensajes: 5.980
Antigüedad: 15 años, 9 meses
Puntos: 360
Respuesta: Uso de "like"

Cambia esto:

Cita:
$res = mysql_query("SELECT * FROM detalle_salida where fk_salida LIKE '%$txtdsalida%' OR no_economico LIKE '%$txtnumec%'");
$total_registros = mysql_num_rows($res);
?>
Por esto:
Código php:
Ver original
  1. $sql="SELECT * FROM detalle_salida where fk_salida LIKE '%$txtdsalida%' OR no_economico LIKE '%$txtnumec%'";
  2.  
  3. $res = mysql_query($sql);
  4.     $total_registros = mysql_num_rows($res);

He imprime la variable $sql
__________________
Without data, You are another person with an opinion.
W. Edwads Deming
  #13 (permalink)  
Antiguo 20/10/2009, 13:31
 
Fecha de Ingreso: mayo-2009
Mensajes: 25
Antigüedad: 15 años, 6 meses
Puntos: 1
Respuesta: Uso de "like"

lo del id resource #4 es un error en la consulta SQL estoy casi seguro.. una vez me pasó y era que yo la estaba formulando mal!!!
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 12:14.