Zufalltext

  • Themenstarter Themenstarter susi19
  • Beginndatum Beginndatum
S

susi19

Wer kann mir bitte mal helfen?

Also ich habe da folgendes vor:
Auf meiner Heimseite soll jeden Tag ein zufälliger Spruch angezeigt werden aber auch zu bestimmten Uhrzeiten.
Von 6 bis 7 in der Früh z.B. "Morgenstund hat...", oder "Der Frühe Vogel...", oder "Wer in der Früh zum Becker rennt..."
Von 7-8 dann wieder ein paar andere Weisheiten, die ebfalls zufällig ausgewählt werden u.s.w.
Die Sprüche möchte ich in einer Textdatei ablegen, weil ich von MyAssKuhÄll keinen Schimmer habe (von Php auch nicht) :-)
Kann man auch diese Fehlermeldungen von PHP abfangen, wenn z.B. die Textdatei nicht gefunden werden sollte, oder der Server Grippe hat. Wenn da dann mal ein Satz stehen würde, den normale Menschen auch verstehen, wäre das doch auch mal schön. Vielleicht" Bitte versuche es noch einmal, hier stimmt was nicht" oder so. Mit Link auf die Seite, die es vermurkst hat.
Auf Php.net und so habe ich mich schon rumgetrieben, aber da versteh ich gar nischt.
Habe auch schon im Stadtblatt nach PHP-Kursen geschaut. Gibt´s nicht. Nur "Häkeln für Anfänger" und "Wie bediene ich mein Handy".
Das hilft mir auch nicht weiter.
Für Antworten wäre ich sehr dankbar.
Susl

P.S. Ja, ich bin blond :)
 
Hi susi19
Also, alles was du da schreibst kann man mit PHP machen.

Wenn du aber willst, dass es jemand für dich macht, solltest du das in Stellenangebote(unentgeltlich) posten.

Hier helfen wir bei Problemen, bei Details.
 
Das hier ist jetzt vielleicht nicht so ganz ideal gelöst, aber es erfüllt den gewünschten Zweck:

PHP:
<?php
$datei = fopen("sprueche.csv", "r");

while ($spruch = fgetcsv($datei, 2000, ";")) {
   //jetzt nur die Sprüche der Kategorie 2, die Kategorien könnte man mit der Uhrzeit koppeln
   if ($spruch[0] == 2) {
      $sprueche[] = array($spruch[0], $spruch[1]);
   }
}

fclose($datei);

//Zufallszahl erzeugen und einen der Sprüche ausgeben
$zufall = rand(0, count($sprueche)-1);
echo $sprueche[$zufall][1];
?>

Die CSV die hier verwendet wird hat in der ersten Spalte immer die "Kategorie" als Zahl stehen und in der zweiten Spalte steht dann der Spruch. Ob die Sprüche einer Kategorie direkt hintereinander stehen oder nicht, spielt keine Rolle.
 
Hallo tombe!
Vielen Dank für Deine Mühe. Finde ich sehr nett, dass Du so schnell geantwortest hast.
Habe das Script mal ausprobiert. Funktioniert bei mir nicht. Liegt aber wohl daran, dass ich es gar nicht richtig verstehe und das mit der CSV, Spalten und Kategorien auch nicht kenne. Es reicht wohl nicht in jede Zeile der Datei einen Spruch zu schreiben.
Susl :)
 
Hi

so geht es noch einfacher:
PHP:
$file = "sprueche.txt";
if( !file_exists($file) )
  die("Fehler: Datei nicht gefunden");
$content = file_get_contents($file);
$parts = explode("|",$content);
$sayings = array();
foreach( $parts as $part ){
  $temp = explode(",",$part);
  $sayings[$temp[0]][] = $temp[1];
}
$hours = date("G");
if( isset($sayings[$hours]) ){
  echo $sayings[$hours][rand(0,count($sayings[hours])-1)]; //Spruch ausgeben
}
else
  echo "Fehler: Für die Uhrzeit gibt es keinen Spruch";
Code:
Textdatei:
7, der Frühe Vogel|7, Morgendstund|7,Wer in der Früh

Ungetestet, sollte aber klappen :)
 
Hallo timestam!
Danke für die Mühe.
Habe es gleich ausprobiert. Es funktioniert soweit, dass ein Text angezeigt wird. Bei Reload wird aber immer wieder der gleiche Text angezeigt, obwohl ich 3 Sprüche reingeschrieben habe.
Vielen Dank für die Hilfe :)
Susl
 
Hi

zeig uns dochmal deine Textdatei :)

edit: Oh ich seh gerade, ich hatte nur einen Tippfehler:
PHP:
$file = "sprueche.txt";
if( !file_exists($file) )
  die("Fehler: Datei nicht gefunden");
$content = file_get_contents($file);
$parts = explode("|",$content);
$sayings = array();
foreach( $parts as $part ){
  $temp = explode(",",$part);
  $sayings[$temp[0]][] = $temp[1];
}
$hours = date("G");
if( isset($sayings[$hours]) ){
  echo $sayings[$hours][rand(0,count($sayings[$hours])-1)]; //Spruch ausgeben
}
else
  echo "Fehler: Für die Uhrzeit gibt es keinen Spruch";
 
Zuletzt bearbeitet:
Hallo timestamp!
Hurra, das funktioniert jetzt. Ich bin höchst erregt vor Freude, wälze mich auf dem Boden und klatsche in die Hände.
Danke, danke Susl :)

Und wie geht so was?
Seite generiert in 0.03513 Sekunden mit 13 queries. Was sind queries? :confused:
 
Das mit der Zeit könnte man so lösen:
PHP:
<?php
$start=microtime(true);

// hier dein Inhalt

$stop=microtime(true);
echo "Seite generiert in ".round($stop-$start,3)." Sekunden";
?>
 
Zurück