Hallo, Gast! (Registrieren)

Wir wünschen allen Besuchern frohe Ostern!

Letzte Ankündigung: MyBB 1.8.37 veröffentlicht (04.11.23)


Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste
Ereignisse auf Startseite nicht sichtbar
#11
Tolle Idee.

Erst mal muss man die drei $comma durch $komma ersetzen, da es sich sonst mit dem $comma aus dem restlichen who's online überschneidet.

Zweitens zeigt es mir jetzt die Temine bis Januar 2007 an. Also nicht nur der nächsten 7 Tage.


Angehängte Dateien Thumbnail(s)
   
Eine Homepage ist nie fertig, man hört nur auf an ihr zu arbeiten - Unbekannter Verfasser
Zitieren
#12
also bei mir zeigt er auch mehr als die 14 angegebenden tage an, aber er zeigt bei mir nur einen termin im november an die 5 termine davor zwischen märz und nov. sind nicht zusehen
Zitieren
#13
Ok es liegt an dem Verglecih <= bzw. >=
Weil dann zwei strings verglichen werden (z.B. 23-3-2006 und 3-1-2007) und nicht zwei Datums(? deutsche Sprache schwere Sprache)
Des heißt man müsste eine bessere Vergleichsmöglichkeit haben oder nur die reinen Integerwerte vergleichen (des Datum is ja eigentlich ein 32-Bit Integer)

