Textticker mit Daten aus Datenbank füllen

surffix

Gesperrt
Hi,

Also ich habe ein PHP Skript geschrieben, dass die Daten aus einer MySQL Datenbank liest und diese dann anhand eines Java Skript Tickers über die Website laufen lässt.

Die Daten werden als erstes in einer Variable gespeichert. Diese Daten werden dann im Java Skript aufgerufen und abgespielt(echo).

Das funktioniert alles ganz gut, doch je mehr Daten in der Datenbank sind und ausgegeben werden müssen, desto mehr verändert sich das Design der Page.

Die Website bekommt unten einen Srollbalken, dieser macht dann die Seite breiter, obwohl su nur ganz schmal ist.

Wo ist das Problem?

Wie kann ich das beheben.

Ich hoffe ihr versteht mich, was ich meine! :-)

Gruß

Alex
 
Hier der PHP Code:

<?
$sql_host = "localhost";
$sql_benutzername = "";
$sql_passwort = "";
$sql_datenbank = "";

mysql_connect("$sql_host","$sql_benutzername","$sql_passwort") or die ("Keine Verbindung moeglich");
mysql_select_db("$sql_datenbank") or die ("Die Datenbank existiert nicht");

$abfrage = "SELECT * FROM ticker ORDER BY id DESC";
$ergebnis = mysql_query($abfrage);
while($row = mysql_fetch_object($ergebnis))
{
echo "<font size=\"2\" face=\"Arial, Helvetica, sans-serif\">+++ <a href=\"mailto:$row->mail\">$row->name:</a> ";
//echo "$row->mail";
//echo $row->hoempage;
echo "\"$row->message\" ";
echo "($row->stadt) </font>";

}

?>


Gruß

Alex
 
So wie ich das in deinem Script sehen kann werden die News nicht in einer Variable gespeichert, sondern direkt als Text ausgegeben. Dann ist es logisch das die Seite immer breiter wird. Du musst das was du beschrieben hast auch wirklich tun, und dann jeweils z.B. nur eine Meldung nach der anderen ausgeben.

Oder hast du irgendwo doch noch ein Javascript? Dann könntest du das (wirklich) mal posten. :p
 
Hi,

Also das ist die Version, wo der Text direkt ausgegeben wird. (hast du ja erkannt! :-))

Ich habe auch eine Version, da werden dann alle Daten in einer Variable gespeichert.
Rufe ich dann mit dem Befehl echo die Variable aus und lasse den Text aus geben, gibt er mir nur den ersten eintrag in der Datenbank aus.

Ich will aber alle in der Variable haben!
Wie geht das?


Gruß

Alex


<?
$sql_host = "localhost";
$sql_benutzername = "";
$sql_passwort = "";
$sql_datenbank = "";

mysql_connect("$sql_host","$sql_benutzername","$sql_passwort") or die ("Keine Verbindung moeglich");
mysql_select_db("$sql_datenbank") or die ("Die Datenbank existiert nicht");

$abfrage = "SELECT * FROM ticker ORDER BY id DESC";
$ergebnis = mysql_query($abfrage);
while($row = mysql_fetch_object($ergebnis))
{
$eintraege = "<font size=\"2\" face=\"Arial, Helvetica, sans-serif\">+++ <a href=\"mailto:$row->mail\">$row->name:</a> \"$row->message\" ($row->stadt) </font>";
echo $eintraege;


}

?>
 
Zuletzt bearbeitet:
Jetzt gibt er ja wieder alles direkt aus?! :p

Wenn du alle Einträge in deiner Variable $eintraege haben willst, dann musst du $eintraege = ... durch $eintraege .= ... ersetzen. Dann nimmst du das echo raus aus der Schleife und dann wird alles auf einmal ausgegeben.

(Von Javascript ist hier immernoch keine Spur...)

P.s. Bitte nimm doch mal dein Passwort & Usernamen aus dem Script.
 
Hi,

Also irgendwie klappt das immer noch nicht.
Ich vermute bald, dass das an dem Java Skript liegt und nicht am PHP Skript selbst. :(

So sieht nun das ganze Skript aus:
(+ Java Skript :-))

PHP:
 <script language="JavaScript1.2">

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

//Specify the marquee's width (in pixels)
var marqueewidth=535
//Specify the marquee's height
var marqueeheight=25
//Specify the marquee's marquee speed (larger is faster 1-10)
var marqueespeed=3
//configure background color:
var marqueebgcolor="#FFFFFF"
//Pause marquee onMousever (0=no. 1=yes)?
var pauseit=1

