php.de

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

 
 
LinkBack Themen-Optionen Thema bewerten
Alt 07.05.2005, 13:36  
Benutzer
 
Registriert seit: 05.10.2004
Beiträge: 51
arcor
Standard Kalender...

Hallo zusammen,

ich habe mir einen Kalender gebaut, der in einer monatsansicht ausgegeben wird. Die Ausgabe, die Berechnung von Schaltjahren, Hervorhebung des aktuellen Tages usw. funktioniert soweit alles wunderbar.

Ich weiss es ist nicht der beste code aber ich bin schonmal froh das ich das hinbekommen habe!


SO - nun würde ich gerne noch in den leeren Feldern der Monatsansicht die restlichen Tage des vormonats sowie die kommenden Tage des nächsten monats ausgeben. (am besten den Kalender mal im browser dazu betrachten).

Desweiteren würde ich gerne meine Termineingabe erweitern:
Es gibt nur Events die an einem ausgewählten Tag stattfinden oder aber Events die z.B. immer Dienstags stattfinden.
D.h. ich würde gerne in der Eingabemaske eine Checkbox setzen können bei der dann das Event für das aktuelle Jahr am besagten Tag eingetragen wird (z.B. jeden Dienstag).

Kann mir da jemand helfen? Muss ich das per SQL Anweisung lösen?
Danke im voraus!

PHP-Code:
<?php
    $datum        
getdate();
    
$dieser_tag    $datum[mday];
    
$dieser_monat    $datum[mon];
    
$dieses_jahr    $datum[year];
    
$monat_text    = array("Januar","Februar","M&auml;rz","April","Mai","Juni","Juli","August","September","Oktober","November","Dezember");
    
$wochen_text    = array("Mo""Di""Mi","Do""Fr""Sa""So");

    if(!isset(
$tag)) {
        
$tag "$datum[mday]";
    }
    if(!isset(
$monat)) {
        
$monat "$datum[mon]";
        }
    if(!isset(
$jahr)) {
        
$jahr "$datum[year]";
    }

    
$schaltjahr gettype($jahr/4);
    if(
$schaltjahr == "integer")
    {
        
$monat_tage = array(0,31,29,31,30,31,30,31,31,30,31,30,31);
    } else {
        
$monat_tage = array(0,31,28,31,30,31,30,31,31,30,31,30,31);
    }

    
$start  getdate(mktime(2,0,0,$monat,1,$jahr));
    
