Bienvenido a datoweb.com!! En este foro podrás encontrar ayuda sobre diseño y desarrollo web en general. Si quieres formar parte de esta comunidad para pedir ayuda o colaborar ayudando a otros usuarios del foro solo tienes que registrarte desde el siguiente enlace: Registrarse en el Foro

Urlamigables desde la pagina ver_post.php.

Hola a todos. Ya estoy a punto de acabar este gran tutorial y me van surgiendo algunas cosillas que me gustaría pulir con vuestra ayuda.
La función urlamigables funciona bien siempre y cuando esta venga desde la pagina index.php.
En la pagina ver_post.php también tengo enlaces desde últimos comentarios a sus respectivos posts.
Mi pregunta es:

Si ya estoy dentro de la pagina ver_post.php, como hago para saltar a otro post??.

Pongo los 2 ejemplos.

Desde el index hacia un post determinado el link queda asi:
mipaginaweb/blog/15/el-titulo-del-post-numero-15.html.

Pero cuando ya estoy en la pagina ver_post.php el link queda asi:
mipaginaweb/blog/15/15/el-titulo-del-post-numero-15.html.

Me duplica la id, me imagino que es lógico,y por lo tanto no me encuentra la pagina.

A ver si alguien me puede echar una mano.

Gracias.
0
Puntos
1388
Visitas
8
Resp
Por salva hace 110 meses
Principiante
Respuesta #1
hola buenas, enseñanos el código que tienes puesto para que imprima:
mipaginaweb/blog/15/15/el-titulo-del-post-numero-15.html

mas que nada es para ver de donde sale ese 15 extra
0
Puntos
Por alber hace 110 meses
Administrador
Respuesta #2
Hola. Gracias por tu rápida respuesta.
No se si me he explicado bien. No es que me duplique la id del post, si no que cuando estoy por ejemplo en el post nº 15 y quiero acceder a otro post por el link de últimos comentarios, me devuelve la id del post, añadida a la id del post que estoy visualizando.
ejemplo.

Estoy viendo los comentarios en el post 15 y en el link de últimos comentarios quiero acceder a los últimos comentarios del post 22, el enlace a este post me saca mipaginaweb/blog/titulo-del-post-numero-15/22/titulo-del-post-numero-22.html.

<!-- Widget recent posts -->
<div class="widget widget-recent-posts">
<h3 class="widget-title underlined">Últimos comentarios</h3>
<div class="widget-body">

<?php do { ?>

<div class="w-post">
<div class="w-post-image">
<a href="<?php echo $row_totalcomentarios['urlamigable']; ?>.html"><img src="../../images/Imagesblog/<?php echo obtener_foto ($row_totalcomentarios ['idpost']) ?>" alt="image"></a>
</div>
<div class="w-post-content">
<a href="#">
<span class="date"><?php echo ucfirst (nombre ($row_totalcomentarios ['autorcomentario'])) ?> <?php echo strtolower (tiempo_transcurrido ($row_totalcomentarios ['fecha'])) ?></span>
<br>

<p><?php $titulolargo=$row_totalcomentarios ['comentario']; if ((strlen($titulolargo))> 27) { $titulolargo=substr($titulolargo, 0, 27)."..."; }
echo ucfirst(strtolower($titulolargo))?></p>
</a>
</div>
</div>
<?php } while ($row_totalcomentarios = mysql_fetch_assoc($totalcomentarios)); ?>
</div>
</div>

<!-- / Widget recent posts -->

Esta es la consulta que utilizo para el link y que al mismo tiempo me sirve para sacar los 5 últimos comentarios. Decir que para esto he tenido que añadir un campo urlamigable en la tabla comentarios y cuando añado un nuevo post, me añade la urlamigable en esta tabla.

$maxRows_totalcomentarios = 5;
$pageNum_totalcomentarios = 0;
if (isset($_GET['pageNum_totalcomentarios'])) {
$pageNum_totalcomentarios = $_GET['pageNum_totalcomentarios'];
}
$startRow_totalcomentarios = $pageNum_totalcomentarios * $maxRows_totalcomentarios;

mysql_select_db($database_conexionwebpaqui, $conexionwebpaqui);
$query_totalcomentarios = "SELECT * FROM comentarios ORDER BY comentarios.idcomentario desc";
$query_limit_totalcomentarios = sprintf("%s LIMIT %d, %d", $query_totalcomentarios, $startRow_totalcomentarios, $maxRows_totalcomentarios);
$totalcomentarios = mysql_query($query_limit_totalcomentarios, $conexionwebpaqui) or die(mysql_error());
$row_totalcomentarios = mysql_fetch_assoc($totalcomentarios);

if (isset($_GET['totalRows_totalcomentarios'])) {
$totalRows_totalcomentarios = $_GET['totalRows_totalcomentarios'];
} else {
$all_totalcomentarios = mysql_query($query_totalcomentarios);
$totalRows_totalcomentarios = mysql_num_rows($all_totalcomentarios);
}
$totalPages_totalcomentarios = ceil($totalRows_totalcomentarios/$maxRows_totalcomentarios)-1;
0
Puntos
Por salva hace 110 meses
Principiante
Respuesta #3
entiendo, lo que tienes que hacer es usar la url absoluta, cambias esto:
<a href="<?php echo $row_totalcomentarios['urlamigable']; ?>.html">Enlace</a>
por esto:
<a href="<?php echo $urlWeb.$row_totalcomentarios['urlamigable']; ?>.html">Enlace</a>
o por esto:
<a href="http://localhost/mipaginaweb/<?php echo $row_totalcomentarios['urlamigable']; ?>.html">Enlace</a>
prueba y me comentas
0
Puntos
Por alber hace 110 meses
Administrador
Respuesta #4
Hola alber.

