MyBB.de Forum
Ereignisse auf Startseite nicht sichtbar - Druckversion

+- MyBB.de Forum (https://www.mybb.de/forum)
+-- Forum: Anpassungen (https://www.mybb.de/forum/forum-47.html)
+--- Forum: Plugin-Diskussionen (https://www.mybb.de/forum/forum-38.html)
+--- Thema: Ereignisse auf Startseite nicht sichtbar (/thread-1506.html)

Seiten: Seiten: 1 2 3 4 5


RE: Ereignisse auf Startseite nicht sichtbar - frankrieger - 23.03.2006

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.


RE: Ereignisse auf Startseite nicht sichtbar - kai1083 - 23.03.2006

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


RE: Ereignisse auf Startseite nicht sichtbar - frankrieger - 23.03.2006

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


RE: Ereignisse auf Startseite nicht sichtbar - frankrieger - 23.03.2006

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 ### 



RE: Ereignisse auf Startseite nicht sichtbar - frankrieger - 23.03.2006

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 ", ";
        }
    } 



RE: Ereignisse auf Startseite nicht sichtbar - frankrieger - 23.03.2006

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



RE: Ereignisse auf Startseite nicht sichtbar - kai1083 - 23.03.2006

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


RE: Ereignisse auf Startseite nicht sichtbar - Michael - 24.03.2006

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>



RE: Ereignisse auf Startseite nicht sichtbar - frankrieger - 24.03.2006

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


RE: Ereignisse auf Startseite nicht sichtbar - Michael - 24.03.2006

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.