#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 + Multi-Zitat Zitieren
#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? + Multi-Zitat Zitieren
#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 + Multi-Zitat Zitieren
#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... + Multi-Zitat Zitieren
#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'] + Multi-Zitat Zitieren
#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.. + Multi-Zitat Zitieren
#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. + Multi-Zitat Zitieren
#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 + Multi-Zitat Zitieren
#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? + Multi-Zitat Zitieren
#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.. + Multi-Zitat Zitieren
#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 + Multi-Zitat Zitieren
#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... + Multi-Zitat Zitieren
#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? + Multi-Zitat Zitieren
#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% ) + Multi-Zitat Zitieren
#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 + Multi-Zitat Zitieren
#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 + Multi-Zitat Zitieren