täglich wechselnde Startseite? möglich?
samurif
- javascript
Hallo, (ich hoffe, ich bin im richtigen Bereich)
ich möchte gerne eine Startseite haben, die sich selbst - je nach Wochentag - anpasst.
Also brauche ich 6 Seiten, die je nach Wochentag als Startseite herhalten...
Mo - Fr + Sa/So
ist das realisierbar?
Wenn ja, wo kann ich nachlesen, wie es realisiert wird? bzw. hat jemand eine Idee, wie ich es umsetzen kann.
Danke
samurif
Hallo,
Also brauche ich 6 Seiten, die je nach Wochentag als Startseite herhalten...
ist das realisierbar?
Ja. Du brauchst eine Abfrage auf den Wochentag, das geht serverseitig mit einer Programmiersprache wie PHP und im Browser mit Javascript.
Da man Javascript abschalten kann, ist PHP dein Freund.
Du machst 6 verschiedene Seiten als PHP- include (Bausteine). Das immer gleiche Rumpfprogramm fragt den Wochentag ab und lädt die entsprechende include- Datei, die dann zum Client geschickt wird.
Auf diese Weise kannst du auch bequem eine Neujahrs-, Oster-, Pfingstseite machen ...
Kalle
klasse, das das funktioniert, Danke Kalle, für den gesteckten Rahmen.
Da ich mit PHP bisher nicht vertraut bin (die Lösung gefällt mir eh besser als JAvaSkript) mache ich mich auf die Suche ;-)
Danke
Andi
ps. für weitere Umsetzungshinweise (technisch) bedanke ich mich vorab
Hallo,
Also brauche ich 6 Seiten, die je nach Wochentag als Startseite herhalten...
ist das realisierbar?
Ja. Du brauchst eine Abfrage auf den Wochentag, das geht serverseitig mit einer Programmiersprache wie PHP und im Browser mit Javascript.
Da man Javascript abschalten kann, ist PHP dein Freund.
Du machst 6 verschiedene Seiten als PHP- include (Bausteine). Das immer gleiche Rumpfprogramm fragt den Wochentag ab und lädt die entsprechende include- Datei, die dann zum Client geschickt wird.
Auf diese Weise kannst du auch bequem eine Neujahrs-, Oster-, Pfingstseite machen ...
Kalle
so, nun zum schwierigen Teil:
Ermitteln des Wochentages:
<?php
$timestamp = time();
$datum = date("w",$timestamp);
echo $datum;
?>
ist das richtig?
das includieren habe ich mir auch angeschaut, ist es richtig, das jetzt eine if-Abfrage kommen muss, um den richtigen content (Baustein) anzuzeigen?
so, nun zum schwierigen Teil:
Ermitteln des Wochentages:
<?php
$timestamp = time();
$datum = date("w",$timestamp);
echo $datum;
?>ist das richtig?
das includieren habe ich mir auch angeschaut, ist es richtig, das jetzt eine if-Abfrage kommen muss, um den richtigen content (Baustein) anzuzeigen?
ist das die richtige if-Abfrage / passen die Klammern?
oder bin ich auf dem Holzweg...
<?php
if($datum == "1")
{
echo "montag.php";
}
else
{
if($datum == "2")
{
echo "dienstag.php";
}
else
{
if($datum == "3")
{
echo "mittwoch.php";
}
else
{
if($datum == "4")
{
echo "donnerstag.php";
}
else
{
if($datum == "5")
{
echo "freitag.php";
}
else
echo "wochenende.php";
}
}
}
}
}
}
?>
Hi!
Das ist supoptimal... Es gibt zuerstmal else if. Damit sparst dir ewig tiefe Verschachtelungen.
Dann ist fuer Dein Vorhaben ein If-Konstrukt eh nur maessig geeignet. Fuer soetwas nutzt man meist einen switch.
Das ist supoptimal... Es gibt zuerstmal else if. Damit sparst dir ewig tiefe Verschachtelungen.
Dann ist fuer Dein Vorhaben ein If-Konstrukt eh nur maessig geeignet. Fuer soetwas nutzt man meist einen switch.
Oder gleich einen Array und fragt den Index ab.
mfg Beat
Hi!
Oder gleich einen Array und fragt den Index ab.
Hmmm. Sexy!
*pfeif*
Hi,
Oder gleich einen Array und fragt den Index ab.
Hmmm. Sexy!
Oder man benennt die einzubindenden Dateien gleich mit Wochentagsnummer+".php" - dann braucht man die Wochentagsnummer beim include nur noch mit der Endung verknuepfen, und fertig.
MfG ChrisB
Oder gleich einen Array und fragt den Index ab.
Hmmm. Sexy!
Oder man benennt die einzubindenden Dateien gleich mit Wochentagsnummer+".php" - dann braucht man die Wochentagsnummer beim include nur noch mit der Endung verknuepfen, und fertig.
Bis auf die Tatsache, dass er am Samstag und Sonntag die gleiche zeitung ausliefern will.
Dann gibt's zum Sonntag halt einen fatal Error.
mfg Beat
Hi,
Oder man benennt die einzubindenden Dateien gleich mit Wochentagsnummer+".php" - dann braucht man die Wochentagsnummer beim include nur noch mit der Endung verknuepfen, und fertig.
Bis auf die Tatsache, dass er am Samstag und Sonntag die gleiche zeitung ausliefern will.
Ups, so genau hatte ich nicht gelesen.
Dann gibt's zum Sonntag halt einen fatal Error.
Oder man legt einen Symlink 0.php an, der auf 6.php verweist :-)
Bzw. eine if-Abfrage fuer diesen einen Sonderfall reicht ja dann auch aus.
$tagNummer = date('w');
if($tagNummer == 0) { $tagNummer = 6; }
include($tagNummer.'.php');
MfG ChrisB
wow, den gesamten Input muss ich jetzt erst einmal verarbeiten. Danke für die Tipps!
gut, das ich mal C lernen musste ...(und fast nix mehr weiß)
Das ist supoptimal... Es gibt zuerstmal else if. Damit sparst dir ewig tiefe Verschachtelungen.
fürs protokoll:
else if hat keinen technischen unterschied zum geposteten code des op (lediglich die schreibweise ist anders und man spart sich die einrückung nud verschachtelung) - elseif wäre etwas anderes
es läuft aber aufs selbe raus ;)
elseif
"Die Bedeutung der Syntax ist leicht unterschiedlich (falls Sie mit C vertraut sind, das ist das gleiche Verhalten) aber der Grundtenor ist der, dass beide Schreibweisen, bezogen auf das Ergebnis, sich exakt gleich verhalten."
Dann ist fuer Dein Vorhaben ein If-Konstrukt eh nur maessig geeignet. Fuer soetwas nutzt man meist einen switch.
oder man bennent die einzubindenden files gleich nach dem wochentag und spart sich die verzweignug - sofern keine variablen von aussen durchgereicht werden, ist das klein problem
allerdings mussm an hier aufpassen, dass die ausgegebenen daten auch so sind, wie erwartet (je nach servereinstellung bzw sprache kann das abweichen)
Du machst 6 verschiedene Seiten als PHP- include (Bausteine).
alternativ: du bindest je nach wochentag ein zusätzliches stylesheet ein, welches die visuellen unterschiede ausmacht (anders hintergrundbild, andere farben usw) - ein vollständig anderer html-quelltext ist ggf. garnicht nötig
die Stylesheets helfen mir nicht, da ich verschiedene Texte ausgeben möchte,
somit sind die Bausteine eine gute Lösung für mich
Du machst 6 verschiedene Seiten als PHP- include (Bausteine).
alternativ: du bindest je nach wochentag ein zusätzliches stylesheet ein, welches die visuellen unterschiede ausmacht (anders hintergrundbild, andere farben usw) - ein vollständig anderer html-quelltext ist ggf. garnicht nötig
die Stylesheets helfen mir nicht, da ich verschiedene Texte ausgeben möchte,
somit sind die Bausteine eine gute Lösung für mich
na dann ist ja alles geklärt hoffe ich doch, jetzt liegts an dir ob du dich für die switch-geschichte, beats letzte idee (bzw meinen ansatz dazu), ein array oder sonstwas dafür verwendest
btw: anstatt include solltest du in jedem fall require verwenden, require führt beim nichtvorhanden sein des einzubindenden files zu einem fatalen fehler (und somit zum scriptabbruch), include gibt ein warning aus und setzt fort
zwar ist die include-geschichte augenscheinlich die bessere wahl, fehlermeldungen zu unterdrücken oder zu ignorieren ist allerdings schlechter stil und "sehr peinlich" (eine suche in der suchmaschine deiner wahl nach _"Warning: include" "failed to open stream"_ liefert genügend beispiele wo diese fehlermeldung online in einer seite zu sehen ist)
Hi!
ist das realisierbar?
Klar. Jeden Aufruf ne neue Seite, wenn DU willst. Was sollte Dich hindern?
Wenn ja, wo kann ich nachlesen, wie es realisiert wird? bzw. hat jemand eine Idee, wie ich es umsetzen kann.
Am besten nicht mit JavaScript. Serverseitig waere sinnvoll. Php sollte auf den meisten Webspaces verfuegbar sein...
ist das die richtige schreibweise?
<?php
$timestamp = time();
$datum = date("w",$timestamp);
echo $datum;
?>
<?php
switch ($datum) {
case 1:
echo "<? include ("montag.php"); ?> ";
break;
case 2:
echo "<? include ("dienstag.php"); ?> ";
break;
case 3:
echo "<? include ("mittwoch.php"); ?> ";
break;
case 4:
echo "<? include ("donnerstag.php"); ?> ";
break;
case 5:
echo "<? include ("freitag.php"); ?> ";
break;
default:
echo "<? include ("we.php"); ?> ";
}
?>
echo "<? include ("montag.php"); ?> ";
das ist natürlich blödsinn, du willst ja include "montag.php"; ausführen, nicht und nicht das selbe als string ausgeben ;)
echo "<? include ("montag.php"); ?> ";
das ist natürlich blödsinn, du willst ja include "montag.php"; ausführen, nicht und nicht das selbe als string ausgeben ;)
Noob fragt:
Kann ich alles komprimieren ?
<?php
include(
'tagblatt_nr' .
( date("w",$timestamp) || 6 ) .
'.php'
);
?>
Am Sonntag wird dann 'tagblatt_nr6.php' wie am Samstag includiert
mfg Beat
Noob fragt:
Kann ich alles komprimieren ?<?php
include(
'tagblatt_nr' .
( date("w",$timestamp) || 6 ) .
'.php'
);
?>Am Sonntag wird dann 'tagblatt_nr6.php' wie am Samstag includiert
soweit ich weiss, funzt das so nicht - die 6 nach dem operator wird ignoriert
dafür müsste wie bereits an anderer stelle erwähnt ein symlink herhalten
alternativ mit einer bedingung
include (('foo' . (date("w", time()) == 6) ? 5 : date("w", time())) . '.html');
das sollte dafür sorgen, dass auch an tag 6 das file von tag 5 eingebunden wird (nicht getestet)
ist das die richtige schreibweise?
<?php
$timestamp = time();
$datum = date("w",$timestamp);
echo $datum;
?>
Du gehst in Einzelschritten vor, und speicherst die Zwischenresultate jetzt noch in Variablen, die eigentlich aufgelöst werden können.
Ich sage nicht, dass das falsch ist, denn das ist für das Debugging ja optimal. Nur 'kosten' unnötige Variablen immer etwas, es sei denn ein ganz kluger intperpreter kann sie automatisch weg rationalisieren.
<?php
$datum = date( "w", time() );
?>
und auch $datum brauchst du nicht...
<?php
switch ($datum) {
switch( date( "w", time() ) )
case 1:
echo "<? include ("montag.php"); ?> ";
break;
case 2:
echo "<? include ("dienstag.php"); ?> ";
break;
case 3:
echo "<? include ("mittwoch.php"); ?> ";
break;
case 4:
echo "<? include ("donnerstag.php"); ?> ";
break;
case 5:
echo "<? include ("freitag.php"); ?> ";
break;
default:
echo "<? include ("we.php"); ?> ";
}
?>
Die Schreibweise ist schon richtig, aber dein Programm druckt
"<? include ("freitag.php"); ?> " aus , statt es zu tun.
In Perl würde ich halt schreiben:
open(FH,'<','tagblatt_'.( ( localtime(time) )[6] || 6 ).'.xml')
or die ("Scheisstag $!");
print <FH>;
close();
kein iffelturm und keine zwitcherei aber ein einziges ||
Das hilft dir jetzt nicht weiter. Aber mit PHP kannst du zu einer ähnlich kurzen Lösung gelangen.
Von PHP habe ich leider keinen blassen Schimmer.
mfg Beat;
Nur 'kosten' unnötige Variablen immer etwas, es sei denn ein ganz kluger intperpreter kann sie automatisch weg rationalisieren.
das tun auch einfache interpreter, sonderlich klug muss der dafür nicht sein
das problem ist eher, dass php keinen byte cache besitzt und diese optimierungsmaßnahmen vor dem eigentlichen ausführen jedes mal aufs neue gemacht werden müssen
vielen Dank - jetzt klappt es, damit:
switch( date( "w", time() ) )
{
case 1:
include ("montag.inc");break;
ect.