forwarting mit Linkwechsel am 2. WE im Monat?

Hiho Leute…

Da ich mich nur en bisschen mit php auskenne, muss ich euch mal um HIlfe bitten:
Es gibt ja die Möglichkeit, einen Link an einem bestimmten Datum - oder Tag - in gleichen Intervallen wechseln zu lassen…

sprich

Mo 6h - Sa 23h Link1
Sa 23h - Mo 6h Link2
dann wieder Link 1

sieht dann im Code etwa so aus:

     <if(date('w') == 6 && date('G') >= 6 && date('G') <= 23)>
      <then><a href="....">...</a></then>
      <else>....</else>
     </if>

Nun is mein Probelm, dass ich keine spezifischen Daten angeben kann, ich brauch son Wechsel für [B]

jedes 2. Wochenende (Sa 0.00h - Mo 0.00h) im Monat[/B]
(Datum jeden Monat verschieden)

und das wenn möglich als Weiterleitungsseite…

hab schon viel rumprobiert, aber kam zu keinem wirklichen Ergebnis leider…
Hat hier vllt einer ne Idee, wie man das scripten kann??

:???::???::???: HILFE!!! :-?:???::???:

Mit date() kannst Du prüfen, ob ein Datum ein Wochentag oder ein Wochenende ist.

Das ja alles schön und gut schonmal, allerdings ist mein größtes Problem, dass ich immer das 2. Wochenende im Monat brauche - sons klar,

