Foros del Web » Programando para Internet » PHP »

Asignar valor de variables a otras...

Estas en el tema de Asignar valor de variables a otras... en el foro de PHP en Foros del Web. Bueno, mas o menos lo que quiero hacer es, doy como ejemplo Foros del Web, que tiene URL's amigables, es decir, en ves de decir: ...
  #1 (permalink)  
Antiguo 16/05/2009, 21:19
 
Fecha de Ingreso: enero-2009
Mensajes: 34
Antigüedad: 15 años, 2 meses
Puntos: 1
Pregunta Asignar valor de variables a otras...

Bueno, mas o menos lo que quiero hacer es, doy como ejemplo Foros del Web, que tiene URL's amigables, es decir, en ves de decir:
ttp://forosdelweb.com/showthread.php?cat=f18&t=4586543 (un ejemplo no se si es asi)
aparece el titulo del post, ejemplo:
ttp://forosdelweb.com/f18/quien-me-ayuda-a-hacer-urls-amigables-t438544.html
bueno, eso...
tengo este codigo (el php que sigue mas adelante, al final de todo), que me pasa las urls de mi web como
ttp://cdtmweb.com.ar/post/ID_DEL_POST(1,2,3) con un .htaccess sino seria
ttp://cdtmweb.com.ar/?topic=ID_DEL_POST(1,2,3)

lo que yo quiero es que en vez de pasarme como "/post/ID_DEL_POST" me lo pase como "/post/TITULO_DEL_POST.html", por eso deben fijarse en la linea 64 del siguiente PHP:
ECHO '&nbsp;<span title="' .$Stick1['subject'] . '"><a href="'; echo $url; echo '/post/',$Stick1['ID_TOPIC'], '" >' . $Stick1['subject'] . '</a></span></td></tr></table>'; }

Código PHP:
<?php
require('Settings.php');
$con mysql_connect($db_server$db_user$db_passwd) OR die("No se puedo conectar a la BDD ".mysql_error()."...!!!");
mysql_select_db($db_name$con) OR die("No se pudo seleccionar la BDD ".mysql_error()."...!!!");

 
$RegistrosAMostrar=20;
 if(isset(
$_GET['pag'])){
  
$RegistrosAEmpezar=($_GET['pag']-1)*$RegistrosAMostrar;
  
$PagAct=$_GET['pag'];
 }else{
  
$RegistrosAEmpezar=0;
  
$PagAct=1;
 }
$id=$_GET['id'];
$db_prefix 'smf_';

echo
'<div class="box_posts">';

if(!
$id == ''){

$whe="where `smf_messages`.`ID_BOARD`=".$id;
}
$request mysql_query("
SELECT `smf_messages`.`ID_TOPIC`,`smf_messages`.`ID_BOARD`,`smf_messages`.`hiddenOption`,`smf_messages`.`subject`,`smf_boards`.`name`,`smf_topics`.`isSticky` as sitiy FROM smf_messages 
left join 
(`smf_boards`,`smf_topics`) 
on 
`smf_messages`.`ID_TOPIC`=`smf_topics`.`ID_TOPIC` and
`smf_boards`.`ID_BOARD`=`smf_messages`.`ID_BOARD`
 $whe 
group by `smf_messages`.`ID_TOPIC`
ORDER by `smf_topics`.`isSticky` desc , `smf_messages`.`ID_MSG` desc
LIMIT $RegistrosAEmpezar, $RegistrosAMostrar"
,$con);

//aqui pregunto si esta activo url amigable en la base de datos
$verifica mysql_query("
SELECT value 
FROM smf_settings
WHERE variable= 'queryless_urls' "
,$con);
$row_Recordset mysql_fetch_assoc($verifica);
$urlamigable mysql_num_rows($verifica);

if (
$row_Recordset['value'] == 1){
include(
'includes/urls_amigables.php');
while(
$Stick1=mysql_fetch_array($request)){
echo 
'<table width="100%"><tr><td width="100%"><div class="box_icono4"><img title="'.$Stick1['name'].'" src="'; echo $url; echo '/Themes/default/images/post/icono_'.$Stick1['ID_BOARD'].'.gif" ></div>';
if (
$context['user']['is_guest']){if ($Stick1['hiddenOption']){echo'<img title="Post privado" src="'; echo $url; echo '/Themes/default/images/icons/icono-post-privado.gif">';} 
else echo
'';}
IF(
$Stick1['sitiy']){
echo
'<img title="Sticky" src="'; echo $url; echo '/Themes/default/images/icons/show_sticky.gif" width="10" height="10">';
}
ECHO 
'&nbsp;<span title="' .$Stick1['subject'] . '"><a href="'; echo $url; echo '/post/',urls_amigables($Stick1['name']),'/',$Stick1['ID_TOPIC'],'/',urls_amigables($Stick1['subject']) ,'.html" >' $Stick1['subject'] . '</a></span></td></tr></table>';
}}
else { 
//aqui sin url amigable
while($Stick1=mysql_fetch_array($request)){
echo 
'<table width="100%"><tr><td width="100%"><div class="box_icono4"><img title="'.$Stick1['name'].'" src="'; echo $url; echo '/Themes/default/images/post/icono_'.$Stick1['ID_BOARD'].'.gif" ></div>';
if (
$context['user']['is_guest']){if ($Stick1['hiddenOption']){echo'<img title="Post privado" src="'; echo $url; echo '/Themes/default/images/icons/icono-post-privado.gif">';} 
else echo
'';}
IF(
$Stick1['sitiy']){
echo
'<img title="Sticky" src="'; echo $url; echo '/Themes/default/images/icons/show_sticky.gif" width="10" height="10">';
}
ECHO 
'&nbsp;<span title="' .$Stick1['subject'] . '"><a href="'; echo $url; echo '/post/',$Stick1['ID_TOPIC'], '" >' $Stick1['subject'] . '</a></span></td></tr></table>'; }
}


