Foros del Web » Programando para Internet » PHP »

[SOLUCIONADO] Uso dinámico del Header Location PHP

Estas en el tema de Uso dinámico del Header Location PHP en el foro de PHP en Foros del Web. Buen día, quisiera molestarles con la siguiente pregunta: Estoy creando un mini foro, al cual le di el siguiente orden: 1. Una tabla en la ...
  #1 (permalink)  
Antiguo 17/12/2013, 18:02
Avatar de boggiepopphantom  
Fecha de Ingreso: agosto-2012
Mensajes: 29
Antigüedad: 11 años, 8 meses
Puntos: 0
Uso dinámico del Header Location PHP

Buen día, quisiera molestarles con la siguiente pregunta: Estoy creando un mini foro, al cual le di el siguiente orden:
1. Una tabla en la que se guardan la lista de los títulos de los foros, junto con su descripción; estos títulos quedan guardados con un código que se genera aleatoriamente.
2. Una tabla en la que se guardan los subtemas de cada foro. En esta tabla se guarda el código del foro al que pertenece el tema, y además se genera otro código aleatorio que identifique el tema como tal.
3. Una tabla en la que se guardan las respuestas de cada subtema.

Por el momento, he podido lograr crear una página en la que me muestre la lista de títulos de los foros, de manera que cada título quede como link, y al hacer clic en ese título, me redirecciona a una nueva página en la que me muestra los temas relacionados con el foro en el que se hizo clic. Eso lo hice usando la siguiente línea:
echo " <td><a href=\"lisfor.php?id='$id'\">",$ft["nomfo"],"</a></td>";
que se completa con dos variables.

Ahora, en la página donde sale la lista de temas, coloqué un formulario para crear nuevos temas, pero me gustaría que cuando se termine de hacer el query para ingresar los datos, se redireccione a la lista de temas, incluyendo el nuevo tema que se acaba de crear. El asunto es que como la dirección de la página incluye un id resultante de uan elección previa, no se cómo usar el header(Location) para que me lleve a la misma página.

No se si me hice entender; guardo el id en una variable, pero no la puedo pasar como argumento en el header(Location ) para que me muestre la lista de temas.

De antemano gracias por su colaboración.

Atte
Mantikor
  #2 (permalink)  
Antiguo 17/12/2013, 18:14
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años
Puntos: 2534
Respuesta: Uso dinámico del Header Location PHP

Cita:
Iniciado por boggiepopphantom Ver Mensaje
[...] pero no la puedo pasar como argumento en el header(Location ) para que me muestre la lista de temas.


¿Y por qué no? ¿Qué te lo impide?

Por como planteas el problema yo lo haría así:
Código PHP:
Ver original
  1. header("Location: script.php?valor=$id");
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #3 (permalink)  
Antiguo 17/12/2013, 18:29
Avatar de boggiepopphantom  
Fecha de Ingreso: agosto-2012
Mensajes: 29
Antigüedad: 11 años, 8 meses
Puntos: 0
Respuesta: Uso dinámico del Header Location PHP

Muchas gracias por tu pronta respuesta. Voy a probarlo inmediatamente!
  #4 (permalink)  
Antiguo 17/12/2013, 18:37
Avatar de boggiepopphantom  
Fecha de Ingreso: agosto-2012
Mensajes: 29
Antigüedad: 11 años, 8 meses
Puntos: 0
Respuesta: Uso dinámico del Header Location PHP

Hola paketetrueke, intenté como me dijiste, pero no me funciona. Mira, me redirecciona pero no con el id, cuando reviso la barra de direcciones, me aparece esta dirección

lisfor.php?id=$id

es decir, que no me reconoce lo que hay en la variable "$id".

Traté colocando la instrucción así

header('Location: lisfor.php?id="$id"');

Y la dirección a la que me envía es

lisfor.php?id="$id"

¿Podrías indicarme a qué se debe esto? de antemano gracias.
  #5 (permalink)  
Antiguo 17/12/2013, 18:43
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años
Puntos: 2534
Respuesta: Uso dinámico del Header Location PHP

Sucede así porque estás usando las comillas mal.

¿Si leíste bien mi ejemplo?

