Foros del Web » Programando para Internet » PHP »

pasar el valor de un array con el metodo GET

Estas en el tema de pasar el valor de un array con el metodo GET en el foro de PHP en Foros del Web. Hola Un gran saludo a toda la comunidad forosdelweb.com. Antes aclaro que no tengo muchos conocimientos del lenguaje, estoy en fase de aprendizaje. mi problema ...
  #1 (permalink)  
Antiguo 23/04/2014, 18:34
Avatar de wtd000  
Fecha de Ingreso: abril-2012
Ubicación: en casa
Mensajes: 12
Antigüedad: 12 años
Puntos: 0
pasar el valor de un array con el metodo GET

Hola

Un gran saludo a toda la comunidad forosdelweb.com.


Antes aclaro que no tengo muchos conocimientos del lenguaje, estoy en fase de aprendizaje.

mi problema es el siguiente: tengo una lista de enlaces sacados de la tabla de una DB, con esta estructura:

id_c c_nombre c_contenido
1 Zapatos zapatos
2 Pantalones pantalones
3 Correas correas
4 Carteras carteras

la lista se veria a si:

zapatos
pantalones
correas
carteras

tengo otra tabla "productos" con varios campos entre ellos "categoria" que coreesponderá a la categoría del articulo.

bueno la idea es que cuando pinche uno de los enlaces, pasar por URL la categoría
del enlace correspondiente, es decir si pincho "zapatos" que quede algo como esto:
http://localhost/function/categorias.php?=zapatos

y con categorias.php poder hacer la consulta para los articulos en la categoria "zapatos".

intento hacerlo con el metodo Get pero no me sale, me dice que el indice no esta definido.

esto es algo de el codigo:

codigo del index.php

$sql="SELECT * FROM categorias";
$resultado = mysql_query($sql)or die(mysql_error("no se puede hacer la consulta"));
while($row=mysql_fetch_array($resultado)){
echo '<ul>';
echo '<li><a href=function/categorias'.'.php?='.$row['id_c'].'>'.$row['c_contenido'].'</a></li>';
echo '</ul>';
}


esto me imprime toda la lista e intento pasar los valores o el valor por URL

este es el codigo de categorias.php

session_start();
$url = $_GET['c_nombre'];

include_once('conect.php');
$sql = "SELECT * FROM producto WHERE categoria ='".$url."'" ;
$resultado = mysql_query($sql)or die(mysql_error("no se puede hacer la consulta"));
while($row = mysql_fetch_array($resultado)){
echo $row['nombre'];
echo $row['categoria'];
}


Espero que se entienda y que porfavor puedan ayudarme.

Gracias
  #2 (permalink)  
Antiguo 23/04/2014, 19:56
Avatar de Triby
Mod on free time
 
Fecha de Ingreso: agosto-2008
Ubicación: $MX->Gto['León'];
Mensajes: 10.106
Antigüedad: 15 años, 8 meses
Puntos: 2237
Respuesta: pasar el valor de un array con el metodo GET

En tu enlaces estás enviando un valor, pero no la variable:

localhost/function/categorias.php?=zapatos

Debe ser algo así:

localhost/function/categorias.php?c_nombre=zapatos
__________________
- León, Guanajuato
- GV-Foto
  #3 (permalink)  
Antiguo 24/04/2014, 14:17
Avatar de wtd000  
Fecha de Ingreso: abril-2012
Ubicación: en casa
Mensajes: 12
Antigüedad: 12 años
Puntos: 0
Respuesta: pasar el valor de un array con el metodo GET

gracias triby

lo hice lo que me dices pero no me funciona, me da el mismo error :

Notice: Undefined index: c_nombre in C:\xampp\htdocs\opera\function\categorias.php on line 3

asi es como se ve en el navegador:
http://localhost/opera/function/categorias.php?Anillos=3

codigo de categorias.php
session_start();
$url = $_GET['c_nombre'];
include_once('conect.php');
$sql = "SELECT * FROM producto WHERE categoria ='".$url."'" ;
$resultado = mysql_query($sql)or die(mysql_error("no se puede hacer la consulta"));
while($row = mysql_fetch_array($resultado)){
echo $row['nombre'];
echo $row['categoria'];
}

codigo del enlace:

Código PHP:
Ver original
  1. echo '<li><a href=function/categorias'.'.php?'.$row['c_nombre'].'='.$row['id_c'].'>'.$row['c_contenido'].'</a></li>';

no se si el problema es que la variable que estoy pasando es una matriz que contiene varios
valores.
he pasado variables por url un montón de veces pero nunca con una matriz
  #4 (permalink)  
Antiguo 24/04/2014, 14:35
Avatar de racanix  
Fecha de Ingreso: diciembre-2008
Ubicación: Morelia Mich.
Mensajes: 192
Antigüedad: 15 años, 4 meses
Puntos: 8
Respuesta: pasar el valor de un array con el metodo GET

no estas pasando tu variable get "c_nombre" en tu caso estas pasando la variable Anillos con un valor a 3

si haces
$url = $_GET['Anillos'];

Te devolverá 3, si deseas enviar la categoria y el valor tendras que enviar 2 parametros
por ejemplo http://localhost/opera/function/categorias.php?c_nombre=Anillos&valor=3

Como observación en tu consulta

$sql = "SELECT * FROM producto WHERE categoria ='".$url."'" ;

No estas protegiendo tu código contra inyección sql y eso es potencialmente inseguro.

Sds

Última edición por Triby; 24/04/2014 a las 18:39 Razón: No interpretrar enlace
  #5 (permalink)  
Antiguo 24/04/2014, 18:42
Avatar de Triby
Mod on free time
 
Fecha de Ingreso: agosto-2008
Ubicación: $MX->Gto['León'];
Mensajes: 10.106
Antigüedad: 15 años, 8 meses
Puntos: 2237
Respuesta: pasar el valor de un array con el metodo GET

Si vas a identificar la categoría por el nombre, entonces, asegúrate de que el nombre del campo sea enviado como nombre de variable, además de que el HTML sea correcto, entrecomillado y codificando caracteres especiales para que puedan ser usados en la URL:

Código PHP:
Ver original
  1. echo '<li><a href="function/categorias.php?c_nombre=' . urlencode($row['c_nombre']) . '">'.$row['c_contenido'].'</a></li>';
__________________
- León, Guanajuato
- GV-Foto
  #6 (permalink)  
Antiguo 24/04/2014, 20:10
Avatar de wtd000  
Fecha de Ingreso: abril-2012
Ubicación: en casa
Mensajes: 12
Antigüedad: 12 años
Puntos: 0
Respuesta: pasar el valor de un array con el metodo GET

gracias racanix y Triby ya encontré el problema y pude hacer lo que quería.

Es que estaba poniendo el array de esta forma en el enlace $row['c_nombre'], cuando no se puede usar el signo "$" en el pase de variables por url.

lo que hice fue esto
Código PHP:
Ver original
  1. <li><a href=index'.'.php?c_nombre'.'='.$row['c_contenido'].'>'.$row['c_contenido'].'</a></li>'

racanix gracias por la observación, estoy estudiando el tema de inyección sql para protegerme de esos ataques.

gracias me ayudaron muchísimo....

Etiquetas: metodo, mysql, select, sql, tabla, valor
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:26.