$beginn "$start[wday]";

    if(
$beginn == 0)
    {
        
$beginn=7;
    }

    echo (
"<form action=\"".$PHP_SELF."?section=termine&action=termine&PHPSESSID=$PHPSESSID\" method=\"post\">\n");
    echo (
"<table width=\"95%\" border=\"0\" cellpadding=\"2\" cellspacing=\"1\">\n");
    echo (
"<tr>\n");
    echo (
"    <td></td>\n");
    echo (
"</tr>\n");
    echo (
"<tr>\n");
    echo (
"    <td align=\"right\" valign=\"center\">\n");
    echo (
"        <select name=\"monat\" class=\"field\">\n");
        for ( 
$i=1$i <= count$monat_text ); $i++ )
        {
            if (
$i == $monat)
            {
                echo (
"            <option value=\"$i\" SELECTED>".$monat_text[$i-1]."</option>\n");
            } else {
                echo (
"            <option value=\"$i\">".$monat_text[$i-1]."</option>\n");
            }
        }
    echo (
"        </select>\n");
    echo (
"        <select name=\"jahr\" class=\"field\">\n");
        for (
$i $dieses_jahr$i <= ($dieses_jahr 10); $i++)
        {
            if (
$i == $jahr)
            {
                echo (
"            <option value=\"$i\" SELECTED>".$i."</option>\n");
            } else {
                echo (
"            <option value=\"$i\">".$i."</option>\n");
            }
        }
    echo (
"        </select>\n");
    echo (
"        <input type=\"submit\" class=\"button\" value=\"Abschicken\">\n");
    echo (
"        </form>\n");
    echo (
"    </td>\n");
    echo (
"</tr>\n");
    echo (
"<tr>\n");
    echo (
"    <td></td>\n");
    echo (
"</tr>\n");
    echo (
"</form>\n");
    echo (
"<tr>\n");
    echo (
"    <td align=\"center\">\n");
    echo (
"        <table width=\"100%\" border=\"1\" cellpadding=\"3\" cellspacing=\"1\">\n");
    echo (
"        <tr>\n");
    echo (
"            <td width=\"13%\" class=\"wochentage\" align=\"center\">Montag</td>\n");
    echo (
"            <td width=\"13%\" class=\"wochentage\" align=\"center\">Dienstag</td>\n");
    echo (
"            <td width=\"13%\" class=\"wochentage\" align=\"center\">Mittwoch</td>\n");
    echo (
"            <td width=\"13%\" class=\"wochentage\" align=\"center\">Donnerstag</td>\n");
    echo (
"            <td width=\"13%\" class=\"wochentage\" align=\"center\">Freitag</td>\n");
    echo (
"            <td width=\"13%\" class=\"wochentage\" align=\"center\">Samstag</td>\n");
    echo (
"            <td width=\"13%\" class=\"wochentage\" align=\"center\">Sonntag</td></tr>\n");
    echo (
"        </tr>\n");

        
$zeile 1$spalte 1$tagnummer 1;

    echo (
"        <tr>\n");

        for(
$y 1;$y < ($monat_tage[$monat]+$beginn);$y++)
        {
            
$x $wochen_text[date("w"mktime(0,0,0,$dieser_monat,$y,$dieses_jahr))];

            
$bo "unaktiv";
            if (
$x == "So" OR $x == "Sa")
            {
                
$bo "weekend";
            }
            if (
$tagnummer == $tag && $monat == $dieser_monat && $jahr == $dieses_jahr)
        {
                
$bo "aktiv";
    }

        if(
$y $beginn)
        {
            echo (
"            <td width=\"13%\" height=\"70\" class=\"leer\" align=\"center\"></td>\n");
        } else if(
$tagnummer == $tag && $monat == $dieser_monat && $jahr == $dieses_jahr) {
            
$datstr "$tag.$monat.$jahr";
            
$datstr Datum2Db($datstr);

            echo (
"            <td width=\"13%\" height=\"70\" class=\"$bo\" align=\"left\" valign=\"top\">\n");
            echo (
"                <a href=\"".$PHP_SELF."?section=termine&action=termine&datum=$datstr&PHPSESSID=$PHPSESSID\">[b]$tagnummer[/b]</a>

\n"
);
                
$query mysql_query("SELECT * FROM ".$tblprfx."termine WHERE datum=\"$datstr\"",$verbindung);
                for (
$i=0$i<mysql_num_rows($query); $i++)
                {
                            
$result mysql_fetch_row($query);
                            if (
$result != 0)
                            {
                            echo (
"                <img border=\"0\" src=\"http://www.weblife-td.de/images/link.gif\"><a href=\"".$PHP_SELF."?section=termine&action=termine_edit&id=$result[0]&PHPSESSID=$PHPSESSID\">$result[2]</a>
\n"
);
                            }
                        }
                    echo (
"            </td>\n");
                    
$tagnummer++;
                } else {
                    
$datstr "$tagnummer.$monat.$jahr";
                    
$datstr Datum2Db($datstr);

                    echo (
"            <td width=\"13%\" height=\"70\" class=\"$bo\" align=\"left\" valign=\"top\">\n");
                    echo (
"                <a href=\"".$PHP_SELF."?section=termine&action=termine&datum=$datstr&PHPSESSID=$PHPSESSID\">[b]$tagnummer[/b]</a>

\n"
);
                        
$query mysql_query("SELECT * FROM ".$tblprfx."termine WHERE datum=\"$datstr\"",$verbindung);
                        for (
$i=0$i<mysql_num_rows($query); $i++)
                        {
                            
$result mysql_fetch_row($query);
                            if (
$result != 0)
                            {
                                echo (
"                <img border=\"0\" src=\"http://www.weblife-td.de/images/link.gif\"><a href=\"".$PHP_SELF."?section=termine&action=termine_edit&id=$result[0]&PHPSESSID=$PHPSESSID\">$result[2]</a>
\n"
);
                            }
                        }
                    echo (
"            </td>\n");
                    
$tagnummer++;
                }

                
$temp gettype($spalte/7);
                if(
$temp == "integer" && $y < ($monat_tage[$monat]+$beginn-1))
                {
                    echo (
"        </tr>\n");
                    echo (
"        <tr>\n");
                    
$zeile++;
                }
                
$spalte++;
            }

        