< if date('w) == 6 && date (‚G‘)>= 0 && date(‚w‘) == 1 && date (‚G‘) <=0 )>

wäre dann Jeder Samstag ab 0h - jeden Montag bis 0h … aber brauche das ja nur jedes 2. Mal im Monat, da is mein größtes Problem nun^^

edit:/ es gibt doch ’ w( ) ’ für Woche im Jahr, gibts das nicht auch fürn Monat oder sowas Ähnliches, das würd dann vieles Vereinfachen… dann könnte man einfach die 2. Woche, Sa 0.00 - So 23.59 machen, und damit hätte sichs, oder??
(mal son Gerdanke grade…)

hab das nunmal so gemacht… aber bin mir nciht sicher mit dem headerlink^^…

<html>

<head>
<meta name="GENERATOR" content="Microsoft FrontPage 5.0">
<meta http-equiv="refresh" content="5; URL=.$url">
<meta name="ProgId" content="FrontPage.Editor.Document">
<meta http-equiv="Content-Type" content="text/html; charset=windows-1252">
<title>Neue Seite 1</title>
</head>

<body>
<?php
if ((date('W') == 2 || date('W') == 6 || date('W') == 10 || date('W') == 14 || date('W') == 19 || date('W') == 23 || date('W') == 27 || date('W') == 32 || date('W') == 36 || date('W') == 45 ||1date('W') == 45 || date('W') == 49 ||) && (date('G') >= 0 && date('G') <= 23.59)) {
$url = "http://www.united-radio-for-friends.de/stream.php";
} else {
$url = "http://radio-walhalla.de/";
}
header("location:".$url);
?>
</body>

</html>

Nicht ganz sauber finde ich. Ist an sich eine rein mathematische Aufgabe. Sieh es mal so:

Das zweite Wochenende in einem Monat kann maximal am 14. des Monats sein und minimal am 8. des Monats.
Also musst Du lediglich prüfen, ob der aktuelle Tag kleiner 14 und größer 8 ist und ein Wochenendtag ist.

if( ( date('w') == 0 || date('w') == 6 ) && date('j') < 14 && date('j') > 8 ){..}

Alles klar? :wink:

netter gedanke, stimmt so aber nicht, weil ‚das 2. WE‘ in dem Fall nur unter 14. is, wennman davon ausgeht, dass das erste auch mim Sa oder So stattfände… wird aber nur als erstes gezählt, wenn voher min ein Tag von Mo - Fr auftaucht

Wieso wirst das 2. WE nur als erstes gezählt? Oo

Wenn der Monat mit Fr, Sa oder So beginnt, zählt das in dem Falle nicht als 1. WE für den Linkwechsel… sons kommt das von der Planung nicht hin…

Dann prüfe eben auch, ob der 1. des Monats ein Fr, Sa oder So war.

if( ( ( date('w') == 0 || date('w') == 6 ) && date('j') < 14 && date('j') > 8 ) || ( date('j') < 7 && ( date('w', time()-date('j')*60*60) == 0 || date('w', time()-date('j')*60*60) == 6 || date('w', time()-date('j')*60*60) == 5 ) ){..}

Wie gesagt, pure Mathematik.

Ich habe immer ein mulmiges Gefühl bei diesen „Klartext“-Angaben, aber:

[php]$dt = new DateTime(‚second saturday of this month‘);
echo $dt->format(‚Y-m-d H:i:s‘);[/php]

öäm das irritiert mich nun grad etwas… was machen die ganzen 60s da???
und bei den klartekt-Angaben … das funzt iwie garnicht mehr dann…

P.S. - der findet ausserdem das >> .$url << nicht, leitet zwar weiter und sagt dann seite mit der Adresse .$url nciht gefunen… wie mach ich denn diese weiterleitung *blödguck

mermshaus’ Beispiel funktioniert nur ab PHP Version 5.2, wenn Du etwas älteres hast wird es nicht klappen.

Bei meinem Beispiel rechne ich einfach den 1. Tag des Monats aus. Angenommen heute ist der 26., dann kommt bei time() der Unix-Zeitstempel in Sekunden für den 26. heraus. Davon muss man nur Sekunden bis zum 1. des Monats abziehen, also 26 Tage in Sekunden umrechnen (266060). Wie gesagt, Mathematik.

Deine Weiterleitung sollte, wenn Du sie wie oben geschrieben hast, funktionieren. Es könnte aber sein, dass Du location groß schreiben musst, also Location.

Wie ist denn das zweite Wochenende definiert? Die beiden ersten SA+SO die auf den ersten SO eines Monats folgen?

Nach Kalender ja. Aber scheinbar gibt es bei ihm Sonderregeln :wink:

ok, hab mein Problem gelöst… sieht jetzt wie folgt aus, falls ncoh jemand mal interesse an sowas hat:

[CODE]

<?php $zweites_WE = false; // Samstag oder Sonntag? if ( date('N') == 6 OR date('N') == 7 ) { // 2. Im Monat? $heutiger_tag = date('d'); if ( $heutiger_tag >= 07 and $heutiger_tag <= 14 ) { $zweites_WE = true; } } if ( $zweites_WE == true ) { $wohin = 'http://www.united-radio-for-friends.de/news.php'; } else { $wohin = 'http://home.radiowalhalla.de/'; } header("Location:$wohin"); ?>

[/CODE]Besten Dank jedenfalls für eure Hilfe

„07“ ist eine Zahl in oktaler Schreibweise, das passt dort nur ‚zufällig‘. Besser: „7“. Wenn der erste Tag des Monats ein Montag ist, wird $zweites_WE für den siebten Tag des Monats wahr, wenn mich nicht alles täuscht.

Die beiden ersten SA+SO die auf den ersten SO eines Monats folgen?

[php]<?php

/**

  • Returns the date(‚j‘) of the month’s second weekend’s saturday

  • @param int $year

  • @param int $month

  • @return int
    */
    function getSecondWeekendStart($year = null, $month = null)
    {
    $year = ($year !== null) ? $year : date(‚Y‘);
    $month = ($month !== null) ? $month : date(‚n‘);

    $start = 0;
    $i = 1;

    while ($start === 0) {
    $day = mktime(0, 0, 0, $month, $i, $year);

     if ((int) date('w', $day) === 0) {
         $start = $i + 6;
     }
    
     $i++;
    

    }

    return $start;
    }

$secondWeekendStart = getSecondWeekendStart();
$today = (int) date(‚j‘);

if ($today === $secondWeekendStart || $today === $secondWeekendStart + 1) {
// Second weekend
}[/php]