Texte nacheinander ausgeben

Dieses Thema im Forum "Webentwicklung" wurde erstellt von b.e.cool, 11. Februar 2009 .

  1. 11. Februar 2009
    Hi erstmal,
    habe folgendes Problem:
    In der Datenbank sind mehrere Texte gespeichert, einfach nur ganznormale Texte wie "Hallo wie gehts?" z.b.
    Jetzt möchte ich dass nur der erste davon ausgegeben wird, nach ca. 10sek nur der zweite, wieder ca. 10sek später nur der dritte und so weiter, sind alle texte durch, soll es wieder von vorne beginnen...
    Wie bekomme ich dass hin?

    BW für jeden der weiter helfen kann
     
  2. 11. Februar 2009
    AW: Texte nacheinander ausgeben

    Hey also mit PHP ist das meines Wissens nicht möglich.

    Du könntest zwar mit flush(); und sleep(); arbeiten. Das ist aber der totale Server Killer. Vorallem wenn du es dann in einer Schleife verarbeitest.... Ob das dann überhaupt nocht funktioniert, glaub ich nicht.


    Das was mir jetzt einfallen würde, wäre per Ajax (Asynchronous JavaScript and XML) nach 10 Sekunden immer ein Request starten.

    Hast du erfahrungen mit Javascipt, PHP und MySQL?
     
  3. 11. Februar 2009
    AW: Texte nacheinander ausgeben

    Einfacher ist es mit meta-weiterleitung und PHP..
    Ich bastel ma eben was mom
    PHP:
    <? php
    $id 
    $_GET [ 'id' ];
    $id  $id  1 ;
    // CONTENT ist die AnzeigeZeit in Sekunden..
    // Diese musst du noch editieren
    // und auch deinen Text anpassen...
    if( $_GET [ 'id' ] ==  ""  ||  $_GET [ 'id' ] ==  "0" ) {
    echo 
    "Dein Text" ;
    echo 
    '<meta http-equiv="refresh" content="5; URL=?id=' . $id . '">' ;
    };
    if(
    $_GET [ 'id' ] ==  "1" ) {
    echo 
    "Dein Text" ;
    echo 
    "<br>" ;
    echo 
    "Dein Text" ;
    echo 
    '<meta http-equiv="refresh" content="5; URL=?id=' . $id . '">' ;
    }
    if(
    $_GET [ 'id' ] ==  "2" ){
    echo 
    "Dein Text" ;
    echo 
    "<br>" ;
    echo 
    "Dein Text" ;
    echo 
    "<br>" ;
    echo 
    "Dein Text" ;
    echo 
    '<meta http-equiv="refresh" content="5; URL=?id=' . $id . '">' ;
    }
    if(
    $_GET [ 'id' ] ==  "3" ) {
    echo 
    "Dein Text" ;
    echo 
    "<br>" ;
    echo 
    "Dein Text" ;
    echo 
    "<br>" ;
    echo 
    "Dein Text" ;
    echo 
    "<br>" ;
    echo 
    "Dein Text" ;
    }


    ?>
    Da wo jetzt echo "Dein text" steht setzt du einfach deine Ausgelesen Texte ein...
    Und machst denn halt ne schleife rein und lässt diese denn durchrennen
     
  4. 11. Februar 2009
    AW: Texte nacheinander ausgeben

    Also dass es mit PHP allein nicht möglich ist habe ich mir schon gedacht, ansich hab ich es auch scon hinbekommen mit java, allerdings nur mit texten die in der quelldatei stehen, ich möchte aber dass die aus der datenbank genommen werden. Müsste dann also praktisch ne mischung zwischen PHP und java werden...
    Wefahrung mit PHP und Mysql habe ich relativ viele... Mit java eigentlich sogut wie keine.


    Mit meta hab ich es auch schon versucht, aber dann bekomm ich es nit hin dass immer der nächste datensatz ausgegeben wird, sondern immer nur der gleiche...
     
  5. 11. Februar 2009
    AW: Texte nacheinander ausgeben

    Du verwechselst glaube ich Java mit Javascript

    Also wenn du es mit javascript schon statisch gelöst hast und das ganze nur noch dynamisch brauchst, also mit der sql ausgabe...

    Dann sollte JSON das richtige für dich sein.
    Damit kannst du deine SQL Ausgabe in einen für javascript lesbaren array schreiben.

    Schau dir das mal an könnte dir dann vllt helfen: JSON JS, PHP



    Das mit den Meta Tags ist relativ unschön. Aber machbar. An den meta tag reload befehl muss nicht nur die id angehangen werden, sondern auch die id des ausgelesenen beitrages aus der datenbank.

    Die abfrage gestaltet sich dann WHERE id > $_GET['übergebeneid']
     
  6. 11. Februar 2009
    AW: Texte nacheinander ausgeben

    PHP:
    <? php

    $open 
    mysql_connect ( "localhost" "root" "" );
    mysql_select_db ( "1" $open );

    $check  mysql_query ( "SELECT * FROM hallo" );
    $num  mysql_num_rows ( $check );  //Guckt nach, wieviele Zeilen es gibt

    $id  $_GET [ 'id' ];
    if(
    $id  ==  "" $id  0 ;

    $abfrage  mysql_query ( "SELECT * FROM hallo WHERE id <=" . $id );
    if(!
    $abfrage ) echo  mysql_error ();

    $id  $id  1 ;
    while(
    $row  mysql_fetch_assoc ( $abfrage )) {

    if(
    $num  >=  $id ) {
    echo 
    $row [ Feld1 ]. "<br>" ;
    echo 
    '<meta http-equiv="refresh" content="3; URL=?id=' . $id . '">' ;
    } else {
    echo 
    '<meta http-equiv="refresh" content="0; URL=?id=0">' ;
    }

    }
    ?> 
    Bischö!

    Tabelle sah wie folgt aus:
    ID Feld1
    0 Hallo
    1 Welt
    2 wie
    3 gehts

    Wichtig ist, dass die Spalte mit der ID besteht... und der kleinste Wert 0 ist..
     
  7. 11. Februar 2009
    AW: Texte nacheinander ausgeben

    Danke erstmal, funzt einwandfrei, aber ein kleines Problem gibts da noch, was ist wenn es plötzlich 5 datensätze auszugeben gibt oder nur noch 2? Es soll so sein dass ich Datensätze hinzufügen oder löschen kann ohne was im code zu verändern...

    Der Grund warum ich dass brauchen ist der, es sollen immer verschiedenen texte auf nem beamer erscheinen, von nem anderen pc (der über lan mit dem wo der beamer dran hängt) aus sollen die texte ggf. bearbeitret werden, neue hinzugefügt oder welche gelöscht werden können... Das klappt auch wunderbar, jetzt komme ich nur bei der Ausgabe nicht weiter.
     
  8. 11. Februar 2009
    AW: Texte nacheinander ausgeben

    alter code geupdated...

    Einziger Nachteil..
    Du kannst nur eine Zeit haben in der die geladen werden..
    Nicht für erste Zeile 2 seks und die 2. Zeile 20 seks...

    Brauchste das ?
    Kann ich aber auch noch einbauen, wenns sein muss
     
  9. 11. Februar 2009
    AW: Texte nacheinander ausgeben

    Funzt alles einwandfrei, dass mit zeit ist NP, sollte eh alles gleich sein. Das einzige was mich jz noch stört ist, was ist wenn die erste ID 1, die zweite 4, die dritte 6 usw. ist? So wies jz ist müssen die ja immer 1,2,3 usw. sein.. Kann man da noch was machen?
     
  10. 11. Februar 2009
    AW: Texte nacheinander ausgeben

    Wie meinste das?
    Wenn du so ausgeben willst?
    1 = hallo
    3 = Welt
    4 = wie
    2 = gehts?

    und dann
    hallo welt wie gehts ausgegeben werden soll ?
    wenn ja, dass geht nit, weil ja nach der ID geordnet wird..
    Kannst ja aber einfach nen Management schreiben, indem man die IDs umändern kann..
     
  11. 11. Februar 2009
    AW: Texte nacheinander ausgeben

    tach, ja das geht.

    php basiert zwar auf dem request-respone-prinzip, aber man kann während dem laden auch schon sachen ausgeben.

    PHP:
    <? php
        set_time_limit
    ( 0 );
        
        function 
    force_print ( $text )
        {
            print 
    $text ;
            
    flush ();
        }
        
        
    force_print ( 'hallo' );
        
    sleep ( 10 );
        
    force_print ( ', na wie gehts?' );
        
    sleep ( 10 );
        
    force_print ( ' bis dann :-)' );
    ?>
    lass dir von den anderen keinen bären aufbinden
     
  12. 11. Februar 2009
    AW: Texte nacheinander ausgeben

    Ich weiß zwar nit, warum du das jetzt postest...
    Weil Hacker hat gesagt, dass sleep() und flush() für den Server großen Aufwand bedeuten...
    Und da wir noch nit wussten zu dem Zeitpkt, was er mit dem Script vor hat (einzelner User oder viele a la Chat oä) haben wir sleep etc nit verwendet..

    Mit sleep wäre die ganze Geschichte ja pille palle zum quadrat gewesen..

    Und es hat außerdem nie jmd behauptet, das dies nicht ginge...
     
  13. 11. Februar 2009
    AW: Texte nacheinander ausgeben

    Ich meinte eigentlich dass es so wie in deinem code ausgegeben wird, nur was ist wenns in der tabelle so aussieht:
    1 = hallo
    3 = Welt
    4 = wie
    8 = gehts?

    wenn also manche IDs nicht vorhanden sind?
     
  14. 11. Februar 2009
    AW: Texte nacheinander ausgeben

    schwachsinn, nur weil der browser länger wartet bedeutet das nich höhere serverlast ^^
    eher im gegenteil, sleep hält die ausführung an und entlastet den server

    //edit: kannst dir ja mal den apache/php prozess anschauen wärend nem "sleep" ( 0% )
     
  15. 11. Februar 2009
    AW: Texte nacheinander ausgeben

    Sagte ich ja bereits.. geht nicht, da die SQL-Abfrage ja nach der ID sortiert..
    1,2,3 etc pp....

    Weil PHP kann ja nicht wissen, in welcher Reihenfolge die Begriffe einen Sinn ergeben..

    //EDIT
    @ Murdoc:
    Wusste ich nit..
    Habe mir da keinen Kopf mehr drum gemacht, weil ich dachte Hacker hat recht
     
  16. 11. Februar 2009
    AW: Texte nacheinander ausgeben

    Ok alles klar, dann muss ich wohl dafür sorgen dass die IDs immmer 1,2,3,4,5... sind.
    Danke für Antworten, hat mir sehr weiter geholfen
    BW sind raus
     
  17. Video Script

    Videos zum Themenbereich

    * gefundene Videos auf YouTube, anhand der Überschrift.