Foros del Web » Programando para Internet » PHP »

Mostrar nombre de valor GET

Estas en el tema de Mostrar nombre de valor GET en el foro de PHP en Foros del Web. Hola amigos no se si esta bien definida mi pregunta, pero la explico. se obtener el valor de una variable comun y correinte ($_GET) sitio.com/?valor= ...
  #1 (permalink)  
Antiguo 11/07/2010, 18:54
Avatar de MoDoRrO  
Fecha de Ingreso: septiembre-2005
Ubicación: Php+Flash+AS
Mensajes: 1.072
Antigüedad: 18 años, 7 meses
Puntos: 12
Mostrar nombre de valor GET

Hola amigos
no se si esta bien definida mi pregunta, pero la explico.

se obtener el valor de una variable comun y correinte ($_GET)

sitio.com/?valor=hola

y se obtiene asi:
Código PHP:
echo $_GET['valor']; 
pero si quiero extraer el nombre de la variable
o sea

sitio.com/?modorro
sitio.com/?kichusfleta

es posible?

Saludos y Gracias
  #2 (permalink)  
Antiguo 11/07/2010, 19:04
 
Fecha de Ingreso: junio-2008
Ubicación: Capital Federal xD
Mensajes: 1.208
Antigüedad: 15 años, 9 meses
Puntos: 35
Respuesta: Mostrar nombre de valor GET

