Forums Archive Index > Cool free scripts > Newsticker1 PHP and MySQL. Works Fine in Firefox Problem IE6
Date: 16 Aug 2005 11:24 pm
Hello, I am using the script to show the headlines of the news I have in a MySQL Database.
Everything works perfectly when I am using Mozilla Firefox but somehow when I test it in IE6, the page loads with errors and prevents the script from showing.
I have figured that it has to do with the location of the php script, but i just do not know where to put it so it can work for IE.
Here is the code...
Code:
<td height="88" valign="top" class="normal12" id="sangriaT5">
<script language="JavaScript1.2">
/* USE WORDWRAP AND MAXIMIZE THE WINDOW TO SEE THIS FILE
========================================
V-NewsTicker v2.2
License : Freeware (Enjoy it!)
(c)2003 VASIL DINKOV- PLOVDIV, BULGARIA
========================================
For IE4+, NS4+, Opera5+, Konqueror3.1+
========================================
Get the NewsTicker script at:
http://www.smartmenus.org/other.php
and don't wait to get the Great SmartMenus script at:
http://www.smartmenus.org
LEAVE THESE NOTES PLEASE - delete the comments if you want */
// BUG in Opera:
// If you want to be able to control the body margins
// put the script right after the BODY tag, not in the HEAD!!!
// === 1 === FONT, COLORS, EXTRAS...
v_font='arial,verdana,sans-serif';
v_fontSize='12px';
v_fontSizeNS4='11px';
v_fontWeight='normal';
v_fontColor='#454545';
v_textDecoration='none';
v_fontColorHover='#454545';// | won't work
v_textDecorationHover='underline';// | in Netscape4
v_bgColor='url(bg.jpg)';
// set [='transparent'] for transparent
// set [='url(image_source)'] for image
v_top=0;// |
v_left=0;// | defining
v_width=414;// | the box
v_height=52;// |
v_paddingTop=2;
v_paddingLeft=2;
v_position='relative';// absolute/relative
v_timeout=2500;//1000 = 1 second
v_slideSpeed=30;
v_slideDirection=0;//0=down-up;1=up-down
v_pauseOnMouseOver=true;
// v2.2+ new below
v_slideStep=1;//pixels
v_textAlign='left';// left/center/right
v_textVAlign='middle';// top/middle/bottom - won't work in Netscape4
// === 2 === THE CONTENT - ['href','text','target']
// Use '' for href to have no link item
v_content=[
<?php if (mysql_num_rows($prensa) > 0){ while($sp_doc = mysql_fetch_array($prensa)){?>
['http://www.smartmenus.org/other.php','<?php echo $sp_doc[titulo]; ?><br><span class="letraGuinda"><?php echo $sp_doc[diaid];?> <?php echo $sp_doc[mes2];?> <?php echo $sp_doc[ano];?></span>','_blank'],
<?php } } else { mysql_close($connection); } ?>
];
// ===
v_ua=navigator.userAgent;v_nS4=document.layers?1:0;v_iE=document.all&&!window.innerWidth&&v_ua.indexOf("MSIE")!=-1?1:0;v_oP=v_ua.indexOf("Opera")!=-1&&document.clear?1:0;v_oP7=v_oP&&document.appendChild?1:0;v_oP4=v_ua.indexOf("Opera")!=-1&&!document.clear;v_kN=v_ua.indexOf("Konqueror")!=-1&&parseFloat(v_ua.substring(v_ua.indexOf("Konqueror/")+10))<3.1?1:0;v_count=v_content.length;v_cur=1;v_cl=0;v_d=v_slideDirection?-1:1;v_TIM=0;v_fontSize2=v_nS4&&navigator.platform.toLowerCase().indexOf("win")!=-1?v_fontSizeNS4:v_fontSize;v_canPause=0;function v_getOS(a){return v_iE?document.all[a].style:v_nS4?document.layers["v_container"].document.layers[a]:document.getElementById(a).style};function v_start(){var o,px;o=v_getOS("v_1");px=v_oP&&!v_oP7||v_nS4?0:"px";if(parseInt(o.top)==v_paddingTop){v_canPause=1;if(v_count>1)v_TIM=setTimeout("v_canPause=0;v_slide()",v_timeout);return}o.top=(parseInt(o.top)-v_slideStep*v_d)*v_d>v_paddingTop*v_d?parseInt(o.top)-v_slideStep*v_d+px:v_paddingTop+px;if(v_oP&&o.visibility.toLowerCase()!="visible")o.visibility="visible";setTimeout("v_start()",v_slideSpeed)};function v_slide(){var o,o2,px;o=v_getOS("v_"+v_cur);o2=v_getOS("v_"+(v_cur<v_count?v_cur+1:1));px=v_oP&&!v_oP7||v_nS4?0:"px";if(parseInt(o2.top)==v_paddingTop){if(v_oP)o.visibility="hidden";o.top=v_height*v_d+px;v_cur=v_cur<v_count?v_cur+1:1;v_canPause=1;v_TIM=setTimeout("v_canPause=0;v_slide()",v_timeout);return}if(v_oP&&o2.visibility.toLowerCase()!="visible")o2.visibility="visible";if((parseInt(o2.top)-v_slideStep*v_d)*v_d>v_paddingTop*v_d){o.top=parseInt(o.top)-v_slideStep*v_d+px;o2.top=parseInt(o2.top)-v_slideStep*v_d+px}else{o.top=-v_height*v_d+px;o2.top=v_paddingTop+px}setTimeout("v_slide()",v_slideSpeed)};if(v_nS4||v_iE||v_oP||document.getElementById&&!v_kN&&!v_oP4){
document.write("<style>.vnewsticker,a.vnewsticker{font-family:"+v_font+";font-size:"+v_fontSize2+";color:"+v_fontColor+";text-decoration:"+v_textDecoration+";font-weight:"+v_fontWeight+"}a.vnewsticker:hover{font-family:"+v_font+";font-size:"+v_fontSize2+";color:"+v_fontColorHover+";text-decoration:"+v_textDecorationHover+"}</style>");v_temp="<div "+(v_nS4?"name":"id")+"=v_container style='position:"+v_position+";top:"+v_top+"px;left:"+v_left+"px;width:"+v_width+"px;height:"+v_height+"px;background:"+v_bgColor+";layer-background"+(v_bgColor.indexOf("url(")==0?"-image":"-color")+":"+v_bgColor+";clip:rect(0,"+v_width+","+v_height+",0);overflow:hidden'>"+(v_iE?"<div style='position:absolute;top:0px;left:0px;width:100%;height:100%;clip:rect(0,"+v_width+","+v_height+",0)'>":"");for(v_i=0;v_i<v_count;v_i++)
v_temp+="<div "+(v_nS4?"name":"id")+"=v_"+(v_i+1)+" style='position:absolute;top:"+(v_height*v_d)+"px;left:"+v_paddingLeft+"px;width:"+(v_width-v_paddingLeft*2)+"px;height:"+(v_height-v_paddingTop*2)+"px;clip:rect(0,"+(v_width-v_paddingLeft*2)+","+(v_height-v_paddingTop*2)+",0);overflow:hidden"+(v_oP?";visibility:hidden":"")+";text-align:"+v_textAlign+"' class=vnewsticker>"+(!v_nS4?"<table width="+(v_width-v_paddingLeft*2)+" height="+(v_height-v_paddingTop*2)+" cellpadding=0 cellspacing=0 border=0><tr><td width="+(v_width-v_paddingLeft*2)+" height="+(v_height-v_paddingTop*2)+" align="+v_textAlign+" valign="+v_textVAlign+" class=vnewsticker>":"")+(v_content[v_i][0]!=""?"<a href='"+v_content[v_i][0]+"' target='"+v_content[v_i][2]+"' class=vnewsticker"+(v_pauseOnMouseOver?" onmouseover='if(v_canPause&&v_count>1){clearTimeout(v_TIM);v_cl=1}' onmouseout='if(v_canPause&&v_count>1&&v_cl)v_TIM=setTimeout(\"v_canPause=0;v_slide();v_cl=0\","+v_timeout+")'":"")+">":"<span"+(v_pauseOnMouseOver?" onmouseover='if(v_canPause&&v_count>1){clearTimeout(v_TIM);v_cl=1}' onmouseout='if(v_canPause&&v_count>1&&v_cl)v_TIM=setTimeout(\"v_canPause=0;v_slide();v_cl=0\","+v_timeout+")'":"")+">")+v_content[v_i][1]+(v_content[v_i][0]!=""?"</a>":"</span>")+(!v_nS4?"</td></tr></table>":"")+"</div>";v_temp+=(v_iE?"</div>":"")+"</div>";document.write(v_temp);setTimeout("v_start()",1000);if(v_nS4)onresize=function(){location.reload()}}
</script>
One other thing... on the page I have a scrolling marquee as well but it does not work in IE6 when I use the Newsticker Script in the same page. However everything works fine in Mozilla Firefox.
Here is the code for the marquee...
Code:
<td height="42" colspan="3" valign="middle" class="brd_Ar_Ab normal12 sangriaT5">
<marquee bgcolor="#FFFFFF" width="172" height="20" align="bottom" style="color:#333333; font-family:Arial, Helvetica, sans-serif; font-size: 11 px" scrollamount="2" scrolldelay="1">
<strong><img src="../../imagenes/icn_bandera.gif" width="24" height="15" hspace="10" align="left">Bienvenidos </strong>
</marquee>
</td>
It seems I need some help ;0)
Thanks and fabolous script by the way...
Date: 18 Aug 2005 3:24 am
The problem with the script in IE occurs because the loop you've used outputs a comma symbol after the last item. So just replace the following:
Code:
v_content=[
<?php if (mysql_num_rows($prensa) > 0){ while($sp_doc = mysql_fetch_array($prensa)){?>
['http://www.smartmenus.org/other.php','<?php echo $sp_doc[titulo]; ?><br><span class="letraGuinda"><?php echo $sp_doc[diaid];?> <?php echo $sp_doc[mes2];?> <?php echo $sp_doc[ano];?></span>','_blank'],
<?php } } else { mysql_close($connection); } ?>
];
with (for instance):
Code:
v_content=[
<?php
$ticker_output = "";
if (mysql_num_rows($prensa) > 0) {
while($sp_doc = mysql_fetch_array($prensa))
$ticker_output.="['http://www.smartmenus.org/other.php','".$sp_doc[titulo]."<br><span class=\"letraGuinda\">".$sp_doc[diaid]." ".$sp_doc[mes2]." ".$sp_doc[ano]."</span>','_blank'],";
$ticker_output = substr($ticker_output,0,-1); // removes the last comma
} else {
mysql_close($connection);
}
?>
];
I am not completely sure but I suppose the issue with the marquee might be caused by the script error. So please fix the above code first and check whether the marquee works after that..
Date: 18 Aug 2005 12:17 pm
Hello, thanks for helping me...
I used the code you wrote and..... ;0) At first it did not work in any browser but I noticed it was missing an echo statement. The echo was enough for Mozilla Firefox but it still does not work in Internet Explorer.
You are right the comma is causing the problem (however it is needed to show all the registries from the Data Base) so my guess is that the error is in the script that removes it:
Code:
$ticker_output = substr($ticker_output,0,-1); // removes the last comma
My knowledge of the substr function is still barely new so I have not been able to figure out what the mistake could be... other than the echo statement (the echo is as far as I could go, for now... :twisted: ).
Internet Explorer tells me the error is:
Code:
'v_Content[...].0' is null or not an object
The script with the added echo is so far:
Code:
v_content=[
<?php
$ticker_output = "";
if (mysql_num_rows($prensa) > 0) {
while($sp_doc = mysql_fetch_array($prensa))
echo //missing echo statement
$ticker_output.="['http://www.smartmenus.org/other.php','".$sp_doc[titulo]."<br><span class=\"letraGuinda\">".$sp_doc[diaid]." ".$sp_doc[mes2]." ".$sp_doc[ano]."</span>','_blank'],";
$ticker_output = substr($ticker_output,0,-1); // removes the last comma
} else {
mysql_close($connection);
}
?>
];
What is your opinion?
Thanks again :o
PD. Don't mind the marquee, somehow is working again...
Date: 18 Aug 2005 12:34 pm
I researched the substr function and I noticed there could not be anything wrong with the way you wrote it beacause of a simple example:
Code:
<?php
$rest = substr("abcdef", 0, -1); // returns "abcde"
So I thought the mistake might have been related with another missing echo statement and BINGO!!!! lol (90% of the times is the simple things we need to look at)...
I used echo like this:
Code:
echo $ticker_output = substr($ticker_output,0,-1); // removes the last comma
Now the script works both in Mozilla and IE...
The whole script looks like this:
Code:
v_content=[
<?php
$ticker_output = "";
if (mysql_num_rows($prensa) > 0) {
while($sp_doc = mysql_fetch_array($prensa))
echo $ticker_output.="['http://www.smartmenus.org/other.php','".$sp_doc[titulo]."<br><span class=\"letraGuinda\">".$sp_doc[diaid]." ".$sp_doc[mes2]." ".$sp_doc[ano]."</span>','_blank'],";
echo $ticker_output = substr($ticker_output,0,-1); // removes the last comma
} else {
mysql_close($connection);
}
?>
];
Thanks again for your time and the cool free scripts... :wink:
Date: 18 Aug 2005 3:13 pm
Yep, I missed the echo at the end. :oops: Sorry! What I actually meant is:
Code:
v_content=[
<?php
$ticker_output = "";
if (mysql_num_rows($prensa) > 0) {
while($sp_doc = mysql_fetch_array($prensa))
$ticker_output.="['http://www.smartmenus.org/other.php','".$sp_doc[titulo]."<br><span class=\"letraGuinda\">".$sp_doc[diaid]." ".$sp_doc[mes2]." ".$sp_doc[ano]."</span>','_blank'],";
$ticker_output = substr($ticker_output,0,-1); // removes the last comma
} else {
mysql_close($connection);
}
echo $ticker_output;
?>
];