Ver Mensaje Individual
  #6 (permalink)  
Antiguo 14/07/2003, 05:54
Avatar de ferny
ferny
Il capo della mafia
 
Fecha de Ingreso: febrero-2002
Ubicación: Al final del cable
Mensajes: 10.080
Antigüedad: 22 años, 8 meses
Puntos: 55
Aquí de nuevo
He modificado el script y he hecho algunas mejoras:
- He corregido un bug por el cual en navegadores Netscape/Mozilla el ancho de la marquesina es un poco mayor. Ahora se verá igual de ancho en cualquier navegador.
- He optimizado las consultas mysql dando como resultado que ahora el script tarda en ejecutarse menos de la mitad de tiempo que lo hacía antes.
- He arreglado un bug en el corte de caracteres para mensajes largos.

Por ejemplo antes para mostrar 12 mensajes en el foro eran necesarias 37 consultas a la base de datos. Ahora con 13 basta.

Bien, espero que les sirva
Código PHP:
<? 

// Últimos mensajes publicados en foros phpBB2. 
// Creado por XeRGio 
// www.xergio.net 
//
// Modificado por Ferny
// www.mundodivx.com
// 
// Edita lo que viene a continuación. Cambia solo lo que hay entre comillas "": 

$directorio "public/foros"//Carpeta donde esta situado el foro. No empieces ni acabes con / 
$mostrar "12"//Número de mensajes a mostrar. 
$caracteres "22"//Caracteres que se mostrarán de cada línea. 

// Lo que viene ahora no lo toques para nada!!! a no ser que sepas de qué va el tema... 

include("$directorio/config.php"); 

unset(
$total);

$conexion mysql_connect($dbhost,$dbuser,$dbpasswd); 
mysql_select_db($dbname,$conexion); 

//Si tienes un foro oculto o restringido, sólo añade WHERE forum_id!=X delante de ORDER BY y sustituyendo la X por el nº del foro
$consulta "SELECT * FROM ".$table_prefix."posts ORDER BY post_time DESC LIMIT $mostrar"
$result mysql_query($consulta); 

