Foros del Web » Programando para Internet » PHP »

[SOLUCIONADO] Mostrar título en vez de id en URL Dinámica

Estas en el tema de Mostrar título en vez de id en URL Dinámica en el foro de PHP en Foros del Web. Buenas! Tengo un problema que seguro que tiene fácil solución, pero que no llego a dar con ella Tengo mi dirección web http://www.miweb.com/blog/55/ en la ...
  #1 (permalink)  
Antiguo 30/09/2013, 07:34
 
Fecha de Ingreso: agosto-2011
Mensajes: 19
Antigüedad: 12 años, 8 meses
Puntos: 0
Mostrar título en vez de id en URL Dinámica

Buenas!
Tengo un problema que seguro que tiene fácil solución, pero que no llego a dar con ella
Tengo mi dirección web http://www.miweb.com/blog/55/ en la que se muestra la dirección http://www.miweb.com/blog/index.php?=55
Es decir, una URL dinámica. El problema es que necesito que se muestre el título y no el ID. (http://www.miweb.com/blog/titulo-de-la-noticia
Para ello he creado un valor llamado url en la base de datos en el que aparece el título con guiones.

El código de /blog/index.php que utilizo es este:

Código:
    <?php 
if(isset($_GET['blog']))
{
    if(!empty($_GET['blog'])) // Si el valor de "noticia" no es NULL, continua con el proceso
    {
        $id_noticia = (int) mysql_real_escape_string($_GET['blog']);
        $query_noticias = mysql_query("SELECT titulo, fecha, texto FROM ".$db_table." WHERE id = '".$id_noticia."' ORDER BY fecha LIMIT 5"); // Ejecutamos la consulta
        if(mysql_num_rows($query_noticias) > 0) // Si existe la noticia, la muestra
        {
            while($columna = mysql_fetch_assoc($query_noticias)) // Realizamos un bucle que muestre todas las noticias, utilizando while.
            {
				echo ("<title>$columna[titulo]\n</title>");
				echo ("<h1>");
				echo ("<img src=\"../../files/images/deco/7.png\" width=\"40\" height=\"37\">");
				echo ("$columna[titulo]\n");
				echo ("</h1>");
				echo ("<div id=\"newsdate\">");
				echo ("$columna[fecha]\n");
				echo ("</div>");
				echo ("<div id=\"updating\">");
				echo ("$columna[texto]\n");
				echo ("</div>");


                echo '
                <table>
                    <tr>
                        <td><a class="noPrint" href="./../../news">Back</a></td>
                    </tr>
                </table>
                ';
            }
        }
        else
        {
            echo 'The entry you are looking for does not exists.'; // Si no, muestra un error
        }
    }
    else
    {
        echo 'You should choose an entry.'; // Si GET no recibe ningún valor, muestra un error
    }
}
?>
¿Podrían ayudarme, por favor?
¡GRACIAS!
  #2 (permalink)  
Antiguo 30/09/2013, 08:45
Avatar de xSkArx  
Fecha de Ingreso: marzo-2008
Ubicación: Chile
Mensajes: 945
Antigüedad: 16 años, 2 meses
Puntos: 96
Respuesta: Mostrar título en vez de id en URL Dinámica

Te conviene usar el id y el titulo, imaginate que tienes 2 noticias con el mismo nombre
__________________
Busca, lee y practica todo lo que puedas.
Usa siempre el buscador antes de postear.
Si posteas código, utiliza el HIGHLIGHT correcto.
  #3 (permalink)  
Antiguo 30/09/2013, 09:21
 
Fecha de Ingreso: agosto-2011
Mensajes: 19
Antigüedad: 12 años, 8 meses
Puntos: 0
Respuesta: Mostrar título en vez de id en URL Dinámica

Y... ¿cómo lo hago?
Gracias :)
  #4 (permalink)  
Antiguo 30/09/2013, 09:53
Avatar de NSD
NSD
Colaborador
 
Fecha de Ingreso: mayo-2012
Ubicación: Somewhere
Mensajes: 1.332
Antigüedad: 12 años
Puntos: 320
Respuesta: Mostrar título en vez de id en URL Dinámica

pues con .htacces por supuesto.

http://www.miweb.com/blog/55/ --> este es tu link actual
http://www.miweb.com/blog/55/nombre-...icia-blablabla
RewriteRule ^blog/([0-9]+)/(.*)$ index.php?id=$1
__________________
Maratón de desafíos PHP Junio - Agosto 2015 en FDW | Reglamento - Desafios
  #5 (permalink)  
Antiguo 30/09/2013, 10:13
 
Fecha de Ingreso: agosto-2011
Mensajes: 19
Antigüedad: 12 años, 8 meses
Puntos: 0
Respuesta: Mostrar título en vez de id en URL Dinámica

