ilch Forum » Ilch Clan 1.1 » Module und Modifikationen » [Frage]Countdownbox für Kalender-Events

Geschlossen
  1. #1
    User Pic
    Draien Mitglied
    Registriert seit
    18.10.2009
    Beiträge
    6
    Beitragswertungen
    0 Beitragspunkte
    Guten Abend,
    Ich benutze die Countdownbox für Kalender-Events ( CountdownBox version 2 1.1 ) auf meiner Homepage ( www.promille-crew.com ) und hätte vielmehr eine Frage, anstatt eines Problems. Wäre es möglich, das angezeigte Event, als Link zu dem Event zu gestalten? Also das bei klicken auf den Namen der Kalender mit dem Event angezeigt wird?
    Hier hab ich mal den code der integrierten calcount.php (der ist etwas groß, tut mir Leid deswegen.):

    EDIT
    Problem gelöst. Siehe mein letzter Post


    <?php
    
    #   Copyright by: Manuel
    #   Support www.ilch.de
    
    
    #defined ('main') or die ( 'no direct access' );
    #aktuelle zeit
    
    $result = db_query('SELECT * 
    FROM prefix_kalender 
    WHERE (time > '.time().')
    AND '.$_SESSION['authright'].' <= recht
    ORDER BY time LIMIT 1');
    while ($row = db_fetch_assoc($result)) {
    $t_id = $row['id'];
    $tag = date('d', $row['time']);
    $monat = date('n', $row['time']);
    $jahr = date('Y', $row['time']);
    $stunde = date('G', $row['time']);
    $minute = date('i', $row['time']);
    $sekunde = date('s', $row['time']);
    $event = $row['title'];
    }
    ?>
    <script language="JavaScript" type="text/javascript">
    // Ziel-Datum in MEZ
    var jahr=<?php echo $jahr ?>, monat=<?php echo $monat ?>, tag=<?php echo $tag ?>, stunde=<?php echo $stunde ?>, minute=<?php echo $minute ?>, sekunde=<?php echo $sekunde ?>;
    var zielDatum=new Date(jahr,monat-1,tag,stunde,minute,sekunde);
    window.onload = countdown ;
    
    function countdown() {
            startDatum=new Date(); // Aktuelles Datum
    
            // Countdown berechnen und anzeigen, bis Ziel-Datum erreicht ist
            if(startDatum<zielDatum)  {
    
              var jahre=0, monate=0, tage=0, stunden=0, minuten=0, sekunden=0;
    
              // Jahre
              while(startDatum<zielDatum) {
                jahre++;
                startDatum.setFullYear(startDatum.getFullYear()+1);
              }
              startDatum.setFullYear(startDatum.getFullYear()-1);
              jahre--;
    
              // Monate
              while(startDatum<zielDatum) {
                monate++;
                startDatum.setMonth(startDatum.getMonth()+1);
              }
              startDatum.setMonth(startDatum.getMonth()-1);
              monate--;
    
              // Tage
              while(startDatum.getTime()+(24*60*60*1000)<zielDatum) {
                tage++;
                startDatum.setTime(startDatum.getTime()+(24*60*60*1000));
              }
    
              // Stunden
              stunden=Math.floor((zielDatum-startDatum)/(60*60*1000));
              startDatum.setTime(startDatum.getTime()+stunden*60*60*1000);
    
              // Minuten
              minuten=Math.floor((zielDatum-startDatum)/(60*1000));
              startDatum.setTime(startDatum.getTime()+minuten*60*1000);
    
              // Sekunden
              sekunden=Math.floor((zielDatum-startDatum)/1000);
    
              // Anzeige formatieren
              (jahre!=1)?jahre=jahre+" Jahre,<br />":jahre=jahre+" Jahr,<br />";
              (monate!=1)?monate=monate+" Monate,<br />":monate=monate+" Monat,<br />";
              (tage!=1)?tage=tage+" Tage,<br />":tage=tage+" Tag,<br />";
              (stunden!=1)?stunden=stunden+":":stunden=stunden+":";
              (minuten!=1)?minuten=minuten+":":minuten=minuten+":";
              if(sekunden<10) sekunden="0"+sekunden;
              (sekunden!=1)?sekunden=sekunden+"":sekunden=sekunden+"";
    
             document.getElementById('countdown').innerHTML=
                  //jahre+
                  monate+
                  tage+
                  stunden+
                  minuten+
                  sekunden;
                  
              setTimeout('countdown()',200);
            }
            // Anderenfalls alles auf Null setzen
            else document.getElementById('countdown').innerHTML=
                "0 Jahre,  0 Monate,  0 Tage,  0 Stunden,  0 Minuten  und  00 Sekunden";
          }
        </script><div align="center">
        <?php 
        if(!empty($t_id)) {
        echo 'Noch<br /><span id="countdown" >Countdown</span><br />bis<br />'.$event;
        }
        else {
        echo 'Kein Event im Kalender';
        }
        ?>
      
         </div>


    betroffene Homepage: externer Link


    Zuletzt modifiziert von Draien am 20.10.2009 - 19:39:19
    0 Mitglieder finden den Beitrag gut.
  2. #2
    User Pic
    Draien Mitglied
    Registriert seit
    18.10.2009
    Beiträge
    6
    Beitragswertungen
    0 Beitragspunkte
    niemand ne Idee?... Kenn mich mit javascript leider ned aus... leider traurig
    0 Mitglieder finden den Beitrag gut.
  3. #3
    User Pic
    karin17 Mitglied
    Registriert seit
    01.10.2009
    Beiträge
    26
    Beitragswertungen
    0 Beitragspunkte
    ey, keine geduld oder was?
    ich habe ein motivationsproblem bis ich ein zeitproblem habe.
    0 Mitglieder finden den Beitrag gut.
  4. #4
    User Pic
    Mairu Coder
    Registriert seit
    16.06.2006
    Beiträge
    15.334
    Beitragswertungen
    386 Beitragspunkte
    echo 'Noch<br /><span id="countdown" onclick="window.location.href=\'index.php?kalender-v1-e'.$row['id'].'\';">Countdown</span><br />bis<br />'.$event;


    Wenn ich mich nicht vertan hab, sollte diese Änderung dein Anliegen bewirken.

    Mhh ok das war auf den Countdown, ich sehe gerade hinten steht event, also wohl doch eher

    echo 'Noch<br /><span id="countdown">Countdown</span><br />bis<br /><a href="index.php?kalender-v1-e'.$row['id'].'">'.$event.'</a>';


    Nimm, was dir besser gefällt oder die Kombination aus beiden.


    Zuletzt modifiziert von Mairu am 20.10.2009 - 11:27:11
    Und auch immer mal ein Blick auf die FAQ werfen. | Mairus Ilchseite
    0 Mitglieder finden den Beitrag gut.
  5. #5
    User Pic
    Draien Mitglied
    Registriert seit
    18.10.2009
    Beiträge
    6
    Beitragswertungen
    0 Beitragspunkte
    Tach
    Zuerst einmal muss ich mir für meine Ungeduldigkeit entschuldigen, is ne Macke von mir verrückt und wollte nicht, dass der Thread irgendwo untergeht.

    Danke Mairu für den Code. Er zeigt mir jedoch jetzt z.B. den Geburtstag eines Mitgliedes an (der zurück liegt), also passt es ned ganz.Meine Vermutung ist, er nimmt entweder a) das Event, dass am nächsten zum heutigen Datum ist (auch wenn es bereits zurück liegt), oder b) er nimmt das letzte Event. Ich möchte aber, wenn es sich um Fall a) handelt, dass er auch die Geburtstage ignoriert etc. verrückt
    Aber nun hab ich wenigsten ein Ansatz, daher versuch ich es nochmal ein bisschen auf eigene Faust.
    Ich meine, die Countdownbox nimmt ja irgendwoher den Namen und andere Details für das nächste Event, daher versuch ich grad zu analysieren, wo er den Namen hernimmt, und wie ich auf diesen Verweisen kann, bzw ein Link zu diesem Event zu schaffen.

    Ich werde nochmal ein bsischen Experimentieren und eine Lösung hier posten, sofern ich eine finde.

    Sollte trotzdem noch jemand einen anderen Vorschlag haben, bin ich gern offen lachen

    Gruß Matze
    0 Mitglieder finden den Beitrag gut.
  6. #6
    User Pic
    Draien Mitglied
    Registriert seit
    18.10.2009
    Beiträge
    6
    Beitragswertungen
    0 Beitragspunkte
    Ok hab ein bisschen rumprobiert und das Problem erfolgreich gelöst.
    Hab einfach das '.$row['id'].' nach dem "e" im Link durch '.$t_id.' ersetzt, was zwar irgendwie am Anfang gleich deklariert wurde, aber irgendwie nicht übernommen wurde xD.
    Naja nun funktionierts und ich bin glücklich zwinker
    Hier nochma der Code, der in Zeile 99 ersetzt werden muss, bzw meine Version des Ganzen:
        echo 'Noch<br /><span id="countdown">Countdown</span><br />bis<br /><a href="index.php?kalender-v1-e'.$t_id.'">'.$event.'</a>';


    Vielen Dank nochma an Mairu


    Zuletzt modifiziert von Draien am 20.10.2009 - 19:45:22
    0 Mitglieder finden den Beitrag gut.
  7. #7
    User Pic
    wor Mitglied
    Registriert seit
    05.03.2008
    Beiträge
    49
    Beitragswertungen
    0 Beitragspunkte
    Hallo Leute,

    Das Thema ist zwar schon alt aber für mich im Moment Aktuell. Bei mir geht es um die gleich Box nur habe ich ein Anderes Anliegen.

    Meine Frage:
    ============

    Wenn ich zwei Events habe die am gleichen Tag zur gleichen Zeit beginnen zeigt die Box nur eins davon wie kann man es anpassen das es gleich beide anzeigt.

    Sollte es nicht möglich sein kann man es dann einfach so machen das immer die zwei nächsten Termine angezeigt werden ?

    So sieht mein Code aus:
    <?php
    
    #   Copyright by: Manuel
    #   Support www.ilch.de
    
    
    #defined ('main') or die ( 'no direct access' );
    #aktuelle zeit
    
    $result = db_query('SELECT * 
    FROM prefix_kalender 
    WHERE (time > '.time().')
    AND '.$_SESSION['authright'].' <= recht
    ORDER BY time LIMIT 1');
    while ($row = db_fetch_assoc($result)) {
    $t_id = $row['id'];
    $tag = date('d', $row['time']);
    $monat = date('n', $row['time']);
    $jahr = date('Y', $row['time']);
    $stunde = date('G', $row['time']);
    $minute = date('i', $row['time']);
    $sekunde = date('s', $row['time']);
    $event = $row['title'];
    }
    ?>
    <script language="JavaScript" type="text/javascript">
    // Ziel-Datum in MEZ
    var jahr=<?php echo $jahr ?>, monat=<?php echo $monat ?>, tag=<?php echo $tag ?>, stunde=<?php echo $stunde ?>, minute=<?php echo $minute ?>, sekunde=<?php echo $sekunde ?>;
    var zielDatum=new Date(jahr,monat-1,tag,stunde+24,minute,sekunde);
    window.onload = countdown ;
    
    function countdown() {
            startDatum=new Date(); // Aktuelles Datum
    
            // Countdown berechnen und anzeigen, bis Ziel-Datum erreicht ist
            if(startDatum<zielDatum)  {
    
              var jahre=0, monate=0, tage=0, stunden=0, minuten=0, sekunden=0;
    
              // Jahre
              while(startDatum<zielDatum) {
                jahre++;
                startDatum.setFullYear(startDatum.getFullYear()+1);
              }
              startDatum.setFullYear(startDatum.getFullYear()-1);
              jahre--;
    
              // Monate
              while(startDatum<zielDatum) {
                monate++;
                startDatum.setMonth(startDatum.getMonth()+1);
              }
              startDatum.setMonth(startDatum.getMonth()-1);
              monate--;
    
              // Tage
              while(startDatum.getTime()+(24*60*60*1000)<zielDatum) {
                tage++;
                startDatum.setTime(startDatum.getTime()+(24*60*60*1000));
              }
    
              // Stunden
              stunden=Math.floor((zielDatum-startDatum)/(60*60*1000));
              startDatum.setTime(startDatum.getTime()+stunden*60*60*1000);
    
              // Minuten
              minuten=Math.floor((zielDatum-startDatum)/(60*1000));
              startDatum.setTime(startDatum.getTime()+minuten*60*1000);
    
              // Sekunden
              sekunden=Math.floor((zielDatum-startDatum)/1000);
    
              // Anzeige formatieren
              (jahre!=1)?jahre=jahre+" Jahre, ":jahre=jahre+" Jahr, ";
              (monate!=1)?monate=monate+" Monate, ":monate=monate+" Monat, ";
              (tage!=1)?tage=tage+" Tage, ":tage=tage+" Tag, ";
              (stunden!=1)?stunden=stunden+":":stunden=stunden+":";
              (minuten!=1)?minuten=minuten+":":minuten=minuten+":";
              if(sekunden<10) sekunden="0"+sekunden;
              (sekunden!=1)?sekunden=sekunden+"":sekunden=sekunden+"";
    
             document.getElementById('countdown').innerHTML=
                  //jahre+
                  monate+
                  tage+
                  stunden+
                  minuten+
                  sekunden;
                  
              setTimeout('countdown()',200);
            }
            // Anderenfalls alles auf Null setzen
            else document.getElementById('countdown').innerHTML=
                "0 Jahre,  0 Monate,  0 Tage,  0 Stunden,  0 Minuten  und  00 Sekunden";
          }
        </script><div align="center">
        <?php 
        if(!empty($t_id)) {
        echo 'Noch <span id="countdown" >Countdown</span> bis '.$event;
        }
        else {
        echo 'Kein Event im Kalender';
        }
        ?>
      
         </div>


    Danke schon mal im voraus
    wor
    0 Mitglieder finden den Beitrag gut.
Geschlossen

Zurück zu Module und Modifikationen

Optionen: Bei einer Antwort zu diesem Thema eine eMail erhalten