Jörg Reinholz: DIV-Inhalt mit Datenbankeinträgen per Zufall

Beitrag lesen

OK, hier gebe ich das PHP-Skript an, welches die Einträge aus der DB holt.
Es handel sich dabei um einen Titel, einen Text und eine Quelle, d.h. also 3 Angaben.
Kann ich die irgendwie trennen?

Klar doch! Am universellsten ist das mit JSON :

<?php #getTexteAsJSON.php
$ausg['titel']='Das ist ein toller Titel';
$ausg['text']='Das ist ein toller Text';
$ausg['quelle']='geklaut von <a href="http://bauer.ro/geschichte_vom_kuerbis.html">rumänischem Bauer</a>';

print json_encode($ausg);
?>

<script type="text/javascript">

var wiederhole;

function holeDaten() {
  xmlHttp = new XMLHttpRequest;
  if (xmlHttp) {
    xmlHttp.open('GET', 'getTextAsJSON.php', true);
    xmlHttp.onreadystatechange = function () {
      if (xmlHttp.readyState == 4) {

//auswerten, erzeugt assoziativen Array
        eval('data='+xmlHttp.responseText);

// schreiben:
        document.getElementById('titel').innerHTML=data['titel'];
        document.getElementById('text').innerHTML=data['text'];
        document.getElementById('quelle').innerHTML=data['quelle'];

// wiederholen
        wiederhole=window.setTimeout("holeDaten()", 25000);
     }
  };
   xmlHttp.send(null);
}
<script>

Freilich bist du auch nicht gehindert, in der ursprünglichen Variante gleich serverseitig zu erzeugen, was Du auf dem Client brauchst, also etwas wie:

<?php #getText.php
print '<div class="title">Das ist ein toller Titel</div>';
print '<div class="text">Das ist ein toller Text</div>';
print '<div class="quelle">geklaut von <a href="http://bauer.ro/geschichte_vom_kuerbis.html">rumänischem Bauer</a></div>';
?>
wäre recht einfach.

Eine weitere Möglichkeit wäre str_split(). Du kannst die Strings also erst auf dem Server zu einem zusammen zu setzen und dann auf dem Client trennen. Benutze einen klug gewählten Trenner, etwas wie

<?php
print 'Das ist ein toller Titel<TRENNER>Das ist ein toller Text<TRENNER>geklaut von <a href="http://bauer.ro/geschichte_vom_kuerbis.html">rumänischem Bauer</a>';
?>

könnte man in Javascript mit

var ar=xmlHttp.responseText.split('<TRENNER>');

wieder auflösen und dann mit

document.getElementById("prevTitel")=ar[0];
...

ins Dokument schreiben.

Jörg Reinholz