Si que funciona. No había caído que al no ser el index había que meterle antes la url absoluta.

saludos y muchas gracias.
0
Puntos
Por salva hace 110 meses
Principiante
Respuesta #5
salva dijo:
Hola alber.

Si que funciona. No había caído que al no ser el index había que meterle antes la url absoluta.

saludos y muchas gracias.
De nada salva me alegro de q te funcione
0
Puntos
Por alber hace 110 meses
Administrador
Respuesta #6
hola gente hago una consulta. tengo un sitio de noticias en el cual traigo las notas de la db por id, osea en el index muestro el titulo y la img de la noticia. Para acceder a la noticia linkeo a <a href="nota.php?id=<?php echo $portadita[0];?>" style="color:#000">, donde $portadita[0]; trae el id y direcciona a miweb.com/nota.php?id=

mi archivo .htaccess:

Options +FollowSymLinks
RewriteEngine on
#4 variables
Rewriterule ^(.*)/(.*),(.*)/(.*),(.*)/(.*),(.*)/(.*),(.*)/$ $1.php?id=$2=$3&$4=$5&$6=$7&$8=$9
#3 variables
Rewriterule ^(.*)/(.*),(.*)/(.*),(.*)/(.*),(.*)/$ $1.php?id=$2=$3&$4=$5&$6=$7
#2 variables
Rewriterule ^(.*)/(.*),(.*)/(.*),(.*)/$ $1.php?id=$2=$3&$4=$5
#1 variable
Rewriterule ^(.*)/(.*),(.*)/$ $1.php?id=$2=$3

RewriteRule ^nota/(.+)$ nota.php?id=$1

en el archivo index.php tengo el siguiente codigo:

//Iniciamos o continuamos la sesión encargada de evitar el bucle infinito
session_name("url_amigable");
session_start();
//Almacenamos datos del server, script y variables (pasadas por GET)
$Server=$_SERVER['SERVER_NAME'];
$Script=$_SERVER['PHP_SELF'];
$Variables=$_SERVER['QUERY_STRING'];

//Verificando si tiene variables por GET
//y no se han pasado datos mediante un form por POST
//ya q al redireccionar un post puede ocasionar errores.
//Tambien verificamos que la variable de sesión 'Listo'
//sea diferente a 1, esto nos eviara un bucle infinito.

if(!empty($Variables) && $_SERVER['REQUEST_METHOD']=='GET' && $_SESSION['Listo']!=1){
//Si tiene variables pasadas por GET se procede a hacer el cambio.
//1. Agrupando $Variables por "variable=valor" en el array $Variable.
$Variable=explode("&",$Variables);
//2. Sustituyendo "=" por "," y concadenandolo en variable $Amigable.
for($i=0;$i<count($Variable);$i++){
$Amigable.="/".str_replace("=",",",$Variable[$i]);
}
//3. Quitando la extension ".php" a $Script para simular un directorio.
$Dir=str_replace(".php","",$Script);
//4. Generando la URL Amigable.
$URL_AMIGABLE="http://".$Server.$Dir.$Amigable."/";
//5. Colocando la variable de sesión 'Listo' a 1 para evitar el bucle infinito
// al redireccionar la web.
$_SESSION['Listo']=1;
//6. Redireccionando a la url amigable
header("Location: $URL_AMIGABLE");
//7. Exit hará que culmine hasta este punto el script, si no estuviera 'exit'
// el script continuaría ejecutándose y llegaría hasta el final del mismo, es decir,
// a la parte donde colocamos a la variable de sesión 'Listo' en cero, originandose
// entonces un bucle infinito.
exit;
}
//Cambie $_URL_BASE por la ruta raiz de su web, ya que al simular la url amigable
//directorios, hará que no muestre adecuadamente los origenes de los recursos que
//llama su página web.
$_URL_BASE="http://".$Server."/nota.php";


esto me devuelve la siguiente url:

miweb.com/nota.php?id=<p>Rastros%20de%20ADN%20en%20la%20víctima</p>

yo lo que quiero es que en vez de mostrar el id muestre el titulo de la nota. pero me trae hasta el html que tiene el titulo.

Si me pueden dar mano, me solucionan un gran dolor de cabeza jeje.

Gracias gente!!!!
0
Puntos
Por Federico hace 100 meses
Principiante
Respuesta #7
Federico buenas, tienes que crear un nuevo tema para hacer nuevas consultas.. saludos
0
Puntos
Por alber hace 100 meses
Administrador
Respuesta #8
hola alber gracias!!!
0
Puntos
Por Federico hace 100 meses
Principiante
Compartir en facebook
Compartir en twitter
Compartir
Para comentar Inicia sesión o Registrate