Foros del Web » Programando para Internet » PHP »

Problema con

Estas en el tema de Problema con en el foro de PHP en Foros del Web. Bien tengo el siguiente problema... Llevo dandole vueltas al asunto pero pzz nomas no encuentro solucion... Tengo una aplicacion en php y esta se conecta ...
  #1 (permalink)  
Antiguo 28/10/2008, 10:25
Avatar de __DARK__  
Fecha de Ingreso: octubre-2008
Mensajes: 94
Antigüedad: 15 años, 5 meses
Puntos: 1
Problema con

Bien tengo el siguiente problema...
Llevo dandole vueltas al asunto pero pzz nomas no encuentro solucion... Tengo una aplicacion en php y esta se conecta a una BD para checar si el codigo introducido es correcto mostrando la descripcion del producto de acuerdo al codigo, ahora bien, el parametro lo paso por el metodo GET y se hace la siguiente consulta para sersiorarse de q el código existe...

Código PHP:
$cod $_GET["codigo"];

//************** Obtengo  descripcion****************
$sql "SELECT codigo, descripcion ";
$sql.= "FROM tb_productos_todos WHERE codigo =".$cod;
$rs mysql_query($sql$enlace);
if (
mysql_num_rows($rs) > 0) { 
    while(
$row mysql_fetch_assoc($rs))
    {
    
$imprime $row["descripcion"];
    echo 
$imprime;
    }
  }
  else { 
  echo 
"Codigo incorrecto, favor de verificar.<br>";
  echo 
$cod;
  } 
Cuando hago esto me marca el siguiente error: Warning: mysql_num_rows(): supplied argument is not a valid MySQL result resource in.... Se supone q este error es pq no esta encontrando ningun resultado en la BD de acuerdo al parametro recibido por GET, imprimi la variable $cod para saber que recibia, y me da como resultado esto: \'001-002-0006\' osea q le esta aumentando la diagonal y la comilla simple... alguien m podria explicar esto?... siento q tiene q ver algo con el tipo de variable... ya que si yo pongo manualmente el codigo en la url asi: aplicacion.php?codigo=001-002-0006 me muestra la descripcion correcta del producto... bueno aca dejo la estructura de mi BD:

CREATE TABLE `tb_productos_todos` (
`id` int(100) NOT NULL auto_increment,
`id_catalogo` int(100) NOT NULL default '0',
`id_producto` int(100) NOT NULL default '0',
`codigo` varchar(100) NOT NULL default '',
`descripcion` varchar(100) NOT NULL default '',
PRIMARY KEY (`id`)
)

Espero q alguien m apoye... thnx!
  #2 (permalink)  
Antiguo 28/10/2008, 10:41
 
Fecha de Ingreso: octubre-2008
Mensajes: 102
Antigüedad: 15 años, 5 meses
Puntos: 0
Respuesta: Problema con

Quiere decir que si entrar por una URL por medio de otro link se genera aplicacion.php?codigo='001-002-0006' ??

Podrias verificar el GET antes de consultar a la bases de datos

$cod = str_replace("\'",""$_GET["codigo"]);

O confirmar el codigo que solo admita numeros y guiones (-) con expresiones regulares
  #3 (permalink)  
Antiguo 28/10/2008, 10:43
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 17 años, 11 meses
Puntos: 2135
Respuesta: Problema con

Hola __DARK__,

Primero cambia esta linea:
Código php:
Ver original
  1. $rs = mysql_query($sql, $enlace) or die(mysql_error());

Luego usa stripslashes() sobre tu variable $cod para quitar las barras invertidas extras.

Saludos.
  #4 (permalink)  
Antiguo 28/10/2008, 10:57
Avatar de __DARK__  
Fecha de Ingreso: octubre-2008
Mensajes: 94
Antigüedad: 15 años, 5 meses
Puntos: 1
Respuesta: Problema con

Gracias GatorV y Zidencjb por responder, el problema es q el usuario coloca el codigo en una caja de texto y confirma si el codigo introducido es correcto, este valor lo paso por la url (metodo GET) y de esta forma recibe el valor asi: aplicacion.php?codigo=\'001-002-0006\' ... ahora bien, si yo manualmente pongo la url asi : aplicacion.php?codigo=001-002-0006 , sin la comilla y sin la diagonal, me hace la consulta perfectamente y me muestra la descripcion de acuerdo al codigo del producto... utilice la funcion stripslashes() sobre $cod, y me borra las diagonales pero me sigue poniendo la comilla simple ', no logro entender el problema... sera q tiene que ver algo los guiones que van entre el codigo 001-002-0006 ?? Yo pensaba q es el tipo de variable tal vez no lo toma como cadena?

