ilch Forum » Ilch Clan 1.1 » Fehlersuche und Probleme » Mehr Termine anzeigen lassen.

Geschlossen
  1. #1
    User Pic
    DJ-Sweeper Mitglied
    Registriert seit
    16.04.2012
    Beiträge
    78
    Beitragswertungen
    0 Beitragspunkte
    Moin,
    Ich habe auf der HP die Terminanzeige, die auch problemlos funktioniert.
    Meine Frage:
    Was kann - oder wo - in der, ich denke Calcount.php verändert werden das alle Termine im Countdown erscheinen.

    es gibt Termine am gleichem Tag um die gleiche Uhrzeit.
    Zur Zeit wird der erste Termin angezeigt, das würde ich gerne ändern auf alle Termine um z.B 17:00 Uhr.

    hier der Code der calcount.php
    <?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
            
              (tage!=1)?tage=tage+" Tage,<br />":tage=tage+" Tag,<br />";
              (stunden!=1)?stunden=stunden+" Stunden ":stunden=stunden+":";
              (minuten!=1)?minuten=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 Training im Kalender';
        }
        ?>
      
         </div>
    <center><br>
    <?php
    
    echo "<a href='http://www.dj-sweeper.de/index.php?stundenplan'>Zu den Trainingszeiten.</a>"; ?></center>


    und hier noch Bilder dazu.

    gesperrtes Bild
    gesperrtes Bild

    Danke.


    verwendete ilchClan Version: 1.1 P

    betroffene Homepage: externer Link
    0 Mitglieder finden den Beitrag gut.
  2. #2
    User Pic
    Siggi Hall Of Fame
    Registriert seit
    08.02.2007
    Beiträge
    6.558
    Beitragswertungen
    327 Beitragspunkte
    Limit ist 1 sollte man dann auf zwei oder so erweitern
    0 Mitglieder finden den Beitrag gut.
  3. #3
    User Pic
    XxMaTzExX Mitglied
    Registriert seit
    28.05.2008
    Beiträge
    1.039
    Beitragswertungen
    14 Beitragspunkte
    Hi

    Sollte "Order by time Limit 1" in Zeile 14 sein. Einfach wert "1" ändern. Bzw. Einfach "Limit 1" entfernen.
    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,
    Ich bekomme zwar Veränderungen in der Anzeige aber leider noch nicht das die Anzeige mir alle Termine auflistet.

    Muß man die Order Geschichte oder die Ausgabe doppelt bzw. für 3 Termine dreifach in den Code schreiben?

    Weil bei Order 1 Zeigt er nur den ersten Termin um 17:00 Uhr gebe ich Order 2 ein Zeigt er mir nur den 2 ten Termin um 17:00 Uhr

    Also die Stelle der Veränderung ist schon richtig..deswegen die Frage ob im code etwas doppelt eingetragen werden muß

    z.B Order1
    Order2
    Order3

    usw. bei mehren Terminen.

    Gruß

    Edit: spielerein mit einfach mal den Code zu duplizieren in Form von
    $result = db_query('SELECT *
    FROM prefix_kalender
    WHERE (time > '.time().')
    AND '.$_SESSION['authright'].' <= recht
    ORDER BY time LIMIT 2');
    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'];
    }
    Drunter schreiben haben nix gebracht..
    Naja da denke ich wahrscheinlich etwas zu einfach :_)


    Zuletzt modifiziert von DJ-Sweeper am 17.09.2013 - 14:55:38
    0 Mitglieder finden den Beitrag gut.
  5. #5
    User Pic
    Siggi Hall Of Fame
    Registriert seit
    08.02.2007
    Beiträge
    6.558
    Beitragswertungen
    327 Beitragspunkte
    Nein ORDER BY time bedeutet er sortiert die nach time in diesen fall eintrags zeit/datum und LIMIT 1 bedeutet das er nur eins ausgibt wenn man LIMIT 5 macht sollte er fünf ausgeben.

    ORDER BY time LIMIT 5
    0 Mitglieder finden den Beitrag gut.
  6. #6
    User Pic
    DJ-Sweeper Mitglied
    Registriert seit
    16.04.2012
    Beiträge
    78
    Beitragswertungen
    0 Beitragspunkte
    Hallo Sigi,

    Der Einfluß von Limit 1-5 bewirkt momentan das der Termin angezeigt wird der unter 1-5 zu finden ist.
    Heißt bei Limit 5 Zeigt er nicht 5 Termine sondern "den"5ten Termin, der aber um 19:00 Uhr ist.

    Ich habe 2 Termine um 17:00
    Zeigen bei Limit1 tut sie auch den ersten um 17:00UHR
    gebe ich ein Limit 5 ein Zeigt er mir den Termin um 19:00 Uhr!

    Edit:
    sollte ich den Terminen einen Unterschied von einer Minute geben?
    wehre zwar eine Lösung aber nicht sehr professionell.

    Oder sollte es daran liegen das Die Termine untereinander stehen im Kalender und nicht wie von Hause aus nebeneinander!



    Gruß


    Zuletzt modifiziert von DJ-Sweeper am 17.09.2013 - 15:07:51
    0 Mitglieder finden den Beitrag gut.
  7. #7
    User Pic
    DJ-Sweeper Mitglied
    Registriert seit
    16.04.2012
    Beiträge
    78
    Beitragswertungen
    0 Beitragspunkte
    Moin,
    Ich wollte das Thema nochmal ins Leben rufen.
    Denn das ändern von ORDER BY time LIMIT 1');
    auf ORDER BY time LIMIT 3');
    bewirgt nur das der dritte Termin angezeigt wird der an dem Tag ist aber nicht alle 3 Termine.

    Hat noch jemand eine Idee wie ich alle Termin, die am Tag dran sind, anzeigen lassen kann?

    Gruß
    0 Mitglieder finden den Beitrag gut.
  8. #8
    User Pic
    Mairu Coder
    Registriert seit
    16.06.2006
    Beiträge
    15.334
    Beitragswertungen
    386 Beitragspunkte
    Es ist auch nur ein Countdown für ein Feld implementiert, du müsstest ja dann mehrere Termine ausgeben und den Countdown öfter starten, dass ist nicht ganz so trivial, aber richtig schwer ist es auch nicht, hab aber gerade keine Zeit es anzupassen.
    Und auch immer mal ein Blick auf die FAQ werfen. | Mairus Ilchseite
    0 Mitglieder finden den Beitrag gut.
  9. #9
    User Pic
    DJ-Sweeper Mitglied
    Registriert seit
    16.04.2012
    Beiträge
    78
    Beitragswertungen
    0 Beitragspunkte
    Das ist doch mal ne Aussage, die ich mir (leider) schon gedacht habe, nur klar mein php Verständnis reicht nicht um es zu lösen.

    Ich warte einfach zwinker
    Vielleicht hat ja noch jemand das Problem das es sich richtig lohnt, sich an den Code zu setzen.

    Danke, erst mal Mairu.

    EDIT: Ich habe das Problem soweit erst mal gelöst.
    Den Code einfach in der php doppelt rein geschrieben und den Countdown entfernt, beim 2ten code Order by Limit auf 2 gestellt.
    nun habe ich einen countdown und einen nachfolgenden Termin.
    Jeder Coder schlägt warscheinlich die Hände über den Kopf zusammen, aber ich habe mein Ergebnis..:P
    sollte natürlich jemand den Code bereinigen können, sehr gerne!
    <?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>&nbsp;&nbsp;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') + '&nbsp;&nbsp;';
                            }
                            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 Training im Kalender';
        }
        ?>
      
         </div>
    <center>
    <?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 2');
    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()) { ?>
            danach<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') + '&nbsp;&nbsp;';
                            }
                            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 Training im Kalender';
        }
        ?>
      
         </div>
    <center><br>
    <?php
    
    echo "<a href='http://www.dj-sweeper.de/index.php?stundenplan'>Zu den Trainingszeiten.</a>"; ?></center>


    Danke Mairu, für den Gedankenschubs lächeln

    Gruß


    Zuletzt modifiziert von DJ-Sweeper am 20.09.2013 - 10:32:48
    0 Mitglieder finden den Beitrag gut.
  10. #10
    User Pic
    Lord|Schirmer Administrator
    Registriert seit
    21.03.2007
    Beiträge
    7.635
    Beitragswertungen
    1193 Beitragspunkte
    Hier mal die mögliche Umsetzung:

    <?php
    defined ('main') or die ( 'no direct access' );
    
    $anz = 3; // Anzahl der Counter
    
    echo '
    <script type="text/javascript">
    function counter(id,time) {
    	var cntEl = document.getElementById("countdown"+id);
    	var cntSecs = 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;
    			var text = "";
    			if (diff > 0) {
    				text += (diff === 1 ? "1 Tag" : diff + " Tage") + ", <br />";
    			}
    			if (hours > 0) {
    				text += (hours === 1 ? "1 Stunde" : hours + " Stunden") + ", ";
    			}
    			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);
    	};
    	cntFunc();
    };
    </script>
    
    <style>
    .countdown {
    	text-align:center;
    	padding:5px;
    	}
    </style>
    ';
      
    $result = db_query('SELECT * 
    					FROM prefix_kalender WHERE (time > ' . time() . ')
    					AND ' . $_SESSION['authright'] . ' <= recht
    					ORDER BY time LIMIT '. $anz);
    
    if ( db_num_rows($result) == 0 ) {
    	echo '<div class="countdown">Kein Training im Kalender</div>';
    } else {
    	while ($row = db_fetch_assoc($result)) {
    		echo '<div class="countdown">Noch<br /><span id="countdown'. $row['id'] .'">Countdown</span> ';
    		echo 'bis<br /><a href="index.php?kalender-v0-e'. $row['id'] .'">'. $row['title'] .'</a></div>';
    		echo '<script type="text/javascript">counter('. $row['id'] .','. $row['time'] .')</script>';
        }
    }
    ?>



    Zuletzt modifiziert von Lord|Schirmer am 20.09.2013 - 18:50:53
    rules :: doku :: faq :: linkus
    0 Mitglieder finden den Beitrag gut.
  11. #11
    User Pic
    Lord|Schirmer Administrator
    Registriert seit
    21.03.2007
    Beiträge
    7.635
    Beitragswertungen
    1193 Beitragspunkte
    Hat es funktioniert?
    rules :: doku :: faq :: linkus
    0 Mitglieder finden den Beitrag gut.
Geschlossen

Zurück zu Fehlersuche und Probleme

Optionen: Bei einer Antwort zu diesem Thema eine eMail erhalten