Yo estoy usando comillas dobles para no tener que concatenar la variable, pues se evalúa así.

Pero en tu ejemplo has usado comillas simples, lo cual no evalúa de ninguna manera la variable, ese es tu error.

Observa las diferencias:
Código PHP:
// MAL (comillas simples)
 
header('Location: lisfor.php?id="$id"');

// BIEN (comillas dobles)
 
header("Location: lisfor.php?id=$id"); 
En resumen: aprende a usar las comillas de manera correcta, y sobre todo, aprende las diferencias entre ambas.

Lee el siguiente tema: http://www.forosdelweb.com/f18/como-...s-bien-588701/
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #6 (permalink)  
Antiguo 17/12/2013, 19:10
Avatar de boggiepopphantom  
Fecha de Ingreso: agosto-2012
Mensajes: 29
Antigüedad: 11 años, 8 meses
Puntos: 0
Respuesta: Uso dinámico del Header Location PHP

Funciono! Ya me muestra la dirección con el id generado dinámicamente! Pero tengo un problema, y es que al redireccionar no me está realizando la consulta que toma el id de la dirección para busca todos los temas del foro en cuestión. Es decir, me redirecciona a

lisfor.php?id=k2wa8PVoun

Y se supone que lisfor.php comienza con la orden:

$id=$_GET['id'];

Probé con comilla simples y dobles, y luego viene esto

$db_connect = new mysqli("server","user","password","database");
$s=$db_connect->query("SELECT idfst,tiu,indft,tema,feccst,descfst FROM foro_st WHERE indft = $id ORDER BY idfst Asc");

Pero no me realiza la consulta, jejejeje

¿Algún manual acerca del uso del $_GET?

Muchas gracias por tu valiosa ayuda.
  #7 (permalink)  
Antiguo 17/12/2013, 19:11
Avatar de boggiepopphantom  
Fecha de Ingreso: agosto-2012
Mensajes: 29
Antigüedad: 11 años, 8 meses
Puntos: 0
Respuesta: Uso dinámico del Header Location PHP

PD: Ya me estoy leyendo el de las comillas.
  #8 (permalink)  
Antiguo 17/12/2013, 19:14
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años
Puntos: 2534
Respuesta: Uso dinámico del Header Location PHP

Cita:
¿Algún manual acerca del uso del $_GET?
Claro, aquí está: www.php.net/variables.external

Pero te adelanto que tu problema no tiene nada que ver con $_GET sino con tu consulta.

Es decir, tu consulta está mal redactada, ¿sabes por qué?

Si la URL es así: isfor.php?id=k2wa8PVoun

Entonces la consulta quedaría así:
Cita:
SELECT idfst,tiu,indft,tema,feccst,descfst FROM foro_st WHERE indft = k2wa8PVoun ORDER BY idfst Asc
¿Notas el error?

Como el valor "k2wa8PVoun" es texto, entonces deberías escapar adecuadamente dicha variable en tu consulta.

¿Si sabes que los valores textuales en SQL van entre comillas verdad?

Cita:
SELECT idfst,tiu,indft,tema,feccst,descfst FROM foro_st WHERE indft = 'k2wa8PVoun' ORDER BY idfst Asc
Revisa también una referencia de SQL que te hace mucha falta.
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #9 (permalink)  
Antiguo 17/12/2013, 20:07
Avatar de boggiepopphantom  
Fecha de Ingreso: agosto-2012
Mensajes: 29
Antigüedad: 11 años, 8 meses
Puntos: 0
Respuesta: Uso dinámico del Header Location PHP

Soy nuevo en el asunto, por eso me embarqué en esto del foro!

Bueno, te cuento que en el archivo previo lo tengo como tu dices, pero en este archivo, por alguna razón, sólo me funcionó sin la comilla, aún no sé porqué. Ahora, modifiqué el asunto y quedó de la siguiente manera:

$id=$_GET['id'];
$db_connect = new mysqli("server","user","password","database");
$s=$db_connect->query("SELECT idfst,tiu,indft,tema,feccst,descfst FROM foro_st WHERE indft = '$id' ORDER BY idfst Asc");