//******--------determinar las páginas---------******//
 
if($id == ''){
 
$NroRegistros=mysql_num_rows(mysql_query("SELECT * FROM smf_messages",$con));}
 else
 {
$NroRegistros=mysql_num_rows(mysql_query("SELECT * FROM smf_messages WHERE ID_BOARD = $id",$con));}


 
$PagAnt=$PagAct-1;
 
$PagSig=$PagAct+1;
 
$PagUlt=$NroRegistros/$RegistrosAMostrar;
 
$Res=$NroRegistros%$RegistrosAMostrar;
 
// si hay residuo usamos funcion floor para que me
 // devuelva la parte entera, SIN REDONDEAR, y le sumamos
 // una unidad para obtener la ultima pagina
 
if($Res>0$PagUlt=floor($PagUlt)+1;
echo
'</div><div class="box_posts"><center><font color="grey" size="2">';
if(
$id == ''){
 if(
$PagAct>1) echo "<a style='cursor: pointer; cursor: hand;' href='"$scripturl ."/?pag=$PagAnt'>< anterior</a>";
 if(
$PagAct>1) echo " || ";
 if(
$PagAct<$PagUlt)  echo "<a style='cursor: pointer; cursor: hand;' href='"$scripturl ."/?pag=$PagSig'>siguiente ></a>";
}else
{
 if(
$PagAct>1) echo "<a style='cursor: pointer; cursor: hand;' href='"$scripturl ."/?pag=$PagAnt&id=$id)'>< anterior</a>";
 if(
$PagAct>1) echo " || ";
 if(
$PagAct<$PagUlt)  echo "<a style='cursor: pointer; cursor: hand;' href='"$scripturl ."/?pag=$PagSig&id=$id)'>siguiente ></a>";
}
echo
'</font></center></div>';
?>
como hago para que la variable %Stick1['ID_TOPIC'] obtenga el valor de ['subject'] sin perder su condicion de ID_TOPIC para que no me de error y me redireccione, nose si se entendio, que contenga dos valores igual uno del otro, uno con un ID y el otro con el TITULO

Muchas Gracias!!
Espero respuestas, hasta luego!

Última edición por pidoayudaenphp; 17/05/2009 a las 11:06
  #2 (permalink)  
Antiguo 17/05/2009, 11:18
Avatar de Ronruby  
Fecha de Ingreso: julio-2008
Ubicación: 18°30'N, 69°59'W
Mensajes: 4.879
Antigüedad: 15 años, 8 meses
Puntos: 416
Respuesta: Asignar valor de variables a otras...

No entiendo que es lo que quieres al final ... ¿Quieres que las URL te aparezcan con el titulo y el ID a la vez o que?

EDIT: Una variable no puede contener 2 valores iguales a uno (Pero una variable tipo array si puede contener varios valores, lo que suena loco es lo de "iguales a uno").

Lo que tienes que hacer es cambiar la expresion regular de tu .htaccess para que acepte titulo-ID.html o ID-titulo.html
De cualquier manera tienes que pasar un ID, porque valerse del titulo no es una muy buena idea (pueden haber entradas con el mismo titulo). Esto se discutio en otro tema, pero no recuerdo cual en este momento.

En tu .htaccess cambia la expresion regular a algo como:
post/([0-9]+)-(.*).html
Y que redireccione a: pagina.php?id=$1&titulo=$2

Entonces para ir a la noticia, tienes que imprimir tus titulos como: 511545-esto-es-una-noticia.html

Eso si, crea una función que elimine caracteres especiales de el titulo y la limpie.
Ya de esa manera puedes seguir procesando tu archivo normalmente, y para hacer lo que hace forosdelweb que al poner un titulo incorrecto pero el ID correctamente te redirecciona al post con el titulo correcto tienes que obtener el titulo de la noticia haciendo la consulta usando la variable $_GET['id'], comparas los titulos (ambos pasados por tu función), si son iguales entonces prosigues, de lo contrario redireccionas a la noticia/post con el titulo correcto (pasando el mensaje de error 301, movido permanentemente, esto para los buscadores).

Última edición por Ronruby; 17/05/2009 a las 12:00
  #3 (permalink)  
Antiguo 17/05/2009, 15:56
 
Fecha de Ingreso: enero-2009
Mensajes: 34
Antigüedad: 15 años, 2 meses
Puntos: 1
Respuesta: Asignar valor de variables a otras...

Código PHP:
ECHO '&nbsp;<span title="' .$Stick1['subject'] . '"><a href="'; echo $url; echo '/post/',$Stick1['ID_TOPIC'],">' . $Stick1['subject'] . '</a></span></td></tr></table>'; } 
gracias Ronruby. pero como hago para que aparezca cdtmweb.com.ar/post/5254/titulo/hay-que-quilombo-es-esto.html??
trate de todas las maneras pero siempre me da error ( de esos que comienzan con T_ (T_ECHO T_STRING))
y ya me esta cansando un poquito xD
muchas gracias che, suerte...
  #4 (permalink)  
Antiguo 17/05/2009, 20:22
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 17 años, 9 meses
Puntos: 2135
Respuesta: Asignar valor de variables a otras...

Revisa esto: Como Usar las Comillas Bien

Tienes que usar las comillas correctamente para eso.

Saludos.
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:41.