$ende $zeile 7$rest = ($ende $spalte) + 1; if($rest >= 7) { $rest 0; }
        for(
$r 0;$r $rest;$r++)
        {
            echo (
"            <td width=\"13%\" height=\"70\" class=\"leer\" align=\"center\"></td>\n");
        }
        echo (
"        </tr>\n");
        echo (
"        </table>\n");
        echo (
"    </td>\n");
        echo (
"</tr>\n");
        echo (
"</table>

\n"
);
?>
Thx
Marco
arcor ist offline  
Sponsor Mitteilung
PHP Code Flüsterer

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

Alt 07.05.2005, 15:00  
Erfahrener Benutzer
 
Registriert seit: 08.11.2004
Beiträge: 2.079
Der_Gerhard ist zur Zeit noch ein unbeschriebenes Blatt
Der_Gerhard eine Nachricht über ICQ schicken
Standard

Bevor sich irgendjemand den Code da ansieht, solltest Du Dein Posting mal editieren und aus den [code]-Tags [php]-Tags machen.
Und dann noch den ganzen Code in <? und ?> einpacken.
Dann kann man ihn auch lesen. So kriegt man höchstens Blähungen davon.
__________________
**********************************
Nein, ich bin nicht die Signatur.
Ich putze hier nur.
**********************************
Der_Gerhard ist offline  
Alt 07.05.2005, 15:05  
CSS
Erfahrener Benutzer
 
Registriert seit: 04.12.2004
Beiträge: 324
CSS
Standard

Hey, ich hab' deinen Code nicht durchgelsen aber, mir ist aufgefallen, dass du HTML-Tags mit PHP ausgibst. Merke: Wenn nicht dringend notwendig, HTML nicht mit PHP ausgeben! Code optimieren!

MfG CSS
CSS ist offline  
Alt 07.05.2005, 18:13  
Erfahrener Benutzer
 
Benutzerbild von lazydog
 
Registriert seit: 02.04.2008
Beiträge: 4.032
lazydog befindet sich auf einem aufstrebenden Ast
Standard

Ich hab deinen Code mal kurz bei mir getestet und bekomme ausser Fehlermeldungen nicht viel zu sehen. Wahrscheinlich wäre es auch bei dir so, wenn du
Code:
error_reporting(E_ALL);
angeben und register_globals auf off setzen würdest. Ich mag jetzt nicht auf all diese Fehler eingehen. Versuche diese zuerst mal zu beheben. Ich werde dir per PN ein funktionierendes Beispiel zuschicken, mit dem du deinen Code vergleichen kannst.
__________________
Gruss
L
lazydog ist offline  
Alt 07.05.2005, 19:53  
Gast
 
Beiträge: n/a
Standard

Beachte, daß alle 400 Jahre ein SChaltjahr ausfällt - 2000 war also KEIN Schaltjahr, obwohl es nach Deiner Mathematik eines gewesen wäre.
 
Alt 07.05.2005, 21:17  
Benutzer
 
Registriert seit: 05.10.2004
Beiträge: 51
arcor
Standard

Danke für die verschiedenen Antworten, auch für jene die relativ egal sind (alle 400 Jahre kein Schaltjahr )

Ich frage mich ob sich jemand mal was zur Termineintragung überlegt hat?
wie kann ich es realisieren, dass an jedem dienstag im Jahr das gewünschte Event eingetragen wird?

Thx
Marco
arcor ist offline  
Alt 07.05.2005, 21:34  
Erfahrener Benutzer
 
Registriert seit: 20.01.2005
Beiträge: 1.557
PHP-Kenntnisse:
Fortgeschritten
Buhmann ist zur Zeit noch ein unbeschriebenes Blatt
Buhmann eine Nachricht über ICQ schicken Buhmann eine Nachricht über MSN schicken
Standard

mach einfach ein array für Feiertage/Termine