Gracias por contestar, pero me da error :(
  #6 (permalink)  
Antiguo 30/09/2013, 10:43
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años, 1 mes
Puntos: 2534
Respuesta: Mostrar título en vez de id en URL Dinámica

Cita:
Iniciado por NoSeNadaxD Ver Mensaje
Gracias por contestar, pero me da error :(
Gracias por responder, pero... ¿debemos adivinar el error que recibes?

Vamos, que sólo decir "pero me da error" ¿qué crees que nos podría indicar?

Absolutamente nada.

Si no muestras el código actual que te da error ni los mensajes de error pertinentes, ¿cómo esperas que alguien te ayude?

Recuerda que estamos en un foro técnico, no hay adivinos por acá.
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #7 (permalink)  
Antiguo 30/09/2013, 13:01
 
Fecha de Ingreso: agosto-2011
Mensajes: 19
Antigüedad: 12 años, 8 meses
Puntos: 0
Respuesta: Mostrar título en vez de id en URL Dinámica

xDDD
Me tira el error 404. O sea, que no existe y no lo encuentra.

El .htaccess que sirve para hacer dinámica es
Código:
RewriteEngine on
RewriteRule ^(\w+)/?$ index.php?blog=$1
Y el código del index.php es
Código:
    <?php 
if(isset($_GET['blog']))
{
    if(!empty($_GET['blog'])) // Si el valor de "noticia" no es NULL, continua con el proceso
    {
        $id_noticia = (int) mysql_real_escape_string($_GET['blog']);
        $query_noticias = mysql_query("SELECT titulo, fecha, texto FROM ".$db_table." WHERE id = '".$id_noticia."' ORDER BY fecha LIMIT 5"); // Ejecutamos la consulta
        if(mysql_num_rows($query_noticias) > 0) // Si existe la noticia, la muestra
        {
            while($columna = mysql_fetch_assoc($query_noticias)) // Realizamos un bucle que muestre todas las noticias, utilizando while.
            {
				echo ("<title>$columna[titulo]\n</title>");
				echo ("<h1>");
				echo ("<img src=\"../../files/images/deco/7.png\" width=\"40\" height=\"37\">");
				echo ("$columna[titulo]\n");
				echo ("</h1>");
				echo ("<div id=\"newsdate\">");
				echo ("$columna[fecha]\n");
				echo ("</div>");
				echo ("<div id=\"updating\">");
				echo ("$columna[texto]\n");
				echo ("</div>");


                echo '
                <table>
                    <tr>
                        <td><a class="noPrint" href="./../../news">Back</a></td>
                    </tr>
                </table>
                ';
            }
        }
        else
        {
            echo 'The entry you are looking for does not exists.'; // Si no, muestra un error
        }
    }
    else
    {
        echo 'You should choose an entry.'; // Si GET no recibe ningún valor, muestra un error
    }
}
?>
Hasta aquí todo bien. Cambia /blog/index.php?id=55 por /blog/55
El problema es que necesito que en vez de /blog/55 necesito /blog/titulo-de-la-noticia

He creado una columna llamada url donde sale titulo-de-la-noticia

No sé si se hará así, o habrá una forma más fácil.

Muchas gracias!
  #8 (permalink)  
Antiguo 30/09/2013, 13:11
 
Fecha de Ingreso: junio-2013
Ubicación: La Eliana
Mensajes: 38
Antigüedad: 10 años, 10 meses
Puntos: 0
solucion

Si te esperas a que llegue a mi casa te muestro la solucion, solo usando .htaccess, uso lo mismo para mi sistema de noticias
  #9 (permalink)  
Antiguo 30/09/2013, 13:31
 
Fecha de Ingreso: junio-2013
Ubicación: La Eliana
Mensajes: 38
Antigüedad: 10 años, 10 meses
Puntos: 0
Respuesta: Mostrar título en vez de id en URL Dinámica

Si tu get es:
http://miweb.com/noticia.php?titulo=...eltitulo&id=23

Se te mostraria

http://miweb.com/noticia/Esteeseltitulo-23

y tu htaccess quedaria asi

Rewriterule ^(.*)/(.*)-(.*)$ $1.php?titulo=$2&id=$3

El id se tendria que mostrar para que te mostrasen los datos
  #10 (permalink)  
Antiguo 30/09/2013, 14:40
 
Fecha de Ingreso: agosto-2011
Mensajes: 19
Antigüedad: 12 años, 8 meses
Puntos: 0
Respuesta: Mostrar título en vez de id en URL Dinámica

:D ¡Muchas gracias!

Ahora queda web.com/blog/55titulonoticia

Pero si pongo guiones tira error.

Bueno, no pasa nada.

Gracias :3

Etiquetas: mysql, select, sql, url, vez
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 01:05.