//Specify the marquee's content (don't delete <nobr> tag)
//Keep all content on ONE line, and backslash any single quotations (ie: that\'s great):

var marqueecontent='<nobr>
<?php   $sql_host = "localhost";
  $sql_benutzername = "";
  $sql_passwort = "";
  $sql_datenbank = "";
  
  mysql_connect("$sql_host","$sql_benutzername","$sql_passwort") or die ("Keine Verbindung moeglich");
  mysql_select_db("$sql_datenbank") or die ("Die Datenbank existiert nicht");

$abfrage = "SELECT * FROM ticker ORDER BY id DESC";
$ergebnis = mysql_query($abfrage);
 while($row = mysql_fetch_object($ergebnis))
    {
	$eintraege .= "<font size=\"2\" face=\"Arial, Helvetica, sans-serif\">+++ <a href=\"mailto:$row->mail\">$row->name:</a> \"$row->message\" ($row->stadt) </font>"; 
    } 

	echo $eintraege;
	
	?>
</nobr>'

////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
if (iedom)
document.write('<span id="temp" style="visibility:hidden;position:absolute;top:-100;left:-1000">'+marqueecontent+'</span>')
var actualwidth=''
var cross_marquee, ns_marquee

function populate(){
if (iedom){
cross_marquee=document.getElementById? document.getElementById("iemarquee") : document.all.iemarquee
cross_marquee.style.left=marqueewidth+8
cross_marquee.innerHTML=marqueecontent
actualwidth=document.all? cross_marquee.offsetWidth : document.getElementById("temp").offsetWidth
}
else if (document.layers){
ns_marquee=document.ns_marquee.document.ns_marquee2
ns_marquee.left=marqueewidth+8
ns_marquee.document.write(marqueecontent)
ns_marquee.document.close()
actualwidth=ns_marquee.document.width
}
lefttime=setInterval("scrollmarquee()",20)
}
window.onload=populate

function scrollmarquee(){
if (iedom){
if (parseInt(cross_marquee.style.left)>(actualwidth*(-1)+8))
cross_marquee.style.left=parseInt(cross_marquee.style.left)-copyspeed
else
cross_marquee.style.left=marqueewidth+8

}
else if (document.layers){
if (ns_marquee.left>(actualwidth*(-1)+8))
ns_marquee.left-=copyspeed
else
ns_marquee.left=marqueewidth+8
}
}

if (iedom||document.layers){
with (document){
document.write('<table border="0" cellspacing="0" cellpadding="0"><td>')
if (iedom){
write('<div style="position:relative;width:'+marqueewidth+';height:'+marqueeheight+';overflow:hidden">')
write('<div style="position:absolute;width:'+marqueewidth+';height:'+marqueeheight+';background-color:'+marqueebgcolor+'" onMouseover="copyspeed=pausespeed" onMouseout="copyspeed=marqueespeed">')
write('<div id="iemarquee" style="position:absolute;left:0;top:0"></div>')
write('</div></div>')
}
else if (document.layers){
write('<ilayer width='+marqueewidth+' height='+marqueeheight+' name="ns_marquee" bgColor='+marqueebgcolor+'>')
write('<layer name="ns_marquee2" left=0 top=0 onMouseover="copyspeed=pausespeed" onMouseout="copyspeed=marqueespeed"></layer>')
write('</ilayer>')
}
document.write('</td></table>')
}
}
</script>
 
Zuletzt bearbeitet von einem Moderator:
Was funktioniert denn nicht?

Versuch doch mal das ganze einfach ohne <font und so. Oder überhaupt mal ohne PHP Skript, sondern einfach mit normalem Text.
 
Also so nun habe ich alles getestet.

Wenn ich das Java Skript ohne PHP laufen lasse, dann funktioniert alles so, wie ich mir das vorstelle. Nur wenn ich dann wieder den PHP Code einfüge, dann haut der mir das Design kaputt.

Das kannst du dir anschauen unter:

http://surffix.rechtsanwaelte-koof.de

Da muss ein Fehler im PHP Code liegen.

Gruß

Alex
 
Bei mir funktionierts und dein Design sieht auch nicht zerstückelt aus. (Oder ich kenn dein unzerstückeltes nicht.)
 

Anhänge

  • surffix.gif
    surffix.gif
    18,7 KB · Aufrufe: 119
Zurück