Foros del Web » Programando para Internet » PHP »

Enviar variables y recuperarlas

Estas en el tema de Enviar variables y recuperarlas en el foro de PHP en Foros del Web. Buenas tardes a todos, tengo el siguiente problema en un buscador: Desde la página web.php tengo que enviar las variables título, descripción y URL a ...
  #1 (permalink)  
Antiguo 04/03/2009, 11:37
 
Fecha de Ingreso: noviembre-2008
Mensajes: 25
Antigüedad: 15 años, 6 meses
Puntos: 0
Enviar variables y recuperarlas

Buenas tardes a todos, tengo el siguiente problema en un buscador:

Desde la página web.php tengo que enviar las variables título, descripción y URL a la página plantilla.php y lo consigo hacer correctamente.

El problema es que la URL en la que paso variables utiliza urlencode y es muy poco amigable: ej:

/plantilla.php?w=AQUIVIENELAWEBCONCARACTERESRAROS%2 Fviajeliterario%2F&y=Viaje+Literario&d=Un+paseo+po r+la+Literatura

Lo ideal sería que pasará la variable de esta forma:
/www(punto)alohacriticon.com.html

Sé que para esto tendría que usar Modrewrite, lo que pasa es que antes tengo que hacer más amigable la URL (Quitando el http, un, por, la etc.) y luego no sabría como recuperar toda la información en la página plantilla.php.

La otra opción es que mande sólo una variable por ej. la URL y que en la página plantilla.php a partir de la URL extraiga el título y descripción, pero tampoco sé muy bien como se consigue esto.

Llevo tiempo intentando solucionar esto, y cualquier ayuda sería de mucha importancia.
  #2 (permalink)  
Antiguo 04/03/2009, 12:01
Avatar de Ronruby  
Fecha de Ingreso: julio-2008
Ubicación: 18°30'N, 69°59'W
Mensajes: 4.879
Antigüedad: 15 años, 9 meses
Puntos: 416
Respuesta: Enviar variables y recuperarlas

Lo ideal es siempre mandar el ID, en vez de el titulo, descripcion y URL.

Por ejemplo veamos la URL de este mismo tema:
http://www.foros delweb.com/f18/envi...rarlas-676637/
El numero al final indica el ID de el tema, sin embargo, el nombre no importa en lo absoluto, es solo para cuestiones de SEO. Lo que se recupera es el ID.
Si tu pusieras en la barra de direcciones:
www.forosdelweb.com/f18/hola-676637/
Aun asi te lleva a este mismo tema. (Lo de que te redirija con el titulo correcto ya es otra cosa, pero es para darte una idea).

Para eliminar todo lo que no sea numeros o palabras, puedes usar expresiones regulares.
Asi reemplazas todo lo que no quieras por "-" y tambien reemplazas las palabras que no te interesan (un, por, la, etc...)

preg_replace("/[^a-z0-9]+/i", "-", $foobar);

Lo que yo hago es crear una funcion que convierta el titulo que le pase y el id en una url amigable.

Asi cuando vallas por ejemplo a mostrar tus noticias, dentro de tu bucle harias algo como:
Código PHP:
<?php
while($row mysql_fetch_assoc($result)) {
  echo 
$row['titulo']."<br />\n";
  echo 
$row['descripcion']."<br />\n";
  echo 
"<a href=\"noticias/".urlAmigable($row['titulo'], $row['id'])."\" title=\"{$row['descripcion']}\">Ver m&aacute;s...</a><br />\n";
}
?>
  #3 (permalink)  
Antiguo 04/03/2009, 12:39
 
Fecha de Ingreso: noviembre-2008
Mensajes: 25
Antigüedad: 15 años, 6 meses
Puntos: 0
Respuesta: Enviar variables y recuperarlas

Buenas tardes Ronruby, gracias por la rápida respuesta.

Ya tengo puesta una función para hacer amigable que funciona bien:

function u($entrada){
$ok = strtolower(strtr($entrada, "áéíóúñÁÉÍÓÚÑü", "aeiounaeiounu"));
$find = array(' ', '&', '\r\n', '\n', '+');
$ok = str_replace ($find, '-', $ok);
$ok=str_replace("-de-", "-", $ok);
$ok=str_replace("-del-", "-", $ok);
$ok=str_replace("-en-", "-", $ok);
$ok=str_replace("-l-", "-", $ok);
$ok=str_replace("-y-", "-", $ok);
$ok=str_replace("-/-", "-", $ok);
$ok=str_replace("/.", ".", $ok);
$ok=str_replace("--","-",$ok);
return $ok;
}

La URL origen sería algo así: miweb.com/webdeotro.com

Lo que necesitaría saber es como extraer a partir de la variable webdeotro.com el resto de datos de mi db: titulo, descripción.. y mostrarlos en plantilla.php

Muchas gracias de antemano
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 03:34.