Zum Inhalt springen

Zufällige News


Empfohlene Beiträge

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.

Link zu diesem Kommentar
Auf anderen Seiten teilen



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.

Link zu diesem Kommentar
Auf anderen Seiten teilen

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

Link zu diesem Kommentar
Auf anderen Seiten teilen

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.

Link zu diesem Kommentar
Auf anderen Seiten teilen

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>

Link zu diesem Kommentar
Auf anderen Seiten teilen

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?

Link zu diesem Kommentar
Auf anderen Seiten teilen

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.

Link zu diesem Kommentar
Auf anderen Seiten teilen

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.

Link zu diesem Kommentar
Auf anderen Seiten teilen

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.

Link zu diesem Kommentar
Auf anderen Seiten teilen

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.

Link zu diesem Kommentar
Auf anderen Seiten teilen

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?

Link zu diesem Kommentar
Auf anderen Seiten teilen

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.

Link zu diesem Kommentar
Auf anderen Seiten teilen

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

Link zu diesem Kommentar
Auf anderen Seiten teilen

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>

Link zu diesem Kommentar
Auf anderen Seiten teilen

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 ;)

Link zu diesem Kommentar
Auf anderen Seiten teilen

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.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung wiederherstellen

  Nur 75 Emojis sind erlaubt.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...