Ahora si en esta linea del codigo modifico esto:

$sql.= "FROM tb_productos_todos WHERE codigo =".$cod;

Por esto:

$sql.= "FROM tb_productos_todos WHERE codigo =001-002-0006";

colocando el codigo de algun producto guardado en la BD me hace todo super bien, entonces el problema esta en como se esta tomando la variable, al pasarse por metodo GET se le agregan la diagonal y la comilla simple \'001-002-0006\' , ese es el problema, pero no entiendo pq?

Última edición por __DARK__; 28/10/2008 a las 11:02 Razón: Aclarar mas cosas
  #5 (permalink)  
Antiguo 28/10/2008, 11:01
 
Fecha de Ingreso: octubre-2008
Mensajes: 102
Antigüedad: 15 años, 5 meses
Puntos: 0
Respuesta: Problema con

usa el str_replace() para borrar las comillas
el stripslashes solo borra las \...
  #6 (permalink)  
Antiguo 28/10/2008, 11:24
Avatar de __DARK__  
Fecha de Ingreso: octubre-2008
Mensajes: 94
Antigüedad: 15 años, 5 meses
Puntos: 1
Respuesta: Problema con

Mmmmm...

Ya lo hice Zidencjb, con esa funcion si le kita la diagonal y la comilla simple, pero ahora me dice que el codigo NO existe, pero en realidad si existe en la BD...

Ahora bien, con la misma funcion y todo como me decias, hice otra prueba y igualmente puse la variable por la URL manualmente, simulandoo el metodo GET asi: aplicacion.php?codigo="001-002-0006"

Es decir, le aumente comillas al codigo, y asi si me hace la consulta exitosa y todo bien, no sera que el problema es que la variable $cod, la esta tomando de otro tipo, tal vez como un entero, y no como una cadena como deberia ser para poder hacer la consulta....

Código PHP:
$cod $_GET["codigo"]; 

//************** Obtengo  descripcion**************** 
$sql "SELECT codigo, descripcion "
$sql.= "FROM tb_productos_todos WHERE codigo =".$cod
$rs mysql_query($sql$enlace); 
if (
mysql_num_rows($rs) > 0) {  
    while(
$row mysql_fetch_assoc($rs)) 
    { 
    
$imprime $row["descripcion"]; 
    echo 
$imprime
    } 
  } 
  else {  
  echo 
"Codigo incorrecto, favor de verificar.<br>"
  echo 
$cod
  } 
  #7 (permalink)  
Antiguo 28/10/2008, 11:32
Avatar de __DARK__  
Fecha de Ingreso: octubre-2008
Mensajes: 94
Antigüedad: 15 años, 5 meses
Puntos: 1
Respuesta: Problema con Variable en url, METODO GET

Hey ia lo arregle LOL xD, aunq aun asi se me hace mucho codigo y me keda la duda de si exista otra solucion... o alguna respuesta mas lógica... al final el codigo cumple como debe ser... el codigo quedo al final asi:

Código PHP:
$cod $_GET["codigo"];
$cod stripslashes($cod);
$cod str_replace("'","\"",$cod);

//************** Obtengo  descripcion****************
$sql "SELECT codigo, descripcion ";
$sql.= "FROM tb_productos_todos WHERE codigo =".$cod;
$rs mysql_query($sql$enlace);
if (
mysql_num_rows($rs) > 0) { 
    while(
$row mysql_fetch_assoc($rs))
    {
    
$imprime $row["descripcion"];
    echo 
$imprime;
    }
  }
  else { 
  echo 
"Codigo incorrecto, favor de verificar.<br>";
  echo 
$cod;
  } 
Espero q no me provoke problemas mas adelante, sino x aca andare con la misma situacion hahaha, Thnx! x responder Sts Q___Q
  #8 (permalink)  
Antiguo 28/10/2008, 13:38
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 17 años, 11 meses
Puntos: 2135
Respuesta: Problema con

Mmm habría que ver el porque lo esta enviando así desde tu formulario, si publicas el código de esa parte es más facil que lo veamos.

Saludos.
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 06:14.