Shoutbox PHP

maarian

Erfahrenes Mitglied
Hallo,

Ich möchte eine Abfrage machen für eine Shoutbox so das ohne die Seite neu zuladen 8 verschiedene Ergebnisse eingeblendet werden...

Es ist wie eine art Newsticker hier mal der Code der gibt mir immer nur 1 Ergebnis.

PHP:
<?php $abfrage= "SELECT * FROM shoutout ORDER BY rand(now()) LIMIT 8";
$ergebnis = mysql_query($abfrage);
 

 while($row = mysql_fetch_object($ergebnis)){
$wer = $row->username;
$text2 = $row->message;
}
?>

</style><body onLoad="newsticker()">
<script language="JavaScript">
<!-- Begin
// news ticker function
var newslist=new Array();
var cnt=0;   // current news item
var curr = "";
var i=-1;   // current letter being typed

newslist[0]=new Array("<b><?php echo $wer;?></b>:<?php echo $text2;?>","nickpage.php?nick=<?php echo $wer;?>")
newslist[1]=new Array("<b><?php echo $wer;?></b>:<?php echo $text2;?>","nickpage.php?nick=<?php echo $wer;?>")
newslist[2]=new Array("<b><?php echo $wer;?></b>:<?php echo $text2;?>","nickpage.php?nick=<?php echo $wer;?>")
newslist[3]=new Array("<b><?php echo $wer;?></b>:<?php echo $text2;?>","nickpage.php?nick=<?php echo $wer;?>")
newslist[4]=new Array("<b><?php echo $wer;?></b>:<?php echo $text2;?>","nickpage.php?nick=<?php echo $wer;?>")
newslist[5]=new Array("<b><?php echo $wer;?></b>:<?php echo $text2;?>","nickpage.php?nick=<?php echo $wer;?>")
newslist[6]=new Array("<b><?php echo $wer;?></b>:<?php echo $text2;?>","nickpage.php?nick=<?php echo $wer;?>")
function newsticker()
......................................................
{
 
rand(now()) ... was soll denn das werden ^^ Du weißt schon wozu ORDER BY gut ist und was die MySQL-Funktion NOW() bewirkt? Weder die Abfrage, noch der Code ergibt einen wirklichen Sinn.

Inhalte nachzuladen ohne die komplette Seite neu aufbauen zu lassen, geht über AJAX ->Ajaxforum.
 
Was soll denn das werden?
PHP:
while($row = mysql_fetch_object($ergebnis)){
  $wer = $row->username;
  $text2 = $row->message;
}

Du gehst alle Ergebnisse des Querys durch. Gut, dagegen hab ich nichts einzuwenden. Aber was bringt dir das, wenn du das ganze nicht verwendest? Du gehst hin und überschreibst die Variable immer wieder mit neuen Werten, ohne dass du diese verwendest. Erst nachdem alle Ergebnisse durch sind, wird der letzte Wert in dein JS-Array eingetragen; 8mal.

So sollte das ganze schon besser klappen:
PHP:
<?php
	$abfrage= "SELECT * FROM shoutout ORDER BY rand(now()) LIMIT 8";
	$ergebnis = mysql_query($abfrage);
?>
</style>
<body onLoad="newsticker()">
	<script language="JavaScript">
		<!-- Begin
		// news ticker function
		var newslist=new Array();
		var cnt=0;   // current news item
		var curr = "";
		var i=-1;   // current letter being typed

		<?
		    $i = 0;
			while($row = mysql_fetch_object($ergebnis))
			{
				$wer = $row->username;
				$text2 = $row->message;
				
				echo 'newslist['.$i.']=new Array("<b>'.$wer.'</b>:'.$text2.'","nickpage.php?nick='.$wer.'");';
				
				$i++;
			}
		?>

		function newsticker()
		......................................................
		{

Was jedoch das mit dem ORDER BY im Query soll, blick ich auch noch nicht so ganz.
 
Zuletzt bearbeitet:
Ja Sorry das ORDER gehörte da nciht rein habe das gerade erst gemerkt..


Hier der Aktuelle Code jetzt wird aber nichts mehr asugegeben :(

PHP:
<?php

include"include/connect.data.php";
include"include/settings.php";

    $abfrage= "SELECT * FROM shoutout  LIMIT 8";
    $ergebnis = mysql_query($abfrage);
?>
<body onLoad="newsticker()">
    <script language="JavaScript">
        <!-- Begin
        // news ticker function
        var newslist=new Array();
        var cnt=0;   // current news item
        var curr = "";
        var i=-1;   // current letter being typed

        <?
            $i = 0;
            while($row = mysql_fetch_object($ergebnis))
            {
                $wer = $row->username;
                $text2 = $row->message;
                
                echo 'newslist['.$i.']=new Array("<b>'.$wer.'</b>:'.$text2.'","nickpage.php?nick=<?php echo $wer;?>")';
                
                $i++;
            }
        ?>
function newsticker()
{
var mtxtvar=document.getElementById("mtxt"); 

	// next character of current item

	if (i < newslist[cnt][0].length - 1)

	{
		i++;
		temp1 = newslist[cnt][0];
		temp1 = temp1.split('');
		curr = curr+temp1[i];
		temp2 = newslist[cnt][1];
		mtxtvar.innerHTML = "<small><a style='text-decoration: none' target='_top' href='"+temp2+"'><font face='verdana' size='1' color='#FFFFFF'>"+curr+"</small></font></a>";
		setTimeout('newsticker()',20)
		return;

	}

	// new item

	i = -1; curr = "";

	if (cnt<newslist.length-1)
	cnt++;

	else
	cnt=0;

	setTimeout('newsticker()',5000)
}
//  End -->
</script>
 
PHP innerhalb von JS macht auch wenig Sinn. Ohne das ich mir jetzt den ganzen Code angesehen hätte.

PHP:
<html>
<head>
    <script language="JavaScript"> 
        <!-- Begin 
        // news ticker function 
        var newslist=new Array(); 
        var cnt=0;   // current news item 
        var curr = ""; 
        var i=-1;   // current letter being typed 

function newsticker() 
{ 
var mtxtvar=document.getElementById("mtxt");  

    // next character of current item 

    if (i < newslist[cnt][0].length - 1) 

    { 
        i++; 
        temp1 = newslist[cnt][0]; 
        temp1 = temp1.split(''); 
        curr = curr+temp1[i]; 
        temp2 = newslist[cnt][1]; 
        mtxtvar.innerHTML = "<small><a style='text-decoration: none' target='_top' href='"+temp2+"'><font face='verdana' size='1' color='#FFFFFF'>"+curr+"</small></font></a>"; 
        setTimeout('newsticker()',20) 
        return; 

    } 

    // new item 

    i = -1; curr = ""; 

    if (cnt<newslist.length-1) 
    cnt++; 

    else 
    cnt=0; 

    setTimeout('newsticker()',5000) 
} 
//  End --> 
</script>
</head> 
<body onLoad="newsticker()">
<?php 

include("include/connect.data.php"); 
include("include/settings.php"); 

    $abfrage= "SELECT * FROM shoutout LIMIT 0,8"; 
    $ergebnis = mysql_query($abfrage); 

            $i = 0; 
            while($row = mysql_fetch_object($ergebnis)) 
            { 
                $wer = $row->username; 
                $text2 = $row->message; 
                 
                echo 'newslist['.$i.']=new Array("<b>'.$wer.'</b>:'.$text2.'","nickpage.php?nick=<?php echo $wer;?>")'; 
                 
                $i++; 
            } 
?>
</body>
</html>
 
Der will einfach nichts ausgeben .

Im Quelltext steht es aber

HTML:
  <html>
<head>

    <script language="JavaScript"> 
        <!-- Begin 
        // news ticker function 
        var newslist=new Array(); 
        var cnt=0;   // current news item 
        var curr = ""; 
        var i=-1;   // current letter being typed 

 newslist[0]=new Array("<b>Marian</b>:Hallo das ist ein Test tesssssssssssssssssssssssssssssssssssssssst","nickpage.php?nick=Marian") newslist[1]=new Array("<b>Marian</b>:tteeesssssssss","nickpage.php?nick=Marian") newslist[2]=new Array("<b>Dark-Bullet</b>:das si kein test.....obwohl eigendlich ja  schon nen bissl.....:D","nickpage.php?nick=Dark-Bullet") newslist[3]=new Array("<b>Dark-Bullet</b>:Flirt-Area!!geht schon....;D","nickpage.php?nick=Dark-Bullet") newslist[4]=new Array("<b>Marian</b>:hehe","nickpage.php?nick=Marian") newslist[5]=new Array("<b>oWnZz</b>:Moin leutz.. hoffe mal alles bestens bei euch xD was geht so ?! Flirt-Area ist geil ^^","nickpage.php?nick=oWnZz") newslist[6]=new Array("<b>oWnZz</b>:Hallo Leutz , was geht bei euch denn so ?! Mir is voll langweilig !","nickpage.php?nick=oWnZz") newslist[7]=new Array("<b>GaNjA-w3eD</b>:+*KIZ*+tHa BeSt","nickpage.php?nick=GaNjA-w3eD")
function newsticker() 
{ 
var mtxtvar=document.getElementById("mtxt");  

    // next character of current item 

    if (i < newslist[cnt][0].length - 1) 

    { 
        i++; 
        temp1 = newslist[cnt][0]; 
        temp1 = temp1.split(''); 
        curr = curr+temp1[i]; 
        temp2 = newslist[cnt][1]; 
        mtxtvar.innerHTML = "<small><a style='text-decoration: none' target='_top' href='"+temp2+"'><font face='verdana' size='1' color='#FFFFFF'>"+curr+"</small></font></a>"; 
        setTimeout('newsticker()',20) 
        return; 

    } 

    // new item 

    i = -1; curr = ""; 

    if (cnt<newslist.length-1) 
    cnt++; 

    else 
    cnt=0; 

    setTimeout('newsticker()',5000) 
} 
//  End --> 
</script>
</head> 
<body onLoad="newsticker()">

<center><span id="mtxt" style="text-decoration: none"></span></center>
</body>
</html>
 
Ersetz mal

Code:
<script language="JavaScript">

mit:

Code:
<script type="text/javascript">

Falls JS- "onload" case sensitive sein müsste, müsstest du es lt. Referenz so schreiben:

Code:
<body onLoad="newsticker()">

Ob der JS-Code sonst korrekt ist, müsste jemand anderes beurteilen. Dafür kenne ich mich zu wenig mit JS aus.
 
Zuletzt bearbeitet:
Also er gibt immer noch nichts aus kann es sein das es daran liegt das die Shouts alle in einer Reihe sind und nicht untereinander?

weil im moment ist es durchgehend newlist[0]..........................;newslist[1] usw
 
Jetzt muss man aber schon sagen, dass wie da n bissele blind sind. Ein bisschen arg blind...

Weise Schrift auf weisem Grund tut sich nicht gut^^ Ändere mal die Schriftfarbe, (die du im JS-Code auf weis hast) oder die Hintergrundfarbe des SPAN-Tags.
 
Zurück