Foros del Web » Programando para Internet » PHP »

problema usando GET para la funcion Where en MYSQL

Estas en el tema de problema usando GET para la funcion Where en MYSQL en el foro de PHP en Foros del Web. Hola, tengo una lista de estados, donde al hacer clic en alguno se envia la variable por medio de un GET, al tratar de usarla ...
  #1 (permalink)  
Antiguo 21/04/2011, 16:47
 
Fecha de Ingreso: marzo-2011
Mensajes: 41
Antigüedad: 13 años
Puntos: 0
Pregunta problema usando GET para la funcion Where en MYSQL

Hola, tengo una lista de estados, donde al hacer clic en alguno se envia la variable por medio de un GET, al tratar de usarla en una consulta de Mysql me sale error, alguien sabe porque?

Código PHP:
$estado $_GET["estado"];
    
$q mysql_query ('SELECT `nombre`, `giro`, `estado`, `municipio`, `direccion`, `telefono`, `correo`, `web` FROM `negocios` WHERE $estado= $estado  ORDER BY `nombre` ASC'); 
Lo que quiero es utilizar la variable "estado" para decirle que me muestre los registros que cumplan con esa condicion, muchas gracias....
  #2 (permalink)  
Antiguo 21/04/2011, 17:07
Avatar de ESNOLA  
Fecha de Ingreso: octubre-2006
Mensajes: 188
Antigüedad: 17 años, 6 meses
Puntos: 20
Respuesta: problema usando GET para la funcion Where en MYSQL

sustituye
Código PHP:
Ver original
  1. WHERE $estado= $estado
por
Código PHP:
Ver original
  1. WHERE estado= "$estado"

Saludos
  #3 (permalink)  
Antiguo 21/04/2011, 17:37
 
Fecha de Ingreso: marzo-2011
Mensajes: 41
Antigüedad: 13 años
Puntos: 0
Respuesta: problema usando GET para la funcion Where en MYSQL

Gracias por responder amigo,,, Me sigue saliendo error, dice:

Warning: mysql_fetch_assoc(): supplied argument is not a valid MySQL result resource in C:\AppServ\www\directorio-listado.php on line 310

Las lineas son:

Código PHP:
 <?PHP
    
include("conexion.php");
    
$estado $_GET["estado"];
    
$q mysql_query ('SELECT `nombre`, `giro`, `estado`, `municipio`, `direccion`, `telefono`, `correo`, `web` FROM `negocios` WHERE $estado="$estado"  ORDER BY `nombre` ASC'); 

while (
$res mysql_fetch_assoc($q)) {
    
?>
    <table width="620" border="0" cellspacing="0" cellpadding="0">
.... " AQUI UNA TABLA LARGA, JEJEJEJEJE"....

              </table>
    <?      
}  



?>
Donde empieza el while es la linea 309, la 310 es donde esta " ?> "

Pero si quito la condicion While si funciona la consulta, mostrando todos los registros....

Que pasara???
  #4 (permalink)  
Antiguo 21/04/2011, 17:43
Avatar de Sourcegeek
Colaborador
 
Fecha de Ingreso: mayo-2009
Ubicación: $mex['B.C.'];
Mensajes: 1.816
Antigüedad: 14 años, 11 meses
Puntos: 322
Respuesta: problema usando GET para la funcion Where en MYSQL

Estas haciendo que:
WHERE $_GET['estado'] = $_GET['estado'];
Eso esta mal, no puedes usar una variable en una clausula where, debes usar el nombre de la columna...
Ademas, no hagas tantos select. Solo haz uno a todo y ya.. Quedando asi:

Código PHP:
$q mysql_query ('SELECT * FROM `negocios` WHERE estado="$estado"  ORDER BY `nombre` ASC'); 
__________________
Buscas desarrollador web? Sourcegeek. Diseño web, Maquetación y Programación
¡Escribe bien! Esto es un foro, no un Facebook para que escribas con los pies
  #5 (permalink)  
Antiguo 21/04/2011, 18:09
 