pero aún así no me funciona la consulta. Estoy pensando en reescribir nuevamente este archivo. ¿Alguna sugerencia?

De antemano muchas gracias!
  #10 (permalink)  
Antiguo 17/12/2013, 20:08
Avatar de boggiepopphantom  
Fecha de Ingreso: agosto-2012
Mensajes: 29
Antigüedad: 11 años, 8 meses
Puntos: 0
Respuesta: Uso dinámico del Header Location PHP

Soy nuevo en el asunto, por eso me embarqué en esto del foro!

Bueno, te cuento que en el archivo previo lo tengo como tu dices, pero en este archivo, por alguna razón, sólo me funcionó sin la comilla, aún no sé porqué. Ahora, modifiqué el asunto y quedó de la siguiente manera:

$id=$_GET['id'];
$db_connect = new mysqli("server","user","password","database");
$s=$db_connect->query("SELECT idfst,tiu,indft,tema,feccst,descfst FROM foro_st WHERE indft = '$id' ORDER BY idfst Asc");

pero aún así no me funciona la consulta. Estoy pensando en reescribir nuevamente este archivo. ¿Alguna sugerencia?

De antemano muchas gracias!
  #11 (permalink)  
Antiguo 17/12/2013, 20:11
Avatar de boggiepopphantom  
Fecha de Ingreso: agosto-2012
Mensajes: 29
Antigüedad: 11 años, 8 meses
Puntos: 0
Respuesta: Uso dinámico del Header Location PHP

Te cuento algo más: Ayer, trabajando en el script, sospeché que no estaba tomando el id desde la URL, por lo que, usando "echo", le pedía que mostrará lo que guardaba en las variables. Y no pude hacer que tomara el id desde la url; tuve que hacer una trampa adicional para obtener el id. Por eso te comentaba del asunto del $_GET.
  #12 (permalink)  
Antiguo 17/12/2013, 20:35
Avatar de boggiepopphantom  
Fecha de Ingreso: agosto-2012
Mensajes: 29
Antigüedad: 11 años, 8 meses
Puntos: 0
Respuesta: Uso dinámico del Header Location PHP

Bueno, pateketrueke, seguí tu consejo de revisar las comillas, y descubrí que el error estaba, además, en el archivo de la lista de títulos de foros; me explico, yo tenía esto

echo " <td><a href=\"lisfor.php?id='$id'\">",$ft["nomfo"],"</a></td>";

pero lo cambié por esto:

echo " <td><a href=\"lisfor.php?id=$id\">",$ft["nomfo"],"</a></td>";

Y ahora todo funciona sin problemas.

Muchas gracias!!!!
  #13 (permalink)  
Antiguo 17/12/2013, 20:37
Avatar de boggiepopphantom  
Fecha de Ingreso: agosto-2012
Mensajes: 29
Antigüedad: 11 años, 8 meses
Puntos: 0
Respuesta: Uso dinámico del Header Location PHP

Bueno, pateketrueke, seguí tu consejo de revisar las comillas, y descubrí que el error estaba, además, en el archivo de la lista de títulos de foros; me explico, yo tenía esto

echo " <td><a href=\"lisfor.php?id='$id'\">",$ft["nomfo"],"</a></td>";

pero lo cambié por esto:

echo " <td><a href=\"lisfor.php?id=$id\">",$ft["nomfo"],"</a></td>";

Y ahora todo funciona sin problemas.

Muchas gracias!!!!
  #14 (permalink)  
Antiguo 17/12/2013, 20:41
Avatar de Dalam  
Fecha de Ingreso: septiembre-2010
Mensajes: 409
Antigüedad: 13 años, 7 meses
Puntos: 56
Respuesta: Uso dinámico del Header Location PHP

aunque lo has solucionado, te voy a decir una funcion que lo mas seguro ni supieras que existe.

print_r($_GET);

Esto te escribiria en pantalla todas las variables get que esten definidas, esto es valido para cualquier array, ya sea get, post, cookie, file o uno definido por el usuario , tambien siendo valido para objetos y variables.
Para variables en vez de usar print_r puedes usar print, que es casi igual que un echo

Etiquetas: formulario, header, location, tabla, variable
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 22:31.