PHP-Code:
<?php
$Termine 
= array("Weihnachten" => array("Tag" 24//am 24. Tag
                                                               
"Monat" 12//im zwölften Monat 
                                                               
"Jahr" NULL//Egal welches Jahr
                                                              
),
                           
"Erster Tag des Monats" => array("Tag" 1//am 1. Tag
                                                               
"Monat" NULL//egal welcher Monat 
                                                               
"Jahr" NULL//Egal welches Jahr
                                                              
));


?>
Buhmann ist offline  
Alt 07.05.2005, 22:16  
Benutzer
 
Registriert seit: 05.10.2004
Beiträge: 51
arcor
Standard

Nein du verstehst das glaube ich falsch!

ich habe zum Beispiel ab sofort jeden Dienstag einen Studentenabend. D.h. der erste Tag dieses Events wäre am 10.05.2005. den Tag wähle ich an und bin dann in der Eingabemaske --> da kann ich dann den Titel, Details etc angeben und dort will ich per setzen einer checkbox sagen das:

beim eintragen in die Datenbank das Event nicht nur am 10.05.2005 drin stehen soll sondern jeden Dienstag bis zum Ende des aktuellen Jahres

ist das möglich?
arcor ist offline  
Alt 07.05.2005, 22:24  
Erfahrener Benutzer
 
Registriert seit: 01.12.2003
Beiträge: 4.113
supertramp
Standard

Zitat:
Zitat von Catweazle
Beachte, daß alle 400 Jahre ein SChaltjahr ausfällt - 2000 war also KEIN Schaltjahr, obwohl es nach Deiner Mathematik eines gewesen wäre.
ähm.. habe ich da was verpasst? Stehe ich gerade auf dem Schlauch?
Kannst du das mal belegen?
__________________
Aufstrebend, kompetent und werbefrei.
www.developers-guide.net
supertramp ist offline  
Alt 07.05.2005, 22:44  
Benutzer
 
Registriert seit: 05.10.2004
Beiträge: 51
arcor
Standard

das habe ich mir auch gedacht... also in meinem Kalender (schwarz auf weiss auf Papier) war das Jahr 2000 ein Schaltjahr --> folglich gab es den 29. Februar
arcor 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

Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
[Erledigt] Kalender aktuellen Tag markieren al-kohli-ker Scriptbörse 5 27.05.2008 07:52
Kalender in PHP rezix PHP Tipps 2008 3 10.01.2008 15:42
Kalender Problem pPanther PHP Tipps 2008 10 12.12.2007 18:32
MySQL-Abfrage in Kalender tsvst Datenbanken 5 13.09.2006 08:22
Tagesansicht bei Kalender macht Probleme Borlox PHP Tipps 2006 20 30.06.2006 13:05
Suche PHP Event Kalender PHP Tipps 2005-2 2 28.09.2005 19:57
[Script] Kalender Beitragsarchiv 11 20.09.2005 15:31
fehler im Kalender PHP-Fortgeschrittene 3 01.06.2005 12:58
wochenzahl bei php kalender Sclot PHP Tipps 2005 12 11.03.2005 12:46
[Erledigt] Rollenspiel Kalender PHP Tipps 2005 4 29.01.2005 18:18
[Erledigt] Kalender Termine hervorheben PHP Tipps 2004-2 1 24.11.2004 13:02
kalender - variablenuebermittlung PHP-Fortgeschrittene 15 14.11.2004 21:24
kalender in background einfügen Sclot PHP Tipps 2004 4 06.10.2004 16:04
kalender in php Beitragsarchiv 2 02.08.2004 13:47
[Erledigt] kalender in php PHP Tipps 2004 1 02.08.2004 01:58

Besucher kamen über folgende Suchanfragen bei Google auf diese Seite
php calendar wochentag aktiv, php sql termine monatsansicht, array feiertage php weihnacht, code kalender, php kalender dir restlichen von vormonat anzeigen ?, <option value= aktuelles jahr januar februar array, tagnummer php, sql \ende des aktuellen jahres\, if isset $tag = mo, welcher tag war am 30.06 2006, start = getdate(mktime(2,0,0,$monat,1,$jahr)); $beginn = \$start[wday]\; if($beginn==0) { $beginn=7; }

Alle Zeitangaben in WEZ +2. Es ist jetzt 13:20 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.