php.de

Zurück   php.de > Webentwicklung > PHP Einsteiger > PHP Tipps 2005-2

 
 
LinkBack Themen-Optionen Thema bewerten
Alt 14.11.2005, 16:18  
Erfahrener Benutzer
 
Registriert seit: 21.05.2008
Beiträge: 9.937
Zergling-new wird schon bald berühmt werden
Standard

PHP-Code:
<?php
function isThisMonth($Y$M$start$end)
{
  
$start substr($start07); // aus 2005-01-11 mach 2005-01
  
$end substr($end07); // das selbe
  
$today "$Y-$M"// jetzt haben wir vergleichbare Formate
  
return ($start <= $today && $today <= $end);
}

$sql "SELECT * FROM veranstaltung ORDER BY start_date ASC"// kannst hier noch ne sinnvolle Jahresbeschränkung einbauen
$res mysql_query($sql);
$events = array();
while (
$cur mysql_fetch_assoc($res)) {
  
$events[] = $cur;
}
// großbuchstaben-Variablen sind im Format mit vorangestellter 0
for ($Y date("Y"); $Y <= date("Y") + 2$Y++) { // zeige diesjährige und die 2 kommenden Jahre an
  
print "

$Y
"
  
for ($m 1$m <= 12$m++) { 
    
$M substr("0$m", -2); // Monaten ne 0 voranstellen
    
print "Monat $M
"
;
    for (
$i 0$i count($events); $i++) { // alle Events durchgehen
      
if (isThisMonth($Y$M$events[$i]['start_date'], $events[$i]['end_date'])) {
        print 
"Veranstaltung ".$events[$i]['id']." (vom ".date('d.m.Y'strtotime($events[$i]['start_date']))." bis ".date('d.m.Y'strtotime($events[$i]['end_date'])).")
"
;
      }
    }
  }
  print 
"</p>";
}
?>
Komplett ungetestet, dürfte aber zumindest logisch so funktionieren. Natürlich kann man nen Haufen Optimierungen reinhauen. Für jeden Monat die komplette Events-Liste durchgehen ist sicehr nicht sehr schön. Könnte man schöner so wie du oben lösen.
Zergling-new ist offline  
Sponsor Mitteilung
PHP Code Flüsterer

Registriert seit: 21.08.2005
Beiträge: 4682
PHP-Kenntnisse:
Fortgeschritten

Alt 14.11.2005, 16:36  
Erfahrener Benutzer
 
Registriert seit: 23.08.2004
Beiträge: 175
tekknotrip
Standard

Hammer!!!

ein ; wurde noch vergessen bei
print "

$Y
";

nur für den Fall, dass das hier nochmal irgendwann jemand braucht.

Der erste Test war schon mal sehr sehr Erfolgreich...
Ich hoffe es klappt, muss es mir nun auch sehr zu Gemüte führen um zu verstehen. Wenn ich einen Erfolg vermelden kann, melde ich mich morgen nochmal.

Ich danke Dir jetzt schon 1000. mal!!
tekknotrip ist offline  
Alt 14.11.2005, 16:38  
Erfahrener Benutzer
 
Registriert seit: 21.05.2008
Beiträge: 9.937
Zergling-new wird schon bald berühmt werden
Standard

Kein Problem, wie gesagt ist nicht sehr performant geschrieben.
Zergling-new ist offline  
Alt 15.11.2005, 12:21  
Erfahrener Benutzer
 
Registriert seit: 23.08.2004
Beiträge: 175
tekknotrip
Standard

So, Dienstag, 15 November 2005:
Fertig, funktioniert alles so wie es soll

Einige Modifikationen habe ich noch hinzugenommen:

PHP-Code:
function isThisMonth($Y$M$start$end)
{
  
$start substr($start07); // aus 2005-01-11 mach 2005-01
  
$end substr($end07); // das selbe
  
$today "$Y-$M"// jetzt haben wir vergleichbare Formate
  
$current_date $current_m_Y date("Y-m"strtotime("now"));
  return (
$start <= $today && $today <= $end && $today >= $current_date);

Zitat:
$today >= $current_date
Zeigt nur die Veranstaltung >= heute ist (was interessiert mich ne Veranstaltung im Mai 2005)


PHP-Code:
for ($m 1$m <= 12$m++) { //Die Monate durchgehen
    
$M substr("0$m", -2); // Monaten ne 0 voranstellen
    
$counter 0//reset 

Zitat:
$counter = 0; //reset
PHP-Code:
for ($i 0$i count($events); $i++) { // alle Events durchgehen
      
if (isThisMonth($Y$M$events[$i]['start_date'], $events[$i]['end_date'])) {
          
setlocale (LC_ALL'de_DE@euro''de_DE''de''ge'); // deutsches Datum
        
$counter++; //zaehlt die Anzahl der Veranstaltungen pro Monat
        
if ($counter == 1) { //wenn 1, dann Monat mit angeben
          
echo '<strong class="ueberschrift_text1">'.$monate[$m]." - ".$Y."[/b]
"
;
        } 
Counter, der die Einträge pro Monat zählt wenn 1, dann der Monat mit Jahr als überschrift. Ok, ist "gepfuscht" aber relativ "elegant"
Man braucht nicht über jede Veranstaltung den Monat oder Jahr.
tekknotrip ist offline  
 


Themen-Optionen
Thema bewerten
Thema bewerten:

Forumregeln
Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are an
Gehe zu

Besucher kamen über folgende Suchanfragen bei Google auf diese Seite
sql nullen voranstellen, substr($current_date,0,4);, per sql null voranstellen, blockade im kopf lösen, blockade im kopf, php null voranstellen

Alle Zeitangaben in WEZ +2. Es ist jetzt 08:50 Uhr.




Powered by vBulletin® Version 3.7.2 (Deutsch)
Copyright ©2000 - 2012, Jelsoft Enterprises Ltd.
Search Engine Optimization by vBSEO 3.2.0
Aprilia-Forum, Aquaristik-Forum, Liebeskummer-Forum, Zierfisch-Forum, Geizkragen-Forum

Creative Commons License
Dieser Inhalt ist unter einer Creative Commons-Lizenz lizenziert.