while (
$row mysql_fetch_array($result)) { 
    
$consulta "SELECT 
        "
.$table_prefix."forums.forum_id, 
        "
.$table_prefix."forums.forum_name, 
        "
.$table_prefix."users.username, 
        "
.$table_prefix."topics.topic_id, 
        "
.$table_prefix."topics.topic_title 
        FROM "
.$table_prefix."forums, ".$table_prefix."users, ".$table_prefix."topics 
        WHERE "
.$table_prefix."forums.forum_id='$row[forum_id]' AND ".$table_prefix."users.user_id='$row[poster_id]' AND ".$table_prefix."topics.topic_id='$row[topic_id]'";
    
    
$result2 mysql_query ($consulta);
    
$res mysql_fetch_row($result2);
    
    
$nombreentero $res[4];
    
    
// Si el título del mensaje es muy largo, lo cortamos
    
if (strlen($res[4]) > $caracteres) { 
        
$res[4] = substr($res[4],0,$caracteres-3)."..."
    } 
    
    
// Construimos
    
$total.="&nbsp;<font size=\"1\" face=\"arial\"><a href=\"".$server.$directorio."/viewtopic.php?t=$row[topic_id]#$row[post_id]\" title=\"$nombreentero\"><font color=\"#000099\">$res[4]</font></a><br>&nbsp;En <a href=\"".$server.$directorio."/viewforum.php?f=$res[0]\"><font color=\"#000099\">$res[1]</font></a><br>&nbsp;Por <font color=\"#ff0000\">$res[2]</font></font><hr noshade size=\"1\" color=\"#000000\" width=\"100\">";


// Liberamos recursos y cerramos conexión
mysql_free_result($result); 
mysql_free_result($result2); 
mysql_close($conexion);
?> 
<script language="JavaScript1.2">

/*
Cross browser Marquee II- © Dynamic Drive (www.dynamicdrive.com)
For full source code, 100's more DHTML scripts, and TOS, visit http://www.dynamicdrive.com
Credit MUST stay intact
*/

/*
NOTA: con lo siguiente se soluciona el bug del ancho de borde bajo navegadores Netscape y Mozilla.
En ellos el borde NO pertenece a las dimensiones de la capa, pero en Opera y Explorer SI pertenece,
lo cual hace que en Netscape/Mozilla se vea un poco más grande. Por ello reducimos el ancho en
estos 2 últimos navegadores
*/

//Specify the marquee's width (in pixels)
var marqueewidth = 125; // Ancho de la marquesina
var anchoborde = 1; // Ancho del borde de la marquesina, en pixeles (debe ser igual al borde de la capa, especificado abajo del todo)

//Corregimos el bug anteriormente citado...
if (navigator.appName=="Netscape") {
    marqueewidth = marqueewidth - 2*anchoborde;
}

//Specify the marquee's height
var marqueeheight=200
//Specify the marquee's marquee speed (larger is faster 1-10)
var marqueespeed=1
//Pause marquee onMousever (0=no. 1=yes)?
var pauseit=1

//Specify the marquee's content
//Keep all content on ONE line, and backslash any single quotations (ie: that\'s great):

var marqueecontent='<? echo addslashes($total); ?>' // ¡¡¡NO TOCAR!!!

////NO NEED TO EDIT BELOW THIS LINE////////////

marqueespeed=(document.all)? marqueespeed : Math.max(1, marqueespeed-1) //slow speed down by 1 for NS
var copyspeed=marqueespeed
var pausespeed=(pauseit==0)? copyspeed: 0
var iedom=document.all||document.getElementById
var actualheight=''
var cross_marquee, ns_marquee

function populate(){
if (iedom){
cross_marquee=document.getElementById? document.getElementById("iemarquee") : document.all.iemarquee
cross_marquee.style.top=marqueeheight+8
cross_marquee.innerHTML=marqueecontent
actualheight=cross_marquee.offsetHeight
}
else if (document.layers){
ns_marquee=document.ns_marquee.document.ns_marquee2
ns_marquee.top=marqueeheight+8
ns_marquee.document.write(marqueecontent)
ns_marquee.document.close()
actualheight=ns_marquee.document.height
}
lefttime=setInterval("scrollmarquee()",40)
}

function scrollmarquee(){
if (iedom){
if (parseInt(cross_marquee.style.top)>(actualheight*(-1)+8))
cross_marquee.style.top=parseInt(cross_marquee.style.top)-copyspeed
else
cross_marquee.style.top=marqueeheight+8
}
else if (document.layers){
if (ns_marquee.top>(actualheight*(-1)+8))
ns_marquee.top-=copyspeed
else
ns_marquee.top=marqueeheight+8
}
}

if (iedom||document.layers){
with (document){
if (iedom){
write('<div style="position:relative; border: 1px solid #000000; width:'+marqueewidth+'; height:'+marqueeheight+'; overflow:hidden; background:#ccccff;" onMouseover="copyspeed=pausespeed" onMouseout="copyspeed=marqueespeed">')
write('<div id="iemarquee" style="position:absolute; left:0; top:0; width:'+marqueewidth+'">')
write('</div></div>')
}
else if (document.layers){
write('<ilayer width='+marqueewidth+' height='+marqueeheight+' name="ns_marquee">')
write('<layer name="ns_marquee2" width='+marqueewidth+' height='+marqueeheight+' left=0 top=0 onMouseover="copyspeed=pausespeed" onMouseout="copyspeed=marqueespeed"></layer>')
write('</ilayer>')
}
}
}
</script>
__________________
www.mundodivx.com || www.mundodivx.org

Pon tu mano en un horno caliente durante un minuto y te parecerá una hora.
Siéntate junto a una chica preciosa durante una hora y te parecerá un minuto.
Eso es la relatividad.