thesecretboy Geschrieben 22. Juni 2007 Geschrieben 22. Juni 2007 Hallo zusammen, ich bin auf der Suche nach einem Script (PHP oder auch Java), welches beim Aufrufen einer Seite eine zufällige News darstellt. Es sollte kein Ticker oder dergleichen sein, um Ressourcen zu schonen. Einfach ein zufälliger Text, der aus einer vorbestimmten Anzahl an Newstexten einzeilig (!!!) dargestellt wird. Wichtig dabei: Der Hintergrund sollte transparent sein, sodaß ein Hintergrundbild durchscheint. Die News selbst sollte erst beim reload der Seite wieder neu gewählt werden, also nicht alle paar Sekunden von selbst neu laufen. Hat jemand eine Idee, wo ich sowas finden kann? Danke schonmal. Secret. Zitieren
geloescht_JesterDay Geschrieben 22. Juni 2007 Geschrieben 22. Juni 2007 function getRandomNews() { # Array für News-Zeilen $arNews = array(); # Verzeichnis mit Newstexten öffnen $handle = opendir("news"); if ($handle) { while (false !== ($file = readdir($handle))) { # News als Array einlesen $newsFile = file($file); # Erste Zeile übernehmen $arNews[] = $newsFile[0]; } # Anzahl gelesener Zeilen $newsCount = count($arNews); # zufälligen Eintrag bestimmen $random = rand(0, $newsCount -1); # Ausgabe erstellen $result = "<div style=\"border: 1px solif #000000;\">". $arNews[$random]. "</div>"; } else { $result = "Konnte News nicht lesen!"; } return $result; } [/php] Mal auf die Schnelle. Anpassen und evtl. Fehler korrigieren musst halt selber Ach ja, da du nicht gesagt hast wie die News vorliegen, gehe ich von "1 News = 1 Textdatei in einem bestimmten Ordner" aus. Zitieren
thesecretboy Geschrieben 22. Juni 2007 Autor Geschrieben 22. Juni 2007 Hallo JesterDay, vielen Dank für Deine Lösung. Verstehe ich das richtig, dass er nach einem Ordner "News" sucht und in diesem Ordner die News als Textdatei drin liegen? Im Format 1.txt und 2.txt und 3.txt? Wäre es schwierig die News an sich mit im Code unterzubringen? Wäre für mich halt wesentlich einfacher zu sehen, welche News derzeit noch aktuell sind und ggf. zu ändern. Ich Danke Dir sehr, JesterDay Zitieren
geloescht_JesterDay Geschrieben 22. Juni 2007 Geschrieben 22. Juni 2007 Hallo JesterDay, vielen Dank für Deine Lösung. Verstehe ich das richtig, dass er nach einem Ordner "News" sucht und in diesem Ordner die News als Textdatei drin liegen? Im Format 1.txt und 2.txt und 3.txt? Ja, so ung. Du könntest noch eine Namensprüfung da reinmnachen. Solltest du auch, weil er auch die Dateien "." und ".." findet. Die News im Code? Und bei jeder News den Code ändern? Sehr wenig empfehlenswert. Die News die nicht mehr aktuell sind verschiebst du in einen Unterordner, z.B. Oder du machst es über eine Datenbank, da ist es aber nicht ganz so trivial wie oben die erste Zeile zu bekommen (wenn auch nicht unbedingt schwer). Da könntest du noch ein Feld dazumachen, ob der Satz aktuell ist. Zitieren
thesecretboy Geschrieben 22. Juni 2007 Autor Geschrieben 22. Juni 2007 Eine Frage JesterDay. Wie binde ich das denn mit in diese HTML-Seite ein? Ich bin da nicht so bewandert, von daher gehe ich auf Deinen Vorschlag der Datenbank und der Namensprüfung mal besser nicht ein <table width="900" border="0" cellspacing="0" cellpadding="0"> <tr> <td width="13" class="letzte_aenderung"> </td> <td width="186" class="letzte_aenderung">Letzte Änderung: 18.06.2007</td> <td class="newsflash" width="53">NEWS:</td> <td class="newsflash" width="648">HIER SOLLEN DIE NEWS ERSCHEINEN</td> </tr> </table> Zitieren
geloescht_JesterDay Geschrieben 22. Juni 2007 Geschrieben 22. Juni 2007 Eine Frage JesterDay. Wie binde ich das denn mit in diese HTML-Seite ein? Gar nicht PHP läuft auf dem Server, und was dabei dann rauskommt ist im allgemeinen dann HTML, was der Browser gesendet bekommt. Wenn du eine Lösung für eine rein statische Seite suchst... Java-Applet, aber wer macht sowas heute noch? Zitieren
thesecretboy Geschrieben 22. Juni 2007 Autor Geschrieben 22. Juni 2007 OK, das bedeutet, dass ich in dieser Tabelle über Deinen Weg keine zufällig ausgewählte Newszeile darstellen kann? Hmmm.. komisch. Naja... dann trotzdem danke, auch wenn es dann gerade gar nicht weiterhilft. Zitieren
Aiun Geschrieben 22. Juni 2007 Geschrieben 22. Juni 2007 ich bin auf der Suche nach einem Script (PHP oder auch Java) wenn die Frage schon so formuliert ist, solltest du eigentlich erstmal wissen wie diese sprachen funktionieren, bevor du so explizit danach fragst. Zitieren
thesecretboy Geschrieben 22. Juni 2007 Autor Geschrieben 22. Juni 2007 Ich ging davon aus, dass man für eine Zufallsauswahl in jedem Fall auf PHP oder eben ein Javascript zurückgreifen muss. Mein Problem ist nur, dass ich derzeit ein Script laufen habe, was Zeile für Zeile die News Buchstabenweise aufbaut und dabei 100% Systemauslastung mit sich bringt. Daher wollte ich nur etwas, was mir in dieser Tabelle zufällig eine Zeile News darstellt. Mehr eigentlich nicht. Zitieren
geloescht_JesterDay Geschrieben 24. Juni 2007 Geschrieben 24. Juni 2007 Java ist nicht Javascript! Wie schon mal gesagt: Erstmal verstehen was du überhaupt willst. Dann ist es noch wichtig, was du überhaupt hast. Nur dann kannst du das nämlich entsprechend erweitern. Zitieren
thesecretboy Geschrieben 24. Juni 2007 Autor Geschrieben 24. Juni 2007 Hallo, also derzeit habe ich folgendes Javascript laufen. <script language="JavaScript" type="text/javascript"> // news ticker function var newslist=new Array(); var cnt=0; // current news item var curr = ""; var i=-1; // current letter being typed newslist[0]=new Array("News 1",""); newslist[1]=new Array("News 2",""); newslist[2]=new Array("News 3",""); function newsticker() { document.getElementById("mtxt") // next character of current item if (i < newslist[cnt][0].length - 1) { i++; temp1 = newslist[cnt][0]; temp1 = temp1.split(''); curr = curr+temp1[i]; document.getElementById("mtxt").innerHTML = "<font color='#990000' size=2 face=arial>"+curr+""; setTimeout('newsticker()',2) return; } // new item i = -1; curr = ""; if (cnt<newslist.length-1) cnt++; else cnt=0; setTimeout('newsticker()',4000) } // End --> </script> Über den Aufruf <span id="mtxt" style="font-family:Arial;font-size:13px;width:600;overflow:auto;height:20px"></span> wird dann innerhalb der Tabelle <table width="900" border="0" cellspacing="0" cellpadding="0"> <tr> <td width="13" class="news"> </td> <td width="186" class="news">Aktualisiert am: 13.02.07</td> <td class="news" width="53">NEWS:</td> <td class="news" width="648"> <span id="mtxt" style="font-family:Arial;font-size:13px;width:600;overflow:auto;height:20px"></span> </td> </tr> </table> der Reihenfolge nach eine News nach der anderen ausgegeben. Dabei baut sich Newsticker-gemäß das ganze Buchstabe für Buchstabe auf. Das ganze ist aber so Ressourcenlastig, dass es 100% Prozessorauslastung verursacht. Daher dachte ich an etwas, wo ich ebenfalls wie hier ein paar Newstexte vorgebe, die dann zufällig bei jedem Seitenaufbau ausgegeben werden. Und zwar sofort und nicht Buchstabe für Buchstabe aufgebaut werden. Da diese Tabelle der Footer einer jeden Seite ist, würde so beim hin und her surfen auf der Seite auch jedes mal eine andere News ausgegeben werden. Es muss also NICHT alle paar Sekunden ein neuer Text ausgegeben werden. Einfach nur beim öffnen der Seite. Das ist alles. Ich hoffe ich habe gut genug beschrieben was ich meine. Zitieren
MaddinMV Geschrieben 25. Juni 2007 Geschrieben 25. Juni 2007 Hallo, Über den Aufruf <span id="mtxt" style="font-family:Arial;font-size:13px;width:600;overflow:auto;height:20px"></span> hallo, wo isn da nen JavaScript aufruf drin?^^ seeeeeeh nix^^ Zitieren
thesecretboy Geschrieben 25. Juni 2007 Autor Geschrieben 25. Juni 2007 Siehe bitte den ersten Code in meinem Posting. Da steht <script language="JavaScript" type="text/javascript"> Zitieren
geloescht_JesterDay Geschrieben 25. Juni 2007 Geschrieben 25. Juni 2007 Siehe bitte den ersten Code in meinem Posting. Da steht <script language="JavaScript" type="text/javascript"> Was nur besagt, dass das Javascript Code ist, ein Aufruf ist da nirgendwo zu sehen. Von daher denke ich, dass das bei body onload gemacht wird. Aber wenn du schon ein Javascript hast (das ich mir jetzt nicht angesehen hab genau), dann heißt das, dass du alle News mit der Seite überträgst. Javascript läuft auf dem Client, also im Browser desjenigen, der deine Seite ansieht. Änder dieses Skript ab und du siehst nur eine News. Besser wäre es, nur eine zu übertragen, aber da sind dann wohl mehr Änderungen nötig. Und da du überhauüt keine Ahnung davon hast, ist das Skript anpassen wohl das beste hier (bzw anpassen lassen ). EDIT: bzw. es wird einfach aufgerufen, sobald der Javascript-Teil übertragen ist, da der code zum aufrufen ja nicht in einer Funktion steht o.ä. EDIT 2: Hier mal ohne zu Testen der code zum darstellen einer NEws: <script language="JavaScript" type="text/javascript"> var newslist=new Array(); var cnt=0; // number of news var i=0; // news item to show newslist[0]=new Array("News 1",""); newslist[1]=new Array("News 2",""); newslist[2]=new Array("News 3",""); cnt = newslist.length-1; i = round(math.random() * 10); //*** Zufallszahl while (i > cnt) i = round(math.random() * 10); document.getElementById("mtxt").innerHTML = newslist[i][1]; } // End --> </script> Noch eine Anmerkung: Maximal 10 News sind damit möglich. Zitieren
thesecretboy Geschrieben 25. Juni 2007 Autor Geschrieben 25. Juni 2007 Da ich nicht wirklich so viel Ahnung davon habe (das geb ich ja auch zu), fragte ich ja auch, ob es eine Möglichkeit gibt irgendwo ein paar Zeilen "News" zu hinterlegen (vielleicht analog wie bei der jetzigen Funktion) und bei jedem Aufruf der Seite wird dann zufällig eine Newszeile in der Tabelle unten angezeigt. Das ist alles was ich brauche. Zitieren
thesecretboy Geschrieben 25. Juni 2007 Autor Geschrieben 25. Juni 2007 Vielen lieben Dank JesterDay!!!!!! Ich werds mal versuchen. Zitieren
thesecretboy Geschrieben 25. Juni 2007 Autor Geschrieben 25. Juni 2007 Hallo JesterDay, die Seite sieht nun folgendermaßen aus: <script language="JavaScript" type="text/javascript"> var newslist=new Array(); var cnt=0; // number of news var i=0; // news item to show newslist[0]=new Array("News 1",""); newslist[1]=new Array("News 2",""); newslist[2]=new Array("News 3",""); newslist[3]=new Array("News 4",""); newslist[4]=new Array("News 5",""); newslist[5]=new Array("News 6",""); newslist[6]=new Array("News 7",""); newslist[7]=new Array("News 8",""); newslist[8]=new Array("News 9",""); newslist[9]=new Array("News 10",""); cnt = newslist.length-1; i = round(math.random() * 10); //*** Zufallszahl while (i > cnt) i = round(math.random() * 10); document.getElementById("mtxt").innerHTML = newslist[i][1]; } // End --> </script> <table width="900" border="0" cellspacing="0" cellpadding="0"> <tr> <td width="13" class="aenderung"> </td> <td width="186" class="aenderung">Aktualisiert am: 13.03.2007</td> <td class="news" width="53">NEWS:</td> <td class="news" width="648"><span id="mtxt" style="font-family:Arial;font-size:13px;width:600;overflow:auto;height:20px"></span></td> </tr> </table> Aber es passiert nichts. Es erscheint keine der oben definierten Zeilen. Hast Du noch eine Idee? Zitieren
geloescht_JesterDay Geschrieben 25. Juni 2007 Geschrieben 25. Juni 2007 newslist[0]=new Array("News 1",""); Aber es passiert nicht. Es erscheint keine der oben definierten Zeilen. Hast Du noch eine Idee? newslist ist ein Array, das aus Arrays besteht. in meinem code zeigst du das zweite Feld des inneren Arrays an. Da da bei dir nichts steht, wird auch ncihts angezeigt. Ich dachte, das erste Feld (News 1) wäre nur der Name oder sowas, und hinten dran steht dann der Text. document.getElementById("mtxt").innerHTML = newslist[0]; zeigt dir "News 1" (z.B.) an. Zitieren
thesecretboy Geschrieben 25. Juni 2007 Autor Geschrieben 25. Juni 2007 Hallo JesterDay, ich habe das ganze mal so abgeändert (und hoffe, dass es auch so richtig ist). <script language="JavaScript" type="text/javascript"> var newslist=new Array(); var cnt=0; // number of news var i=0; // news item to show newslist[0]=new Array("News 1"); newslist[1]=new Array("News 2"); newslist[2]=new Array("News 3"); newslist[3]=new Array("News 4"); newslist[4]=new Array("News 5"); newslist[5]=new Array("News 6"); newslist[6]=new Array("News 7"); newslist[7]=new Array("News 8"); newslist[8]=new Array("News 9"); newslist[9]=new Array("News 10"); cnt = newslist.length-1; i = round(math.random() * 10); //*** Zufallszahl while (i > cnt) i = round(math.random() * 10); document.getElementById("mtxt").innerHTML = newslist[i]; } // End --> </script> Dennoch wird nichts ausgegeben über <span id="mtxt" style="font-family:Arial;font-size:13px;width:600;overflow:auto;height:20px"></span> Fragende Grüße Zitieren
geloescht_JesterDay Geschrieben 25. Juni 2007 Geschrieben 25. Juni 2007 Wenn du jetzt das new Array noch wegnimmst... und mir fällt gerade auf, dass News1 wohl nie angezeigt werden wird... ist halt kein besonders tolles script Zitieren
thesecretboy Geschrieben 25. Juni 2007 Autor Geschrieben 25. Juni 2007 Hallo JesterDay, das wäre nicht so schlimm. Dann würde ich 1 eben immer leer lassen. Ich habe nun die ganzen "new Array"'s auch mal weg gemacht. Leider aber noch immer keine Reaktion. So siehts derzeit bei mir aus: <script language="JavaScript" type="text/javascript"> var newslist=new Array(); var cnt=0; // number of news var i=0; // news item to show newslist[0]=("News 1"); newslist[1]=("News 2"); newslist[2]=("News 3"); newslist[3]=("News 4"); newslist[4]=("News 5"); newslist[5]=("News 6"); newslist[6]=("News 7"); newslist[7]=("News 8"); newslist[8]=("News 9"); newslist[9]=("News 10"); cnt = newslist.length-1; i = round(math.random() * 10); //*** Zufallszahl while (i > cnt) i = round(math.random() * 10); document.getElementById("mtxt").innerHTML = newslist[i]; } // End --> </script> Zitieren
azett Geschrieben 25. Juni 2007 Geschrieben 25. Juni 2007 Warum so umständlich? Hab das vor ner ganzen Weile mal in einem eher humorvollen Rahmen entwickelt: function getRandomNerdIs() { $hints = array( "...wenn man sein Zimmer nicht aufräumt, sondern defragmentiert.", "...schnippische Anmerkungen im HTML-Quelltext zu <!-- verstecken -->.", "...einen neuen Apache installieren zu können, ohne einen Bildschirm einzuschalten.", "...wenn man am Rattern seiner Festplatte erkennt, wann eine E-Mail ankommt.", "...wetter.de zu checken, bevor man aus dem Fenster guckt.", "...wenn man in besonders romantischen Momenten die Helligkeit seines Notebook-Displays dimmt.", "...wenn Du einer Programmiersprache zum Geburtstag gratulierst.", "...wenn Du die technische Hotline berätst und nicht umgekehrt.", "...wenn die Pizzeria um die Ecke extra für Dich eine Webseite einrichtet.", "...einen Kommentar im Kernelcode eines freien Betriebssystems zu hinterlassen.", "...eine Sicherheitslücke auf microsoft.com zu finden.", "...am Hexcode eines JPGs zu erkennen, welches Supermodel das Bild zeigt.", "...wenn man annimmt, daß<br />Gott == Root.", "...nicht zu schlafen, sondern auf Energiesparmodus zu schalten.", "...wenn deine Freundin mit Nachnamen ".jpg" heißt.", "...den OSI-Schichten Kosenamen zu geben.", "...wenn du im Sommer unwillkürlich versuchst, den Gammawert der Sonne zu verringern.", "...den passenden Algorithmus für Frauen zu suchen.", "...wenn du Termine in UNIX-Zeit aufschreibst.", "...wenn über der Tür "127.0.0.1, sweet 127.0.0.1" steht.", "...wenn deine besten Freunde Horst Local und Ruth Document heißen.", "...sich Telefonnummern grundsätzlich binär zu merken.", "...die Zugangsdaten deines Call-by-Call- Providers auswendig zu kennen.", "...zum Einschlafen nicht Schäfchen, sondern Pixel zu zählen.", "...die Kellerwohnung mit den Servern zu heizen.", "...zu Weihnachten statt Lichterketten die LEDs an Rechnern, Hubs und Switches blinken zu sehen.", "...wenn du nur mit dem Rauschen der Lüfter einschlafen kannst.", "...wenn du deinen Sohn Pascal nennen wirst.", "...deiner Freundin eine Perl-Kette zu schenken." ); srand(microtime()*1000000); $randno = rand(0,count($hints)-1); return "$hints[$randno]"; } [/code] In meiner index.php stand dann nur: [CODE]echo "<h3>Nerd ist, ...</h3>" . getRandomNerdIs(); Der Umbau auf etwas ernster gemeinte News sollte nicht so schwer fallen Zitieren
thesecretboy Geschrieben 26. Juni 2007 Autor Geschrieben 26. Juni 2007 Hat prima funktioniert, azett. Danke Dir, aber auch JesterDay! Zitieren
Empfohlene Beiträge
Dein Kommentar
Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.