ilch Forum » Ilch Clan 1.1 » Fehlersuche und Probleme » Countdownbox zählt falsch

Geschlossen
  1. #1
    User Pic
    Matti63 Mitglied
    Registriert seit
    06.08.2012
    Beiträge
    19
    Beitragswertungen
    0 Beitragspunkte
    Hallo Ilch-Gemeinde,

    wir haben die externer Link Countdownbox auf unserer Webseite installiert.
    Wir haben einen 14täglichen Event. Jeweils am Sonntag um 19.00 Uhr.
    Der wurde bis anhin richtig angezeigt.
    Doch der Event vom 3. Februar 2013 ist nun um 3 Tage vor-verschoben. Könnte es sein, dass der Februar nur 28 Tage hat und der Countdown hier nicht richtig arbeitet? Die betroffene php datei wäre: calcount.php
    Der gesamte Code dieser Datei ist hier:
    <?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>

    Hat jemand das gleiche Problem?
    Hat jemand evtl. auch Erfahrungen mit anderen Countdowns (Flash, oder Java) welche sich in das ILCH Clan einbinden lassen (ohne grossen Aufwand ;)). Wichtig für uns, wäre einfach das wir einen Event wiederholen könnten in einem bestimmten Zeitrythmus.
    Für Eure hilfe danke ich bestens.

    Liebe Grüsse
    Matti

    betroffene Homepage: externer Link
    0 Mitglieder finden den Beitrag gut.
  2. #2
    User Pic
    Mairu Coder
    Registriert seit
    16.06.2006
    Beiträge
    15.334
    Beitragswertungen
    386 Beitragspunkte
    Zeigt nur bis Tage an, aber das reicht meiner Meinung nach eigentlich 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'];
        $event = $row['title'];
        $time = $row['time'];
    }
    ?>
    <div align="center">
        <?php if (!empty($t_id) && $time > time()) { ?>
            Noch<br /><span id="countdown" >Countdown</span><br />bis<br /> <?php echo $event; ?>
            <script type="text/javascript">
                (function() {
                    var cntEl = document.getElementById('countdown');
                    var cntSecs = <?php echo $time; ?>;
                    var cntFunc = function countdown () {
                        var now = parseInt(Date.now() / 1000);
                        var diff = cntSecs - now;
                        if (diff < 0) {
                            var text = 'abgelaufen';
                        } else {
                    
                            var secs, mins, hours, days, months, years;
                            secs = diff % 60;
                            diff = (diff - secs) / 60;
                            mins = diff % 60;
                            diff = (diff - mins) / 60;
                            hours = diff % 24;
                            diff = (diff - hours) / 24;
                        
                            // Anzeige formatieren
                            var text = '';
                            if (diff > 0) {
                                text += (diff === 1 ? "1 Tag" : diff + ' Tage') + ', <br />';
                            }
                            if (hours > 0) {
                                text += (hours === 1 ? "1 Stunde" : hours + ' Stunden') + ', <br />';
                            }
                            if (mins > 0) {
                                text += (mins === 1 ? "1 Minute" : mins + ' Minuten') + ', <br />';
                            }
                            if (secs > 0) {
                                text += (secs === 1 ? "1 Sekunde" : secs + ' Sekunden');
                            }
                        }
    
                        cntEl.innerHTML = text;
                        setTimeout(countdown, 1000);
                    };
    
                    // Alternativ window.onload = cntFunc; oder Javascriptbibliotheksfuntion verwenden
                    cntFunc();
                })();
            </script>
            <?php
        } else {
            echo 'Kein zukünftiges Event im Kalender';
        }
        ?>
    </div>
    Und auch immer mal ein Blick auf die FAQ werfen. | Mairus Ilchseite
    0 Mitglieder finden den Beitrag gut.
  3. #3
    User Pic
    Matti63 Mitglied
    Registriert seit
    06.08.2012
    Beiträge
    19
    Beitragswertungen
    0 Beitragspunkte
    Hi Mairu

    Besten dank für Deine Unterstützung. Auf der lokalen Installation scheint es so zu funzen.

    Liebe Grüsse
    Matti
    0 Mitglieder finden den Beitrag gut.
  4. #4
    User Pic
    DJ-Sweeper Mitglied
    Registriert seit
    16.04.2012
    Beiträge
    78
    Beitragswertungen
    0 Beitragspunkte
    Moin,moin
    ..und Frohe Ostern.

    Ich möchte mich in das Thema eben mit einreihen.
    Seit kurzem habe ich das Problem das sich der Countdown nicht mehr korrekt verhält.
    Der Countdown sollte eigentlich ( noch ca. 30 Minuten) anzeigen, anstatt
    siehe Bild!gesperrtes Bild

    Meine Calender.php sieht so aus.
    <?php 
    #   Copyright by Manuel
    #   Support www.ilch.de
    
    
    defined ('main') or die ( 'no direct access' );
    
    $m = date('n');
    $j = date('Y');
    
    $where1 = mktime(0 ,0,0,$m,1,$j);
    $where2 = mktime(24,0,0,$m,date('t',$where1),$j);
    
    $data = array();
    
    $result = db_query('SELECT * 
    	FROM prefix_kalender 
    	WHERE (time > '.$where1.' AND time < '.$where2.')
    		AND '.$_SESSION['authright'].' <= recht
    	ORDER BY time LIMIT 50');
    while ($row = db_fetch_assoc($result)) {
    	$t_id = $row['id'];
    	$t_d = date('j', $row['time']);
    	$t_m = date('n', $row['time']);
    	$t_y = date('Y', $row['time']);
    	$date = mktime(0,0,0,$t_m,$t_d,$t_y);
    	$data[$date][] = $row;
    }
    
    
    
    echo getCalendar($m, $j, '?kalender-v1-m{mon}-y{jahr}-d{tag}', '?kalender-v0-m{mon}-y{jahr}', $data, 1);
    
    ?>


    Auch hatte ich nie Probleme mit der nicht ganz genauen Serverzeit.
    gesperrtes Bild

    Ich habe in der Php schon versucht rumzu fummeln aber bis auf bunte Fehlermeldungen ist nix passiert.

    Vielleicht hat jemand eine Idee wo der Wurm drin sein könnte.
    Danke

    Homepage: externer Link


    Zuletzt modifiziert von DJ-Sweeper am 31.03.2013 - 21:40:37
    0 Mitglieder finden den Beitrag gut.
  5. #5
    User Pic
    Mairu Coder
    Registriert seit
    16.06.2006
    Beiträge
    15.334
    Beitragswertungen
    386 Beitragspunkte
    Was hat der Kalender mit dem Countdown zu tun?

    Ich nehme an es liegt an dem Zeitunterschied, allerdings liegt die Ursache bzw der Code eher in der Countdown Box.
    Und auch immer mal ein Blick auf die FAQ werfen. | Mairus Ilchseite
    0 Mitglieder finden den Beitrag gut.
  6. #6
    User Pic
    DJ-Sweeper Mitglied
    Registriert seit
    16.04.2012
    Beiträge
    78
    Beitragswertungen
    0 Beitragspunkte
    Der Kalender ist bei mir zum Sendeplan umfunktioniert und zeigt dann auf der HP die Restzeit bis zum Termin(Sendung)Ich hatte auch vorher schon diesen Zeitunterschied und die Zeit wurde korrekt angezeigt.
    Ist die php von mir den soweit ok? oder ist vielleicht durch Die Zeitumstellung (Sommerzeit) ein Fehler in der php?

    Gruß
    0 Mitglieder finden den Beitrag gut.
  7. #7
    User Pic
    Mairu Coder
    Registriert seit
    16.06.2006
    Beiträge
    15.334
    Beitragswertungen
    386 Beitragspunkte
    In der Datei steht nichts, was mit einem Countdown zu tun hat. Sie sieht soweit ok auf, sie ruft eine Funktion getCalendar auf, die die eigentliche Ausgabe übernimmt, aber in einer anderen Datei definiert ist.
    Und auch immer mal ein Blick auf die FAQ werfen. | Mairus Ilchseite
    0 Mitglieder finden den Beitrag gut.
  8. #8
    User Pic
    ]Chris[ Mitglied
    Registriert seit
    07.09.2012
    Beiträge
    33
    Beitragswertungen
    0 Beitragspunkte
    Ist zwar etwas ein etwas älterer Threadf und eigenltich hat mein Problem (bisher) nichts mit dem eigentlichen Countdown zu tun, nutze den Thread jetzt aber trotzdem mal für ein Problem mit dem Countdown.

    Folgendes Phänomen:
    Sobald ich den Countdown in einem der Menüs platziere, funktioniert die Greybox in der Gallery nicht mehr. Wenn ich den Countdown deaktiviere, also nirgendwo im Menü einbine (Dateien sind aber immer noch auf dem Server), funktiniert die Greybox wieder einwandfrei.

    Hat jemand eine Idee, woran das liegen könnte?

    Betroffene Seite:
    sv-oberotterbach.de
    0 Mitglieder finden den Beitrag gut.
  9. #9
    User Pic
    XxMaTzExX Mitglied
    Registriert seit
    28.05.2008
    Beiträge
    1.039
    Beitragswertungen
    14 Beitragspunkte
    poste mal code der box. vermute wird irgendwo zweimal jquery eingebunden
    0 Mitglieder finden den Beitrag gut.
  10. #10
    User Pic
    ]Chris[ Mitglied
    Registriert seit
    07.09.2012
    Beiträge
    33
    Beitragswertungen
    0 Beitragspunkte
    <?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>
    0 Mitglieder finden den Beitrag gut.
  11. #11
    User Pic
    XxMaTzExX Mitglied
    Registriert seit
    28.05.2008
    Beiträge
    1.039
    Beitragswertungen
    14 Beitragspunkte
    denkfehler von mir zunge. bitte die index.htm
    0 Mitglieder finden den Beitrag gut.
  12. #12
    User Pic
    ]Chris[ Mitglied
    Registriert seit
    07.09.2012
    Beiträge
    33
    Beitragswertungen
    0 Beitragspunkte
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    
    
    <html xmlns="http://www.w3.org/1999/xhtml">
    <!-- Kopfdaten -->
    <head>
        <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
        <title>{TITLE}</title>
        <link rel="stylesheet" type="text/css" href="include/designs/ilchClan/style.css">
    	<link rel="shortcut icon" href="http://www.sv-oberotterbach.de/favicon.ico"type="image/x-icon"/>
    	<meta property="og:image" content="http://sv-oberotterbach.de/include/images/Wappen_1/Logo_frei.gif" />
    	
    
      
        <!--Start GreyBox--><br />
    <script type="text/javascript">
        var GB_ROOT_DIR = "include/includes/js/greybox/";
    </script>
    <script type="text/javascript" src="include/includes/js/greybox/AJS.js"></script>
    <script type="text/javascript" src="include/includes/js/greybox/AJS_fx.js"></script>
    <script type="text/javascript" src="include/includes/js/greybox/gb_scripts.js"></script>
    <link href="include/includes/js/greybox/gb_styles.css" rel="stylesheet" type="text/css" />
        <!--End GreyBox-->
    </head>
    
    
    
      
      
      
    <!-- Inhalt -->
    <body>
    <div id="wrap">
    <div id="top"></div>
      <div id="header"><h1>{SITENAME}</h1></div>
      <div id="top2"><font><b> &raquo; </b>{HMENU}</font></div>
      <div id="content">
        
    <!-- Linke Navigation -->
      <div id="left_col">
      
        {_list_menunr1@
        <b class="menu_heading">%1</b>
        <table cellpadding="0" cellspacing="0" border="0" width="100%">
          <tr style="height: 12px;background: url(include/designs/ilchClan/img/box_left_middle.gif) top left repeat-y;">
            <td style="height: 12px; background: url(include/designs/ilchClan/img/box_left_top.gif) top left no-repeat;"></td>
        </tr>   
          <tr>
            <td style="background: url(include/designs/ilchClan/img/box_left_middle.gif) top left repeat-y;" align="top">%2</td>
          </tr>
          <tr style="height: 9px;background: url(include/designs/ilchClan/img/box_left_middle.gif) top left repeat-y;">
            <td style="height: 9px; background: url(include/designs/ilchClan/img/box_left_bottom.gif) bottom left no-repeat;"></td>
        </tr>
        </table>
        <br />
        }
        
      </div>
        
        
    <!-- Content Mitte --> 
      <div id="main_col">{EXPLODE}</div>
      
        
    <!-- Rechte Navigation -->
      <div id="right_col1">
        
            {_list_menunr2@
            <table width="200" cellpadding="0" cellspacing="0" border="0">
              <tr>
                <td  style="width:141px; height:21px; background: url(include/designs/ilchClan/img/200box_middle-right_top.gif) no-repeat;" align="center"><b class="menu_heading">%1</b></td>
              </tr><tr>
                <td align="center" style="padding:5px 0px 5px; background-image:url(include/designs/ilchClan/img/200box_mittle-right_middle.gif); background-repeat:repeat-y; text-align: center;">%2</td>
              </tr><tr>
                <td><img src="include/designs/ilchClan/img/200box_right_bottom.gif" alt="" /></td>
              </tr>
            </table>
      <br />
            }
              
      </div>
        
      <br style="clear: both;" />
      </div>
      
      
    <!-- Footer -->
        
       <!--
       Der Link darf generell entfernt werden (Lizenz GNU/GPL)
       Ich bitte aber darum, aufgrund der extrem vielen Arbeit die in diesem
       Script steckt, ilch.de irgendwie mit einem Banner einem Link oder
       sonst irgendwie zu unterstuetzen. Danke !!
         //-->
        
      <div id="footer">Script by <a href="http://www.ilch.de/" target="_blank">ilch.de</a></div>
    </div>
     {_boxes_fblikehover}
    </body>
    </html>
     
    <!-- Settings für Navigation -->
      
             <!--
                        {_list_DDDmenupoint@
                          <strong><big>&middot;</big></strong>
                <a %1 class="box" href="%2">%3</a>
                <br />
                        }
              //-->
                
              <!-- beispiel:
                [null, '%3', '%2', '%1', null|],|,
              -->
              <!--           anfang        +     link                |ende |teilende|teilee  -->
              <!-- horizontaler menupunkt -->
              {_list_hmenupoint@<li><a target="%1" class="box" href="%2">%3</a>|</li>|<br />|</ul></li>}
              <!-- horizontaler menupunkt anfang -->
              {_list_hmenubegi@<ul>}
              <!-- horizontaler menupunkt ende -->
              {_list_hmenuende@</ul>}
                
              <!-- vertikaler menupunkt -->
              {_list_vmenupoint@<li><a target="%1" class="box" href="%2">%3</a>|</li>|<br /><ul>|</ul></li>}
              <!-- vertikaler menupunkt anfang -->
              {_list_vmenubegi@<ul>}
              <!-- vertikaler menupunkt ende -->
              {_list_vmenuende@</ul>}



    Zuletzt modifiziert von ]Chris[ am 04.10.2013 - 22:11:19
    0 Mitglieder finden den Beitrag gut.
  13. #13
    User Pic
    Siggi Hall Of Fame
    Registriert seit
    08.02.2007
    Beiträge
    6.558
    Beitragswertungen
    327 Beitragspunkte
    Der Countdown nutzt doch garkein jquery?
    0 Mitglieder finden den Beitrag gut.
Geschlossen

Zurück zu Fehlersuche und Probleme

Optionen: Bei einer Antwort zu diesem Thema eine eMail erhalten