Usa un foreach
Código PHP:
foreach ($_GET as $index => $value){
    echo 
"El nombre de la variable es:".$index."y el valor es:".$value.'<br/>';

__________________
I am Doyle please insert code.
  #3 (permalink)  
Antiguo 12/07/2010, 00:29
Avatar de MoDoRrO  
Fecha de Ingreso: septiembre-2005
Ubicación: Php+Flash+AS
Mensajes: 1.072
Antigüedad: 18 años, 7 meses
Puntos: 12
Respuesta: Mostrar nombre de valor GET

PERFECTO AMIGO
muchisimas gracias!
  #4 (permalink)  
Antiguo 12/07/2010, 02:07
Avatar de Neldor  
Fecha de Ingreso: enero-2010
Mensajes: 52
Antigüedad: 14 años, 3 meses
Puntos: 1
Respuesta: Mostrar nombre de valor GET

O puedes usar key()
[URL="http://es2.php.net/manual/es/function.key.php"]http://es2.php.net/manual/es/function.key.php[/URL]
  #5 (permalink)  
Antiguo 12/07/2010, 06:48
 
Fecha de Ingreso: julio-2008
Ubicación: valencia
Mensajes: 18
Antigüedad: 15 años, 9 meses
Puntos: 0
Respuesta: Mostrar nombre de valor GET

Tambien puedes usar
Código PHP:
echo print_r($_GET
  #6 (permalink)  
Antiguo 12/07/2010, 14:22
Avatar de MoDoRrO  
Fecha de Ingreso: septiembre-2005
Ubicación: Php+Flash+AS
Mensajes: 1.072
Antigüedad: 18 años, 7 meses
Puntos: 12
Respuesta: Mostrar nombre de valor GET

ajalas!!!
puro master aqui
gracias mijos
  #7 (permalink)  
Antiguo 22/09/2010, 16:50
Avatar de MoDoRrO  
Fecha de Ingreso: septiembre-2005
Ubicación: Php+Flash+AS
Mensajes: 1.072
Antigüedad: 18 años, 7 meses
Puntos: 12
Respuesta: Mostrar nombre de valor GET

hola amigos, revivo el POST
miren, resulta que tengo este codigo:
Código PHP:
foreach ($_GET as $index => $value){
    echo 
$index;

ok, al entrar a
sitio.com/?Modorro

me devuelve Modorro
ok, aqui todo bien, pero resulta que no solo sera una variable, necesito obtener otros datos
me explico:

sitio.com/?Modorro&foto=15&seccion=Portada
extraer:
Modorro
15
Portada

si me entienden??
Saludfosy gracias por su ayuda
=)
  #8 (permalink)  
Antiguo 22/09/2010, 17:58
Avatar de bng5  
Fecha de Ingreso: junio-2009
Ubicación: 127.0.0.1
Mensajes: 269
Antigüedad: 14 años, 10 meses
Puntos: 24
Respuesta: Mostrar nombre de valor GET

Usá print_r, por lo menos hasta que lo tengas claro.

Código PHP:
print_r($_GET); 
Te imprime
Array
(
[Modorro] =>
[foto] => 15
[seccion] => Portada
)

Modorro => string ''
foto => string '15'
seccion => string 'Portada'

El foreach ambién te sirve, recorre todos los elementos de array y le asigna, para cada iteración, la clave a $index y el valor en $value (basandome en el ejemplo doylelives).
  #9 (permalink)  
Antiguo 22/09/2010, 18:24
Avatar de eZakto  
Fecha de Ingreso: julio-2008
Mensajes: 214
Antigüedad: 15 años, 9 meses
Puntos: 5
Respuesta: Mostrar nombre de valor GET

No sé si entiendes bien lo que estás haciendo con el foreach, MoDoRrO.

Yo te recomiendo que para el primer elemento uses key(), pues necesitas solamente el índice, y luego avanzas en el array (con next() o un foreach()) y en el resto utilizas los valores.

Saludos.
__________________
eZakto™
  #10 (permalink)  
Antiguo 22/09/2010, 18:52
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: Mostrar nombre de valor GET

Te complicas demasiado, todo lo que necesitas es verificar si la variable existe en GET, de ser asi, la tomas, de lo contrario, la inicializas con valor vacio (cero, null, cadena vacia...)

Código PHP:
Ver original
  1. // Con asignacion ternaria es mas rapido
  2. $variable = (isset($_GET['variable'])) ? $_GET['variable'] : '';

Eso te sirve para cualquier cosa que quieras recibir por URL, logicamente, solo tienes que aplicarlo donde realmente lo necesites.

Tambien te podria servir extract(), pero no te lo recomiendo, porque es preferible tener el control de los datos obtenidos.
__________________
- León, Guanajuato
- GV-Foto
  #11 (permalink)  
Antiguo 23/09/2010, 15:36
Avatar de MoDoRrO  
Fecha de Ingreso: septiembre-2005
Ubicación: Php+Flash+AS
Mensajes: 1.072
Antigüedad: 18 años, 7 meses
Puntos: 12
Respuesta: Mostrar nombre de valor GET

hola
gracias a todos por contestar... aunque la respuesta de Triby me servira para otra cosa.

intente hacer varias cosas y jugar con los Array, pero no llegue a ninguna parte...
:S

el foreach no se puede detener despues de extraer un solo valor?
  #12 (permalink)  
Antiguo 23/09/2010, 15:49
Avatar de bng5  
Fecha de Ingreso: junio-2009
Ubicación: 127.0.0.1
Mensajes: 269
Antigüedad: 14 años, 10 meses
Puntos: 24
Respuesta: Mostrar nombre de valor GET

Aunque la respuesta de Triby no se aplica para este caso, es acertada, tenela en cuenta.

Podés finalizar la ejecución de un bucle (for, foreach, while, do...while y switch) con break. Y saltar a la siguiente (o más) iteración con continue.

Si sabés que vas a salirte del bucle después de la primer iteración no uses foreach, usá en su lugar key().
  #13 (permalink)  
Antiguo 23/09/2010, 18:44
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: Mostrar nombre de valor GET

MoDoRrO... supongo que lo que no te sirvio fue lo del extract(), pero... lo de buscar la variable a ver si aparece en GET en lugar de recorrer todo el arreglo, tampoco te sirvio?

El unico problema que veo es que en:
sitio.com/?Modorro&foto=15&seccion=Portada

Modorro sera una variable y no un valor, en todo caso, tendria que ser:
sitio.com/?usuario=Modorro&foto=15&seccion=Portada

De esa forma, mi sugerencia inicial sirve para tooooodo lo que se te ocurra enviar por URL:
$usuario = (isset($_GET['usuario'])) ? $_GET['usuario'] : '';
__________________
- León, Guanajuato
- GV-Foto
  #14 (permalink)  
Antiguo 24/09/2010, 13:20
Avatar de bng5  
Fecha de Ingreso: junio-2009
Ubicación: 127.0.0.1
Mensajes: 269
Antigüedad: 14 años, 10 meses
Puntos: 24
Respuesta: Mostrar nombre de valor GET

Cometimos un error: te dimos respuestas concretas a preguntas concretas.

key, print_r, extract, for, foreach, while, do...while, switch, break y continue te van a acompañar siempre, deberías consultar el manual para profundizar en ellos.

El problema es que siendo tan ejecutivos no reparamos, como hizo Triby, en que te estabamos motivando a hacer un posible mal uso de los parámetros GET.

El query GET se almacena en el array asociativo $_GET, clave/valor. No deberías depender del orden de los parámetros porque se ubican por su clave.
A no ser que tengas, por ejemplo, "un CMS donde el administrador define los filtros que el usuario puede usar para obtener un listado", siempre vas a recibir parámetros que el sistema esté preparado por código para recibir y tengas valores por omisión o predeterminados.

Código PHP:
    // Con asignacion ternaria es mas rápido
    
$variable = (isset($_GET['variable'])) ? $_GET['variable'] : ''

Si recibís esta consulta
sitio.com/?a=1&modorro&b=2&kichusfleta
¿cómo sabés cual es el parámetro que tenés que usar? ¿vas a usar el primero que no reconozcas?
Cómo dice Triby: la clave en realidad es un valor.
Si no lo vas a identificar por su clave podés ponerlo en un lugar más adecuado.

Por suerte PHP te da más posibilidades, el query GET no es la única opción.
Esta ruta
sitio.com/?Modorro&foto=15&seccion=Portada
podés convertirla en
sitio.com/?usuario=Modorro&foto=15&seccion=Portada
o mejor aun en
sitio.com/Modorro?foto=15&seccion=Portada

Te recomiendo guardes un archivo phpinfo en un lugar siempre accesible (ej.: /var/www) y podrás hacer pruebas con las rutas.

1_
Al archivo se puede acceder con /phpinfo.php, pero también con /phpinfo.php/Modorro, en este caso en lugar de obtener Modorro de $_GET lo obtenés de $_SERVER['PATH_INFO'].
Si estás usando Apache mejor aun, podés habilitar la negociación de contenidos (MultiViews) que te permite (entre otra cosas) acceder al documento sin especificar la extensión (/phpinfo.php/Modorro quedaría en /phpinfo/Modorro).

2_
También con Apache (trabajo con Apache, desconozco las opciones que dan otros servidores web) podés re-escribir la consulta como hacen la mayoría de los sistemas que usan MVC con un controlador frontal.

Este es un ejemplo de un archivo .htaccess para enrutar las peticiones al controlador frontal.
Código Apache:
Ver original
  1. # habilita el módulo de rescritura
  2. RewriteEngine On
  3.  
  4. # si la petición no corresponde a ningún archivo ni carpeta phpinfo.php se hace cargo
  5. RewriteCond %{REQUEST_FILENAME}    !-d
  6. RewriteCond %{REQUEST_FILENAME}    !-f
  7. RewriteRule ^(.*)$         phpinfo.php  [L]
En este caso en lugar de usar $_SERVER['PATH_INFO'] usarías $_SERVER['REDIRECT_URL']


Espero se entienda, no está profundizado, eso tendrás que hacerlo vos.
  #15 (permalink)  
Antiguo 24/09/2010, 17:35
Avatar de MoDoRrO  
Fecha de Ingreso: septiembre-2005
Ubicación: Php+Flash+AS
Mensajes: 1.072
Antigüedad: 18 años, 7 meses
Puntos: 12
Respuesta: Mostrar nombre de valor GET

Bng5
agradezco tu tiempo asi como el de Triby y Ezakto

tienes razón, habia pensado en esto
si el usuario accede a
sitio.com/?foto=3&Modorro
obviamente el script devolvera foto en lugar de Modorro
si lo habia pensado, pero despues ese valor se va auna comparación en BD

aunque me gusto mas esta idea:
Esta ruta
sitio.com/?Modorro&foto=15&seccion=Portada
podés convertirla en
sitio.com/?usuario=Modorro&foto=15&seccion=Portada


he leido y creo que se tiene que usar archivos .httaccess (algo asi)
pero en realidad, nunca les entendi, y eso que soy bastante inquiero y no descanzo hasta que algo salga bien, pero esos archivos si me sacarón totalmnete de onda...

habra otra opcion utilizado solo PHP ?

Saludos y de nuevo, Gracias!
  #16 (permalink)  
Antiguo 24/09/2010, 17:47
Avatar de bng5  
Fecha de Ingreso: junio-2009
Ubicación: 127.0.0.1
Mensajes: 269
Antigüedad: 14 años, 10 meses
Puntos: 24
Respuesta: Mostrar nombre de valor GET

Esa es una buena opción, lo único que no tiene es la ruta "bonita".
Tenés que evaluar que es lo más importante para vos en este momento, si lo más importante es que funcione usá esa.

En cuanto a tu otra pregunta (usar sólo PHP sin .htacces), sólo se me ocurren esas 2: la de pasar usuario vía GET (ej: /?usuario=Modorro&a=1) o usar PATH_INFO (ej: /usuarios.php/Modorro?a=1).

Etiquetas: nombre
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 16:29.