• Das Erstellen neuer Accounts wurde ausgesetzt. Bei berechtigtem Interesse bitte Kontaktaufnahme über die üblichen Wege. Beste Grüße der Admin

PHP SQL TextSlider

thiagojonas

New member
Hallo Freunde,
ich hoffe ihr habt ein besseres Wetter als hier in Braunschweig.:)

Ich hätte da mal eine Frage;)

Also ich möchte gerne ein TextSlider erstellen, der jede 10 sekunden den Inhalt (nur Text) ändert. Die Text, also der Inhalt kommt aus der Datenbank. Und wenn der letzte Text (Wert) der Datenbank anzeigt wurde, soll es wieder von vorne losgehen.

Mein Ansatz:
So hole ich die Daten aud meiner Datenbank:

Code:
var xmlhttp;

function showUser()
{
xmlhttp=GetXmlHttpObject();
if (xmlhttp==null)
  {
  alert ("Browser does not support HTTP Request");
  return;
  }
var url="getuser.php";
xmlhttp.onreadystatechange=stateChanged;
xmlhttp.open("GET",url,true);
xmlhttp.send(null);
}

function stateChanged()
{
	if (xmlhttp.readyState==4)
	{	
		Feeds = new Array(xmlhttp.responseText);

		  document.getElementById('div_display').innerHTML=Feeds[0];		
		
	}
}

function GetXmlHttpObject()
{
if (window.XMLHttpRequest)
  {
  // code for IE7+, Firefox, Chrome, Opera, Safari
  return new XMLHttpRequest();
  }
if (window.ActiveXObject)
  {
  // code for IE6, IE5
  return new ActiveXObject("Microsoft.XMLHTTP");
  }
return null;
}

Die GetUser.PHP

PHP:
<?php
include("config.php");

$sql="SELECT * FROM $tbl_name";
$result=mysql_query($sql);

while($row = mysql_fetch_assoc($result)) {
	
echo $feeds = '<strong>'.$row['Titel'].'</strong>'.'<br/>'.$row['Inhalt'].'<br/>';
}

?>

Und so ist der HTML Teil:

HTML:
<body>
<div id="div_display">
  <script type="text/javascript" language="JavaScript">showUser();</script>
</div>
</body>

Ich kriege das angezeigt. Jetzt werden aber alle Werte der Datenbank angezeigt. Außerdem habe ich noch keine Funktion für den Slideeffekt.

Ich kenne zar eine, aber diese kann man hier nicht anwenden, denn da müssen die Array einzeln definiert werden und dann kann man folgendes machen:

Code:
function firstSlide()

{

document.getElementById('div_display').innerHTML=slideArray[0];

setTimeout("secondSlide()",10000);

}

function secondSlide()

{

document.getElementById('div_display').innerHTML=slideArray[1];

setTimeout("thirdSlide()",10000);

}

Aber auch hier müsste man dann soviele Funktionen wie es Wert in der Datenbank gibt erzeugen.
Es gibt bestimmt eine elegantere Version.
Könnte ihr mir weiterhelfen? Dankeschön im voraus :)
 
Danke ;) muss erst mein Server auf PHP 5 aktualisieren, dann klappt es bestimmt.

Die PHP 4 version erkennt das nicht : json_encode
 
So...leider funktioniert es nicht: Mache ich was falsch?

Javscript:

Code:
var xmlhttp;

function showUser()
{
xmlhttp=GetXmlHttpObject();
if (xmlhttp==null)
  {
  alert ("Browser does not support HTTP Request");
  return;
  }
var url="getuser.php";
xmlhttp.onreadystatechange=stateChanged;
xmlhttp.open("GET",url,true);
xmlhttp.send(null);


function initDisplay() {
  var i=0;
  var content = eval(xhr.responseText)
  var element = document.getElementById("div_display");

  window.setInterval(function() {
    element.innerHTML = content[i];
    if(i == content.length-1) i=0;
  }, 10*1000);
 }
}

function GetXmlHttpObject()
{
if (window.XMLHttpRequest)
  {
  // code for IE7+, Firefox, Chrome, Opera, Safari
  return new XMLHttpRequest();
  }
if (window.ActiveXObject)
  {
  // code for IE6, IE5
  return new ActiveXObject("Microsoft.XMLHTTP");
  }
return null;
}

PHP

PHP:
<?php
include("config.php");

$sql="SELECT * FROM $tbl_name";
$result=mysql_query($sql);

while($row = mysql_fetch_assoc($result)) {
$feeds = $row['Titel'].$row['Inhalt'];	
echo json_encode($feeds);

}

?>

Und der rest ist geblieben.
 
Code:
   <?php
include("config.php");

$sql="SELECT * FROM $tbl_name";
$result=mysql_query($sql);

$res = array();
while($row = mysql_fetch_assoc($result)) {
  $res[count($res)] = $row;
}
echo json_decode($res);

?>
Code:
function showUser()
{
  var xmlhttp;
  var i=0;
  var element = document.getElementById("div_display");
  xmlhttp=GetXmlHttpObject();

  if (xmlhttp==null)
  {
    alert ("Browser does not support HTTP Request");
    return;
  }
  var url="getuser.php";
  xmlhttp.onreadystatechange=function() {
    if(xmlhttp.readyState == 4) {
      if(xmlhttp.status == 200) {
        var content = eval(xmlhttp.responseText)
        window.setInterval(function() {
          element.innerHTML = content[i].Titel + " " + content[i].Inhalt;
          if(i == content.length-1) i=0;
          else i++;
        }, 10*1000);

      } else alert("Fehler beim Request");
    }
  }
  xmlhttp.open("GET",url,true);
  xmlhttp.send(null);
}

function GetXmlHttpObject()
{
if (window.XMLHttpRequest)
  {
  // code for IE7+, Firefox, Chrome, Opera, Safari
  return new XMLHttpRequest();
  }
if (window.ActiveXObject)
  {
  // code for IE6, IE5
  return new ActiveXObject("Microsoft.XMLHTTP");
  }
return null;
}
 
Zuletzt bearbeitet:
Ah...okay, dankeschön. Aber irgendwie will das nicht bei mir funktionieren. Ich habe alles so gemacht, wie Du mir das geziegt hast.

Vielleicht habe ich doch eine kleinigkeit übesehen.

Die Php, ist wie oben.
 
Zuletzt bearbeitet:
auf deiner Webseite fehlt die Umsatzsteuer-ID, oder der Hinweis, dass du Kleinunternehmer bist und dadurch befreit bist... solltest du schleunigst ändern, sonst kommt vielleicht mal ne Abmahnung reingeflattert

ne datenschutzerklärung fehlt auch...
da du ein Kontaktformular hast, speicherst du Daten (wenn jm. eine Anfrage schickt) --> Datenschutzbestimmung muss auch drauf

du schuldest mir ein Bier :cool:
 
@Bieber
Dankeschön...kriegst sogar eine Kiste:)

@Junkee
Also ist funktioniert jetzt:) Musste nur das json_decode aud json_encode wechseln. Aber es kommt erst eine leere seite und erst nach 10 sekunden, wir der erste Text gezeigt. Wie kann ich das machen, das von anfang an der text gezeigt wird?
 
Zurück
Oben