Fecha de Ingreso: marzo-2011
Mensajes: 41
Antigüedad: 13 años
Puntos: 0
De acuerdo Respuesta: problema usando GET para la funcion Where en MYSQL

Cita:
Iniciado por Sourcegeek Ver Mensaje
Estas haciendo que:
WHERE $_GET['estado'] = $_GET['estado'];
Eso esta mal, no puedes usar una variable en una clausula where, debes usar el nombre de la columna...
Ademas, no hagas tantos select. Solo haz uno a todo y ya.. Quedando asi:

Código PHP:
$q mysql_query ('SELECT * FROM `negocios` WHERE estado="$estado"  ORDER BY `nombre` ASC'); 
Gracias por ayudarme,,,,

Ya no me muestra ningun error, pero tampoco ningun registro, jejejeje,,,, Se puede usar un LIKE por si acaso?

como sería???
  #6 (permalink)  
Antiguo 21/04/2011, 18:33
Avatar de ESNOLA  
Fecha de Ingreso: octubre-2006
Mensajes: 188
Antigüedad: 17 años, 6 meses
Puntos: 20
Respuesta: problema usando GET para la funcion Where en MYSQL

NO WHERE $estado="$estado"
SI WHERE estado="$estado"
  #7 (permalink)  
Antiguo 21/04/2011, 18:37
Avatar de Sourcegeek
Colaborador
 
Fecha de Ingreso: mayo-2009
Ubicación: $mex['B.C.'];
Mensajes: 1.816
Antigüedad: 14 años, 11 meses
Puntos: 322
Respuesta: problema usando GET para la funcion Where en MYSQL

Si estas requiriendo una entrada exacta, usa where.
Si necesitas un aproximado, usa like
__________________
Buscas desarrollador web? Sourcegeek. Diseño web, Maquetación y Programación
¡Escribe bien! Esto es un foro, no un Facebook para que escribas con los pies
  #8 (permalink)  
Antiguo 21/04/2011, 18:43
 
Fecha de Ingreso: marzo-2011
Mensajes: 41
Antigüedad: 13 años
Puntos: 0
Respuesta: problema usando GET para la funcion Where en MYSQL

No me muestra nada.... =C

Incluso lo cambie asi:

Código PHP:
$q mysql_query ("SELECT * FROM negocios WHERE estado=".$estado." ORDER BY nombre ASC"); 
y nada....

Las consultas son exactas.... si cambio a esto:

Código PHP:
$q mysql_query ("SELECT * FROM negocios WHERE estado="Hidalgo" ORDER BY nombre ASC"); 
si me muestra registros,,,,

¿porque?

saludos, y gracias....
  #9 (permalink)  
Antiguo 21/04/2011, 18:51
Avatar de ESNOLA  
Fecha de Ingreso: octubre-2006
Mensajes: 188
Antigüedad: 17 años, 6 meses
Puntos: 20
Respuesta: problema usando GET para la funcion Where en MYSQL

Prueba con esto, fíjate en las comillas simples y dobles de
Código PHP:
$q mysql_query ("SELECT * FROM negocios WHERE estado='".$estado."' ORDER BY nombre ASC"); 
estado='".$estado."'
O bien con:
Código PHP:
$q mysql_query ("SELECT * FROM negocios WHERE estado='$estado' ORDER BY nombre ASC"); 
  #10 (permalink)  
Antiguo 21/04/2011, 19:03
 
Fecha de Ingreso: marzo-2011
Mensajes: 41
Antigüedad: 13 años
Puntos: 0
Respuesta: problema usando GET para la funcion Where en MYSQL

Cita:
Iniciado por ESNOLA Ver Mensaje
Prueba con esto, fíjate en las comillas simples y dobles de
Código PHP:
$q mysql_query ("SELECT * FROM negocios WHERE estado='".$estado."' ORDER BY nombre ASC"); 
estado='".$estado."'
O bien con:
Código PHP:
$q mysql_query ("SELECT * FROM negocios WHERE estado='$estado' ORDER BY nombre ASC"); 




Muchas gracias,,,, ahora si funciona =D

!!!Gracias.... Saludos...

Etiquetas: funcion, mysql
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 19:32.