Ausserdem muss auch $query umgenannt werden da es sich sonst mit dem whosonline überschneidet und die online-Mitglieder nicht mehr richtig anzeigt
Eine Homepage ist nie fertig, man hört nur auf an ihr zu arbeiten - Unbekannter Verfasser
Zitieren
#14
Meine Lösung mit for-Schleife (vielleicht nicht sehr elegant
PHP-Code:
                ### Events der nächsten x Tage auf Index ###
                    // Anzahl der Tage
                    
$futuredays "14";
                    
$nextevents "";
                    
$komma "";
                        
                    for (
$i 0$i <= $futuredays$i++)
                    {
                        
$date2 mktime(000date("n"), date("j") + $idate("Y"));
                        
$futuredate date("j-n-Y" $date2);
                        
$query2 $db->query("SELECT * FROM ".TABLE_PREFIX."events WHERE private = 'no' AND date = '".$futuredate."' ORDER BY date ASC");                        
                        while(
$events2 $db->fetch_array($query2))
                        {
                        
$eventdate explode("-"$events2['date']);
                        
$dateline mktime(000$eventdate['1'], $eventdate['0'], $eventdate['2'], 0);
                        
$nextevents .= $komma."<a href=\"calendar.php?action=event&amp;eid=".$events2['eid']."\">".htmlentities($events2['subject'])." (".mydate($mybb->settings['dateformat'], $dateline).")</a>";
                        
$komma ", ";
                         }
                    }
                    
### Events der nächsten x Tage Index ### 
Eine Homepage ist nie fertig, man hört nur auf an ihr zu arbeiten - Unbekannter Verfasser
Zitieren
#15
Geht übrigens auch für Geburtstage
index.php zwischen $bdaycount = 0; und if($bdaycount > 0) leicht abändern:
PHP-Code:
    $bdaycount 0;
    
// Anzahl der Tage
    
$futuredays "14";
    
$comma "";
                        
    for (
$i 0$i <= $futuredays$i++)
    {
        
$bdaytime mktime(000date("n"), date("j") + $idate("Y"));
        
$bdaydate mydate("j-n"$bdaytime""0);
        
$year mydate("Y"$bdaytime""0);
        
$query $db->query("SELECT uid, username, birthday FROM ".TABLE_PREFIX."users WHERE birthday LIKE '$bdaydate-%'");        
        while(
$bdayuser $db->fetch_array($query))
        {
            
$bday explode("-"$bdayuser['birthday']);
            if(
$year $bday['2'] && $bday['2'] != "")
            {
                
$age " (".($year $bday['2']).")";
            }
            else
            {
                
$age "";
            }
            eval(
"\$bdays .= \"".$templates->get("index_birthdays_birthday"10)."\";");
            
$bdaycount++;
            
$comma ", ";
        }
    } 
Eine Homepage ist nie fertig, man hört nur auf an ihr zu arbeiten - Unbekannter Verfasser
Zitieren
#16
Erweiterung:
Wenn es keine Events gibt ist diese Tabelle auch nicht zu sehen.

Öffne die Datei index.php und suche nach:
PHP-Code:
eval("\$whosonline = \"".$templates->get("index_whosonline")."\";"); 
Darüber einfügen:
PHP-Code:
                ### Events der nächsten x Tage auf Index ###
                    // Anzahl der Tage
                    
$futuredays "14";
                    
$nextevents "";
                    
$komma "";
                    
$eventcount 0;
                        
                    for (
$i 0$i <= $futuredays$i++)
                    {
                        
$date2 mktime(000date("n"), date("j") + $idate("Y"));
                        
$futuredate date("j-n-Y" $date2);
                        
$query2 $db->query("SELECT * FROM ".TABLE_PREFIX."events WHERE private = 'no' AND date = '".$futuredate."' ORDER BY date ASC");                        
                        while(
$events2 $db->fetch_array($query2))
                        {
                        
$eventdate explode("-"$events2['date']);
                        
$dateline mktime(000$eventdate['1'], $eventdate['0'], $eventdate['2'], 0);
                        
$nextevents .= $komma."<a href=\"calendar.php?action=event&amp;eid=".$events2['eid']."\">".htmlentities($events2['subject'])." (".mydate($mybb->settings['dateformat'], $dateline).")</a>";
                        
$eventcount++;
                        
$komma ", ";
                         }
                    }
                    if(
$eventcount 0)
                    {
                        eval(
"\$nextxevents = \"".$templates->get("index_whosonline_events")."\";");
                    }
                    
### Events der nächsten x Tage Index ### 
Erstelle ein Template index_whosonline_events. Inhalt:
Code:
<tr>
<td class="tcat"><span class="smalltext"><strong>Termine in den n&auml;chsten $futuredays Tagen</strong></span></td>
</tr>
<tr>
<td class="trow1"><span class="smalltext">$nextevents</span></td>
</tr>
Füge am Ende des Templates index_whosonline ein:
Code:
$nextxevents
Eine Homepage ist nie fertig, man hört nur auf an ihr zu arbeiten - Unbekannter Verfasser
Zitieren
#17
hi frankrieger,

das sieht doch schonmal gut aus und wegen elgant egal hauptsache es funktioniert :-D
bsten dank für deine/eure mühe einfach klasse diese community
Zitieren
#18
Die Lösung funktioniert zwar, kann aber je nach Anzahl der Tage ziemlich viele Querys benötigen, was nicht wirklich schön ist. Ich habe versucht eine Lösung mit nur einem Query zusammenzubauen und ich hoffe, dass ich sie gefunden habe. Leider fehlt mir die Möglichkeit das ordentlich zu testen, daher müsstet ihr das machen.

Datei index.php öffnen und suchen nach:
PHP-Code:
eval("\$whosonline = \"".$templates->get("index_whosonline")."\";"); 
Darüber einfügen:
PHP-Code:
### Events der letzten x Tage ###
// Anzahl der Tage
$futuredays "7";
$now time();
$future $now $futuredays 68400;
    
// Events aus Datenbank holen
$query $db->query("SELECT * FROM ".TABLE_PREFIX."events WHERE private = 'no'");

// Mehrdimensionales Array aufbauen
$i "0";
$event = array();
while(
$events $db->fetch_array($query)) {
    
$eventdate explode("-"$events['date']);
    
$dateline mktime(000$eventdate['1'], $eventdate['0'], $eventdate['2'], 0);
    
    if(
$dateline $now && $dateline $future) {
        
$event[] = array($events['eid'], $events['subject'], $dateline);
        
$i++;
    }
}

// Funktion zum Sortieren
function compare ($val1$val2) {
    
$a $val1['2'];
    
$b $val2['2'];
    if(
$a == $b) return "0";
    elseif (
$a $b) return "1";
    else return 
"-1";
}

// Keine Events?
if($i == "0") {
    
$nextevents "Keine Termine vorhanden";
} else {
    
// Events sortieren und ausgeben
    
usort($eventcompare);
    
$sep "";
    foreach(
$event as $key=>$element) {
        
$nextevents .= $sep."<a href=calendar.php?action=event&amp;eid=".$element['0']."\">".htmlentities($element['1'])." (".mydate($mybb->settings['dateformat'], $element['2']).")</a>";
        
$sep ", ";
    }
}
### Events der letzten x Tage ### 
Template index_whosonline öffnen und am Ende folgendes einfügen:
Code:
<tr>
<td class="trow2"><span class="smalltext"><strong>Termine in den n&auml;chsten $futuredays Tagen</strong></span></td>
</tr>
<tr>
<td class="trow1"><span class="smalltext">$nextevents</span></td>
</tr>

Gruß,
Michael
[Bild: banner.png]
Support erfolgt NUR im Forum!
Bitte gelöste Themen als "erledigt" markieren.
Beiträge mit mangelhafter Rechtschreibung/Grammatik werden kommentarlos gelöscht.
Zitieren
#19
Is des mit den Querys so schlimm (braucht die Site zum Laden dadurch länger)?

Bei deinem Vorschlag zeigt es heutige Ereignisse nicht an und nur 11 der nächsten 14 Tage.
bei futuredays = 7: Zeigt 6 an
bei futuredays = 8: Zeigt 6 an
bei futuredays = 9: Zeigt 7 an
bei futuredays = 10: Zeigt 8 an
bei futuredays = 11: Zeigt 9 an
bei futuredays = 12: Zeigt 10 an
bei futuredays = 13: Zeigt 10 an
bei futuredays = 14: Zeigt 11 an
...
bei futuredays = 18: Zeigt 14 an
Eine Homepage ist nie fertig, man hört nur auf an ihr zu arbeiten - Unbekannter Verfasser
Zitieren
#20
Mist! Ich werde die Tage nochmal dabei gucken.

Je mehr Queries, desto länger die Ladezeit, desto höher die Belastung des Datenbankservers. Man sollte mit so wenigen Queries wie möglich auskommen.

Beispiel: Die Index-Seite dieses Forums benötigt 20 Queries (inkl. Übersicht). Angenommen ich will die Termine der nächsten 30 Tage anzeigen, dann habe ich schon 50 Queries und das ist zu viel.

Gruß,
Michael
[Bild: banner.png]
Support erfolgt NUR im Forum!
Bitte gelöste Themen als "erledigt" markieren.
Beiträge mit mangelhafter Rechtschreibung/Grammatik werden kommentarlos gelöscht.
Zitieren


Möglicherweise verwandte Themen…
Thema Verfasser Antworten Ansichten Letzter Beitrag
  Ereignisse auf Monat beschränken KarlMay 4 2.502 12.10.2008, 16:04
Letzter Beitrag: KarlMay
  Zum Plugin: Ereignisse auf Startseite. SweetySchnuffel 13 5.468 27.09.2008, 13:44
Letzter Beitrag: StefanT
  Ereignisse-Plugin coma 3 2.321 23.04.2008, 11:44
Letzter Beitrag: ElkeK.
  Ereignisse auf Startseite Feind 7 3.018 05.03.2007, 01:14
Letzter Beitrag: frankrieger
  Kalender: mehrtägige Ereignisse Jorgo 2 1.891 18.02.2007, 16:14
Letzter Beitrag: Jorgo