<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Punkt 16 &#187; PHP</title>
	<atom:link href="http://www.punkt16.de/category/php/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.punkt16.de</link>
	<description>Entwicklung &#38; Mehr von Punkt18.com</description>
	<lastBuildDate>Thu, 10 Nov 2011 10:59:28 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.1</generator>
		<item>
		<title>WordPress Theme Options</title>
		<link>http://www.punkt16.de/2011/11/wordpress-theme-options/</link>
		<comments>http://www.punkt16.de/2011/11/wordpress-theme-options/#comments</comments>
		<pubDate>Thu, 10 Nov 2011 10:59:28 +0000</pubDate>
		<dc:creator>Florian Palme</dc:creator>
				<category><![CDATA[Allgemein]]></category>
		<category><![CDATA[Code]]></category>
		<category><![CDATA[Code-Snippet]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[Snippets]]></category>
		<category><![CDATA[Themes]]></category>
		<category><![CDATA[Wordpress]]></category>
		<category><![CDATA[add_action]]></category>
		<category><![CDATA[add_theme_page]]></category>
		<category><![CDATA[admin_init]]></category>
		<category><![CDATA[admin_menu]]></category>
		<category><![CDATA[get_categories]]></category>
		<category><![CDATA[get_option]]></category>
		<category><![CDATA[Kategorien]]></category>
		<category><![CDATA[Options]]></category>
		<category><![CDATA[register_settings]]></category>
		<category><![CDATA[settings_fields]]></category>
		<category><![CDATA[Theme]]></category>

		<guid isPermaLink="false">http://www.punkt16.de/?p=323</guid>
		<description><![CDATA[Manchmal ist es von Nöten, dass man dem User Optionen für das eigene Theme anbietet. Dies kann aus Design-Gründen, zum Beispiel für verschiedene Backgrounds oder auch eine Kategorieauswahl, zur Darstellung der Artikel in einer im Design integrierten Box.
In diesem Post möchte ich euch einen guten Weg aufzeigen, eure eigene Options-Seite für euer Theme zu ...]]></description>
			<content:encoded><![CDATA[<p class="wp-flattr-button"></p><p>Manchmal ist es von Nöten, dass man dem User Optionen für das eigene Theme anbietet. Dies kann aus Design-Gründen, zum Beispiel für verschiedene Backgrounds oder auch eine Kategorieauswahl, zur Darstellung der Artikel in einer im Design integrierten Box.<br />
In diesem Post möchte ich euch einen guten Weg aufzeigen, eure eigene Options-Seite für euer Theme zu bauen. Diese Seite wird ein Text-Feld beinhalten sowie eine Auswahl an verschiedenen Kategorien für eine Auflistung in einer Box. Der Clou an der Sache ist, dass wir alle Daten dieser Options-Page in einem einzigen Datenbank-Eintrag speichern.</p>
<p>&nbsp;</p>
<p>Als allererstes erstellen wir eine Funktion, in welcher WordPress gesagt wird, dass wir nun eine neue Options-Page erstellen. Dadurch müssen wir uns nicht groß um die Speicherung der Daten kümmern.</p>
<pre class="brush: php; title: ; notranslate">//functions.php

//die funktion
function ctheme_options_init(){
  //Registrieren der Options &quot;ctheme_theme&quot;, die Speichervariable in der Tabelle &quot;ctheme_theme_options&quot; und eine Validierungs-Funktion (&quot;ctheme_options_validate&quot;, dazu später mehr)
  register_setting('ctheme_theme', 'ctheme_theme_options', 'ctheme_options_validate');
}

add_action('admin_init', 'ctheme_options_init');</pre>
<p>&nbsp;</p>
<p>Damit auch etwas dargestellt werden kann, benötigen wir eine do_page-Funktion. In dieser könnt ihr eine externe Datei inkludieren, um eine bessere Übersicht zu behalten. Ich schreibe es für dieses Tutorial direkt mit hinein.</p>
<pre class="brush: php; html-script: true; title: ; notranslate">&lt;?php function ctheme_options_do_page(){
?&gt;
&lt;div class=&quot;wrap&quot;&gt;
  &lt;h2&gt;cTheme Theme Optionen&lt;/h2&gt;

  &lt;form action=&quot;options.php&quot; method=&quot;post&quot;&gt;
    &lt;?php //Schreibt verschiedene hidden Inputs
    settings_fields('ctheme_theme'); ?&gt;
    &lt;?php //Hier werden die gespeicherten Optionen abgefragt. Wir erinnern uns, dass wir alles in einem Eintrag speichern!
    $options = get_option('ctheme_theme_options'); ?&gt;

    &lt;table class=&quot;form-table&quot;&gt;
      &lt;tbody&gt;
        &lt;tr valign=&quot;top&quot;&gt;
          &lt;th scope=&quot;row&quot;&gt;Titel der Box&lt;/th&gt;
          &lt;td&gt;&lt;input type=&quot;text&quot; value=&quot;&quot; name=&quot;&quot; id=&quot;&quot; /&gt;&lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr&gt;
          &lt;th scope=&quot;row&quot;&gt;Kategorie für die Auflistung in der Box&lt;/th&gt;
          &lt;td&gt;Hier stehen dann die Kategorien..&lt;/td&gt;
        &lt;/tr&gt;
      &lt;/tbody&gt;
    &lt;/table&gt;

    &lt;p class=&quot;submit&quot;&gt;&lt;input class=&quot;button-primary&quot; type=&quot;submit&quot; value=&quot;&lt;?php _e('Save Changes') ?&gt;&quot; /&gt;&lt;/p&gt;

    &lt;/form&gt;
  &lt;/div&gt;
&lt;?php } ?&gt;</pre>
<p>Da wir alle Daten nur in einem Datenbankeintrag speichern, müssen wir die vom User eingegeben Daten selbst validieren.</p>
<pre class="brush: php; title: ; notranslate">function ctheme_options_validate($input){
	$input['boxtitle'] = ( $input['boxtitle'] == '' ) ? 'Standard-Box' : $input['boxtitle'];
	$input['categorylist'] = ( is_array( $input['categorylist'] ) ) ? $input['categorylist'] : array();
	return $input;
}</pre>
<p>Nun müssen wir die Werte noch änderbar machen. Fangen wir mit der Input-Box an:</p>
<pre class="brush: php; first-line: 14; highlight: [16]; html-script: true; title: ; notranslate">&lt;tr valign=&quot;top&quot;&gt;
  &lt;th scope=&quot;row&quot;&gt;Titel der Box&lt;/th&gt;
  &lt;td&gt;&lt;input type=&quot;text&quot; value=&quot;&lt;?php echo $options['boxtitle']; ?&gt;&quot; name=&quot;ctheme_theme_options[boxtitle]&quot; id=&quot;ctheme_theme_options_boxtitle&quot; /&gt;&lt;/td&gt;
&lt;/tr&gt;</pre>
<p>Wie Ihr seht, verwenden wir hier als name-Attribute den $options-Name als Array. (Hm, ist der Satz denn jetzt verständlich?)</p>
<p>Machen wir uns nun an die Auswahl der Kategorien. Dazu brauchen wir zwei Funktionen: Die eine listet alle Kategorien rekursive auf. Dafür ist es notwendig zu prüfen, ob die aktuelle Kategorie in der Schleife eine Unter-Kategorie hat, die zweite Funktion.</p>
<pre class="brush: php; title: ; notranslate">/***************
* list subcategories
* @categories wp-get_categories-Array
* @categoryId choosen category
* @label label to save in options
* @options the options
*******************/
function ctheme_options_listcategory( $categories, $categoryId, $label, &amp;$options ) {
        //alle kategorien durchgehen, um die gewünschten Kategorien zu erhalten...
        // 0 gibt z.B. alle Top-Kategorien aus, 8 z.B. nur die, welcher eine Sub-Kategorie der Top-Kategorie 8 ist
	foreach( $categories as $category ):
                //Hat diese Kategorie die gewünschte ID?
		if( $category-&gt;category_parent == $categoryId ):
		?&gt;
			&lt;li&gt;
				&lt;input name=&quot;ctheme_theme_options[&lt;?php echo $label; ?&gt;][]&quot; type=&quot;checkbox&quot; value=&quot;&lt;?php echo $category-&gt;term_id; ?&gt;&quot; &lt;?php if(@in_array($category-&gt;term_id, $options[$label])) { echo 'checked=&quot;checked&quot;'; } ?&gt; /&gt; &lt;?php echo $category-&gt;name; ?&gt;
				&lt;?php
                                //Ruft nun die 2. Funktion auf, um zu prüfen, ob diese Kategorie weitere Kategorien enthält
                                if($subcats = ctheme_options_hassubcategory($categories, $category-&gt;term_id)): ?&gt;
					&lt;ul style=&quot;padding-left:20px; margin-bottom:14px;&quot;&gt;
						&lt;?php
                                                //Sollte dies der Fall sein, rufe ctheme_options_listcategory erneut auf
                                                ctheme_options_listcategory( $categories, $category-&gt;term_id, $label, $options ); ?&gt;
					&lt;/ul&gt;
				&lt;?php endif; ?&gt;
			&lt;/li&gt;
	&lt;?php endif;
	endforeach;
}

/* check, if the given categoryid is in the category-array */
function ctheme_options_hassubcategory( $categories, $categoryId ){
	$hasSubcategory = false;

	foreach( $categories as $category ) {
		if( $category-&gt;category_parent == $categoryId) {
			$hasSubcategory = true;
			break;
		}
	}

	return $hasSubcategory;
}</pre>
<p>In unserer do_page-Funktion können wir die Kategorie-Funktion nun einfach mit dem Label, welchen wir in der Validierungs-Funktion angegeben haben, aufrufen.</p>
<pre class="brush: php; first-line: 19; highlight: [21]; title: ; notranslate">&lt;tr&gt;
  &lt;th scope=&quot;row&quot;&gt;Kategorie für die Auflistung in der Box&lt;/th&gt;
  &lt;td&gt;
    &lt;?php
        //Alle Kategorien von WordPress mit hide_empty=0 abfragen... Wir benötigen alle Kategorien für die Optionen
        $allCategories = get_categories('hide_empty=0');

        ctheme_options_listcategory( $allCategories, 0, categorylist, $options );
    ?&gt;
  &lt;/td&gt;
&lt;/tr&gt;</pre>
<p>Als letztes müsst ihr die Options-Seite noch an die Theme-Navigation im Admin-Bereich hängen:</p>
<pre class="brush: php; title: ; notranslate">//register options page
add_action('admin_menu', 'ctheme_menu');

function ctheme_menu(){
	add_theme_page('cTheme Optionen', 'Optionen', 'edit_theme_options', 'ctheme-options', 'ctheme_options_do_page');
}</pre>
<div class="simple_likebuttons_container_small">
      <div class="simple_likebuttons_googleplus">
        <g:plusone size="medium" count="false" href="http://www.punkt16.de/2011/11/wordpress-theme-options/"></g:plusone>
      </div>
    
      <div class="simple_likebuttons_twitter simple_likebuttons_twitter_s">
        <a href="https://twitter.com/share" class="twitter-share-button" data-count="none" data-url="http://www.punkt16.de/2011/11/wordpress-theme-options/" data-lang="de">Tweet</a>
      </div>
    
      <div class="simple_likebuttons_facebook">
        <div id="fb-root"></div>
        <script>(function(d, s, id) {
          var js, fjs = d.getElementsByTagName(s)[0];
          if (d.getElementById(id)) {return;}
          js = d.createElement(s); js.id = id;
          js.src = "//connect.facebook.net/de_DE/all.js#xfbml=1";
          fjs.parentNode.insertBefore(js, fjs);
        }(document, "script", "facebook-jssdk"));</script>
        <div class="fb-like" data-href="http://www.punkt16.de/2011/11/wordpress-theme-options/" data-send="false" data-layout="button_count" data-show-faces="false" data-width="90"></div>
      </div>
    </div>]]></content:encoded>
			<wfw:commentRss>http://www.punkt16.de/2011/11/wordpress-theme-options/feed/</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
		<item>
		<title>PHP Kalender 1.1.1</title>
		<link>http://www.punkt16.de/2009/12/php-kalender-1-1/</link>
		<comments>http://www.punkt16.de/2009/12/php-kalender-1-1/#comments</comments>
		<pubDate>Thu, 17 Dec 2009 15:29:32 +0000</pubDate>
		<dc:creator>Florian Palme</dc:creator>
				<category><![CDATA[Klassen]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[Code]]></category>
		<category><![CDATA[Snippet]]></category>
		<category><![CDATA[Tutorial]]></category>

		<guid isPermaLink="false">http://www.punkt16.de/?p=250</guid>
		<description><![CDATA[Version 1.1.1 des Punkt . 16 PHP Kalender!  ]]></description>
			<content:encoded><![CDATA[<p class="wp-flattr-button"></p><p>Version 1.1.1 des Punkt . 16 PHP Kalender!</p>
<p><span id="more-250"></span></p>
<p>Mit der neuen Version des Kalenders, erweitert sich der Funktionsumfang um Feiertage &#038; Ferien.</p>
<p>&nbsp;</p>
<p>Als Beispiel fügen wir Silvester dieses Jahres hinzu. Da Silvester jedes Jahr statt findet, verwenden wir für die Jahreszahl ein Sternchen ( * ). Diese Sternchen könnt ihr Nutzen wie Ihr möchtet, d.h. auch für Tage und Monate.</p>


<div class="wp-geshi-highlight-wrap5"><div class="wp-geshi-highlight-wrap4"><div class="wp-geshi-highlight-wrap3"><div class="wp-geshi-highlight-wrap2"><div class="wp-geshi-highlight-wrap"><div class="wp-geshi-highlight"><div class="php"><pre class="de1"><span class="re0">$kalender</span><span class="sy0">-&gt;</span><span class="me1">addHoliday</span><span class="br0">&#40;</span><span class="st_h">'Silvester'</span><span class="sy0">,</span> <span class="st_h">'31.12.*'</span><span class="br0">&#41;</span><span class="sy0">;</span></pre></div></div></div></div></div></div></div>


<p>Oder habt Ihr vllt an jedem 5. Tag im Monat ein Fest?</p>


<div class="wp-geshi-highlight-wrap5"><div class="wp-geshi-highlight-wrap4"><div class="wp-geshi-highlight-wrap3"><div class="wp-geshi-highlight-wrap2"><div class="wp-geshi-highlight-wrap"><div class="wp-geshi-highlight"><div class="php"><pre class="de1"><span class="re0">$kalender</span><span class="sy0">-&gt;</span><span class="me1">addHoliday</span><span class="br0">&#40;</span><span class="st_h">'Monats-Party'</span><span class="sy0">,</span> <span class="st_h">'05.*.*'</span><span class="br0">&#41;</span><span class="sy0">;</span></pre></div></div></div></div></div></div></div>


<p>&nbsp;</p>
<p><b>Schon gewusst?</b><br />
Ihr könnt noch zwei Paramter bei &#8220;addHoliday&#8221; übergeben:<br />
Eine URL, welche beim Klick auf den Eintrag auf eine Seite weiterleitet<br />
Eine CSS-Klasse, welche dieser Tag bekommen soll!</p>
<p>So könnt Ihr z.B. Weihnachten (welches schon fest hinterlegt ist <img src='http://www.punkt16.de/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> ) schön hinterlegen</p>


<div class="wp-geshi-highlight-wrap5"><div class="wp-geshi-highlight-wrap4"><div class="wp-geshi-highlight-wrap3"><div class="wp-geshi-highlight-wrap2"><div class="wp-geshi-highlight-wrap"><div class="wp-geshi-highlight"><div class="php"><pre class="de1"><span class="re0">$kalender</span><span class="sy0">-&gt;</span><span class="me1">addHoliday</span><span class="br0">&#40;</span><span class="st_h">'Weihnachten'</span><span class="sy0">,</span> <span class="st_h">'24.12.*'</span><span class="sy0">,</span>
<span class="st_h">'http://deineseite.de/weihnachten.html'</span><span class="sy0">,</span> <span class="st_h">'weihnachten'</span><span class="br0">&#41;</span><span class="sy0">;</span></pre></div></div></div></div></div></div></div>


<p>Der 24.12. wird zu http://deineseite.de/weihnachten.html verlinkt und bekommt die Klasse &#8220;weihnachten&#8221;, welche diesen Tag vielleicht rot hinterlegt? <img src='http://www.punkt16.de/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<p>&nbsp;</p>
<p>Möchtet Ihr einen eingetragenen Feiertag wieder löschen, wie zum Beispiel &#8220;Heilige drei Könige&#8221; (fest Eingetragen), verwendet Ihr folgende Funktion:</p>


<div class="wp-geshi-highlight-wrap5"><div class="wp-geshi-highlight-wrap4"><div class="wp-geshi-highlight-wrap3"><div class="wp-geshi-highlight-wrap2"><div class="wp-geshi-highlight-wrap"><div class="wp-geshi-highlight"><div class="php"><pre class="de1"><span class="re0">$kalender</span><span class="sy0">-&gt;</span><span class="me1">removeHoliday</span><span class="br0">&#40;</span><span class="st_h">'06.1.*'</span><span class="br0">&#41;</span><span class="sy0">;</span></pre></div></div></div></div></div></div></div>


<p>So werden genau die Feiertage ausgetragen, welche am 06.1.* stattfinden.</p>
<p>&nbsp;</p>
<p>Weiter habt ihr die Möglichkeit, ganze Ferien einzutragen:</p>


<div class="wp-geshi-highlight-wrap5"><div class="wp-geshi-highlight-wrap4"><div class="wp-geshi-highlight-wrap3"><div class="wp-geshi-highlight-wrap2"><div class="wp-geshi-highlight-wrap"><div class="wp-geshi-highlight"><div class="php"><pre class="de1"><span class="re0">$kalender</span><span class="sy0">-&gt;</span><span class="me1">addVacation</span><span class="br0">&#40;</span><span class="st_h">'26.12.2009'</span><span class="sy0">,</span> <span class="st_h">'29.12.2009'</span><span class="sy0">,</span> <span class="st_h">'Testferien'</span><span class="br0">&#41;</span><span class="sy0">;</span></pre></div></div></div></div></div></div></div>


<p>Das erste Datum ist der Beginn, das zweite Datum das Ende (wird markiert). Der Dritte Parameter &#8220;Testferien&#8221; ist der Name dieser Ferien.<br />
Hier könnt Ihr auch, wie oben, zwei weitere Parameter anhängen, welche eine URL und eine CSS-Klasse behinhalten.</p>
<p>&nbsp;</p>
<p>Ferien könnt ihr löschen, in dem Ihr beim Funktionsaufruf von removeVacation den Namen dieser Ferien übergebt:</p>


<div class="wp-geshi-highlight-wrap5"><div class="wp-geshi-highlight-wrap4"><div class="wp-geshi-highlight-wrap3"><div class="wp-geshi-highlight-wrap2"><div class="wp-geshi-highlight-wrap"><div class="wp-geshi-highlight"><div class="php"><pre class="de1"><span class="re0">$kalender</span><span class="sy0">-&gt;</span><span class="me1">removeVacation</span><span class="br0">&#40;</span><span class="st_h">'Testferien'</span><span class="br0">&#41;</span><span class="sy0">;</span></pre></div></div></div></div></div></div></div>


<p>&nbsp;</p>
<p>Ein kompletter Code könnt nun so aussehen:</p>


<div class="wp-geshi-highlight-wrap5"><div class="wp-geshi-highlight-wrap4"><div class="wp-geshi-highlight-wrap3"><div class="wp-geshi-highlight-wrap2"><div class="wp-geshi-highlight-wrap"><div class="wp-geshi-highlight"><div class="php"><pre class="de1"><span class="re0">$deutscheDaten</span><span class="sy0">=</span><span class="kw3">array</span><span class="br0">&#40;</span><span class="st_h">'daysLong'</span><span class="sy0">=&gt;</span><span class="kw3">array</span><span class="br0">&#40;</span><span class="st_h">'Montag'</span><span class="sy0">,</span><span class="st_h">'Dienstag'</span><span class="sy0">,</span><span class="st_h">'Mittwoch'</span><span class="sy0">,</span><span class="st_h">'Donnerstag'</span><span class="sy0">,</span><span class="st_h">'Freitag'</span><span class="sy0">,</span><span class="st_h">'Samstag'</span><span class="sy0">,</span><span class="st_h">'Sonntag'</span><span class="br0">&#41;</span><span class="sy0">,</span><span class="st_h">'daysShort'</span><span class="sy0">=&gt;</span><span class="kw3">array</span><span class="br0">&#40;</span><span class="st_h">'Mo'</span><span class="sy0">,</span><span class="st_h">'Di'</span><span class="sy0">,</span><span class="st_h">'Mi'</span><span class="sy0">,</span><span class="st_h">'Do'</span><span class="sy0">,</span><span class="st_h">'Fr'</span><span class="sy0">,</span><span class="st_h">'Sa'</span><span class="sy0">,</span><span class="st_h">'So'</span><span class="sy0">,</span><span class="br0">&#41;</span><span class="sy0">,</span><span class="st_h">'monthsLong'</span><span class="sy0">=&gt;</span><span class="kw3">array</span><span class="br0">&#40;</span><span class="st_h">'Januar'</span><span class="sy0">,</span><span class="st_h">'Februar'</span><span class="sy0">,</span><span class="st_h">'März'</span><span class="sy0">,</span><span class="st_h">'April'</span><span class="sy0">,</span><span class="st_h">'Mai'</span><span class="sy0">,</span><span class="st_h">'Juni'</span><span class="sy0">,</span><span class="st_h">'Juli'</span><span class="sy0">,</span><span class="st_h">'August'</span><span class="sy0">,</span><span class="st_h">'September'</span><span class="sy0">,</span><span class="st_h">'Oktober'</span><span class="sy0">,</span><span class="st_h">'November'</span><span class="sy0">,</span><span class="st_h">'Dezember'</span><span class="br0">&#41;</span><span class="sy0">,</span><span class="st_h">'monthsShort'</span><span class="sy0">=&gt;</span><span class="kw3">array</span><span class="br0">&#40;</span><span class="st_h">'Jan'</span><span class="sy0">,</span><span class="st_h">'Feb'</span><span class="sy0">,</span><span class="st_h">'März'</span><span class="sy0">,</span><span class="st_h">'Apr'</span><span class="sy0">,</span><span class="st_h">'Mai'</span><span class="sy0">,</span><span class="st_h">'Juni'</span><span class="sy0">,</span><span class="st_h">'Juli'</span><span class="sy0">,</span><span class="st_h">'Aug'</span><span class="sy0">,</span><span class="st_h">'Sep'</span><span class="sy0">,</span><span class="st_h">'Okt'</span><span class="sy0">,</span><span class="st_h">'Nov'</span><span class="sy0">,</span><span class="st_h">'Dez'</span><span class="br0">&#41;</span><span class="br0">&#41;</span><span class="sy0">;</span>
&nbsp;
<span class="re0">$kalender</span><span class="sy0">=</span> <span class="kw2">new</span> Punkt16_Calendar<span class="br0">&#40;</span><span class="re0">$deutscheDaten</span><span class="br0">&#41;</span><span class="sy0">;</span>
<span class="re0">$kalender</span><span class="sy0">-&gt;</span><span class="me1">addHoliday</span><span class="br0">&#40;</span><span class="st_h">'Silvester'</span><span class="sy0">,</span> <span class="st_h">'31.12.*'</span><span class="br0">&#41;</span><span class="sy0">;</span>
<span class="re0">$kalender</span><span class="sy0">-&gt;</span><span class="me1">addHoliday</span><span class="br0">&#40;</span><span class="st_h">'Monats-Party'</span><span class="sy0">,</span> <span class="st_h">'05.*.*'</span><span class="br0">&#41;</span><span class="sy0">;</span>
<span class="re0">$kalender</span><span class="sy0">-&gt;</span><span class="me1">removeHoliday</span><span class="br0">&#40;</span><span class="st_h">'06.1.*'</span><span class="br0">&#41;</span><span class="sy0">;</span>
<span class="re0">$kalender</span><span class="sy0">-&gt;</span><span class="me1">addVacation</span><span class="br0">&#40;</span><span class="st_h">'26.12.2009'</span><span class="sy0">,</span> <span class="st_h">'29.12.2009'</span><span class="sy0">,</span> <span class="st_h">'Testferien'</span><span class="br0">&#41;</span><span class="sy0">;</span>
<span class="re0">$kalender</span><span class="sy0">-&gt;</span><span class="me1">removeVacation</span><span class="br0">&#40;</span><span class="st_h">'Testferien'</span><span class="br0">&#41;</span><span class="sy0">;</span>
&nbsp;
<span class="kw1">echo</span> <span class="re0">$kalender</span><span class="sy0">-&gt;</span><span class="me1">getCalendar</span><span class="br0">&#40;</span><span class="br0">&#41;</span><span class="sy0">;</span></pre></div></div></div></div></div></div></div>


<p>&nbsp;</p>
<p>Ein Beispiel mit den neuen Funktionen könnt ihr euch hier ansehen: <a href="http://examples.punkt16.de/PHP/Kalender1.1.1/" target="_blank" title="PHP Kalender 1.1 Beispiel">http://examples.punkt16.de/PHP/Kalender1.1.1/</a><br />
Die benötigten Dateien könnt Ihr euch <a href="http://downloads.punkt16.de/download.php?file=/PHP/Punkt16_PHP_Calendar_1_1_1.zip" title="PHP Kalender 1.1.1 Files">hier downloaden</a>!</p>
<p>&nbsp;</p>
<p><b>Ein Backlink zu www.punkt16.de ist erwünscht, aber nicht Pflicht!</b></p>
<div class="simple_likebuttons_container_small">
      <div class="simple_likebuttons_googleplus">
        <g:plusone size="medium" count="false" href="http://www.punkt16.de/2009/12/php-kalender-1-1/"></g:plusone>
      </div>
    
      <div class="simple_likebuttons_twitter simple_likebuttons_twitter_s">
        <a href="https://twitter.com/share" class="twitter-share-button" data-count="none" data-url="http://www.punkt16.de/2009/12/php-kalender-1-1/" data-lang="de">Tweet</a>
      </div>
    
      <div class="simple_likebuttons_facebook">
        <div id="fb-root"></div>
        <script>(function(d, s, id) {
          var js, fjs = d.getElementsByTagName(s)[0];
          if (d.getElementById(id)) {return;}
          js = d.createElement(s); js.id = id;
          js.src = "//connect.facebook.net/de_DE/all.js#xfbml=1";
          fjs.parentNode.insertBefore(js, fjs);
        }(document, "script", "facebook-jssdk"));</script>
        <div class="fb-like" data-href="http://www.punkt16.de/2009/12/php-kalender-1-1/" data-send="false" data-layout="button_count" data-show-faces="false" data-width="90"></div>
      </div>
    </div>]]></content:encoded>
			<wfw:commentRss>http://www.punkt16.de/2009/12/php-kalender-1-1/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>PHP Kalender</title>
		<link>http://www.punkt16.de/2009/12/php-kalender/</link>
		<comments>http://www.punkt16.de/2009/12/php-kalender/#comments</comments>
		<pubDate>Wed, 02 Dec 2009 23:17:23 +0000</pubDate>
		<dc:creator>Florian Palme</dc:creator>
				<category><![CDATA[Klassen]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[Code]]></category>
		<category><![CDATA[Snippet]]></category>
		<category><![CDATA[Tutorial]]></category>

		<guid isPermaLink="false">http://www.punkt16.de/?p=239</guid>
		<description><![CDATA[Ein PHP-basierender Kalender, welcher den aktuellen Tag markiert.  ]]></description>
			<content:encoded><![CDATA[<p class="wp-flattr-button"></p><p>Ein PHP-basierender Kalender, welcher den aktuellen Tag markiert.</p>
<p><span id="more-239"></span></p>
<p>&nbsp;</p>
<p>Heute gibt es ein Skript für einen PHP-basierenden Kalender! Das Skript selbst erkläre ich nicht, da es den Rahmen mehr als sprengen würde. Allerdings erkläre ich euch, wie einfach es Anzuwenden ist! Die PHP-Klasse, welche ihr benötigt, könnt ihr euch <a href="http://downloads.punkt16.de/download.php?file=/PHP/Punkt16_PHP_Calendar.zip" target="_blank">hier downloaden</a>.</p>
<p>Als ersters solltet Ihr das Skript includen:</p>


<div class="wp-geshi-highlight-wrap5"><div class="wp-geshi-highlight-wrap4"><div class="wp-geshi-highlight-wrap3"><div class="wp-geshi-highlight-wrap2"><div class="wp-geshi-highlight-wrap"><div class="wp-geshi-highlight"><div class="php"><pre class="de1"><span class="kw1">include</span><span class="br0">&#40;</span><span class="st_h">'calendar.class.php'</span><span class="br0">&#41;</span><span class="sy0">;</span></pre></div></div></div></div></div></div></div>


<p>Nun müsst Ihr ein neues Objekt instanzieren. Das heisst nichts anderes, als den Kalender aufzurufen und in einer Variable fest zu halten.</p>


<div class="wp-geshi-highlight-wrap5"><div class="wp-geshi-highlight-wrap4"><div class="wp-geshi-highlight-wrap3"><div class="wp-geshi-highlight-wrap2"><div class="wp-geshi-highlight-wrap"><div class="wp-geshi-highlight"><div class="php"><pre class="de1"><span class="re0">$kalender</span> <span class="sy0">=</span> <span class="kw2">new</span> Punkt16_Calendar<span class="br0">&#40;</span><span class="br0">&#41;</span><span class="sy0">;</span></pre></div></div></div></div></div></div></div>


<p>Jetzt noch die Funktion <span style="color:#2060A0;">getCalendar</span> aufrufen, und mit <span style="color:#2060A0;">echo</span> ausgeben:</p>


<div class="wp-geshi-highlight-wrap5"><div class="wp-geshi-highlight-wrap4"><div class="wp-geshi-highlight-wrap3"><div class="wp-geshi-highlight-wrap2"><div class="wp-geshi-highlight-wrap"><div class="wp-geshi-highlight"><div class="php"><pre class="de1"><span class="kw1">echo</span> <span class="re0">$kalender</span><span class="sy0">-&gt;</span><span class="me1">getCalendar</span><span class="br0">&#40;</span><span class="br0">&#41;</span><span class="sy0">;</span></pre></div></div></div></div></div></div></div>


<p>&nbsp;</p>
<p>
Der komplette Code für den Standard-Kalender sieht wie folgt aus:</p>


<div class="wp-geshi-highlight-wrap5"><div class="wp-geshi-highlight-wrap4"><div class="wp-geshi-highlight-wrap3"><div class="wp-geshi-highlight-wrap2"><div class="wp-geshi-highlight-wrap"><div class="wp-geshi-highlight"><div class="php"><pre class="de1"><span class="kw1">include</span><span class="br0">&#40;</span><span class="st_h">'calendar.class.php'</span><span class="br0">&#41;</span><span class="sy0">;</span>
<span class="re0">$kalender</span> <span class="sy0">=</span> <span class="kw2">new</span> Punkt16_Calendar<span class="br0">&#40;</span><span class="br0">&#41;</span><span class="sy0">;</span>
<span class="kw1">echo</span> <span class="re0">$kalender</span><span class="sy0">-&gt;</span><span class="me1">getCalendar</span><span class="br0">&#40;</span><span class="br0">&#41;</span><span class="sy0">;</span></pre></div></div></div></div></div></div></div>


<p>&nbsp;</p>
<p>Ihr habt nun aber englische Monats- und Tagesnamen. Um diese zu ändern, müsst Ihr beim instanzieren des Objekts ein Array mit den deutschen Namen übergeben.<br />
Euer Array sieht so aus:</p>


<div class="wp-geshi-highlight-wrap5"><div class="wp-geshi-highlight-wrap4"><div class="wp-geshi-highlight-wrap3"><div class="wp-geshi-highlight-wrap2"><div class="wp-geshi-highlight-wrap"><div class="wp-geshi-highlight"><div class="php"><pre class="de1"><span class="re0">$deutscheDaten</span> <span class="sy0">=</span> <span class="kw3">array</span><span class="br0">&#40;</span>
					   <span class="st_h">'daysLong'</span> <span class="sy0">=&gt;</span> <span class="kw3">array</span><span class="br0">&#40;</span>
										   		<span class="st_h">'Montag'</span><span class="sy0">,</span>
												<span class="st_h">'Dienstag'</span><span class="sy0">,</span>
												<span class="st_h">'Mittwoch'</span><span class="sy0">,</span>
												<span class="st_h">'Donnerstag'</span><span class="sy0">,</span>
												<span class="st_h">'Freitag'</span><span class="sy0">,</span>
												<span class="st_h">'Samstag'</span><span class="sy0">,</span>
												<span class="st_h">'Sonntag'</span>
										   <span class="br0">&#41;</span><span class="sy0">,</span>
&nbsp;
					   <span class="st_h">'daysShort'</span> <span class="sy0">=&gt;</span> <span class="kw3">array</span><span class="br0">&#40;</span>
												<span class="st_h">'Mo'</span><span class="sy0">,</span>
												<span class="st_h">'Di'</span><span class="sy0">,</span>
												<span class="st_h">'Mi'</span><span class="sy0">,</span>
												<span class="st_h">'Do'</span><span class="sy0">,</span>
												<span class="st_h">'Fr'</span><span class="sy0">,</span>
												<span class="st_h">'Sa'</span><span class="sy0">,</span>
												<span class="st_h">'So'</span><span class="sy0">,</span>
											<span class="br0">&#41;</span><span class="sy0">,</span>
&nbsp;
					   <span class="st_h">'monthsLong'</span> <span class="sy0">=&gt;</span> <span class="kw3">array</span><span class="br0">&#40;</span>
											 	<span class="st_h">'Januar'</span><span class="sy0">,</span>
												<span class="st_h">'Februar'</span><span class="sy0">,</span>
												<span class="st_h">'März'</span><span class="sy0">,</span>
												<span class="st_h">'April'</span><span class="sy0">,</span>
												<span class="st_h">'Mai'</span><span class="sy0">,</span>
												<span class="st_h">'Juni'</span><span class="sy0">,</span>
												<span class="st_h">'Juli'</span><span class="sy0">,</span>
												<span class="st_h">'August'</span><span class="sy0">,</span>
												<span class="st_h">'September'</span><span class="sy0">,</span>
												<span class="st_h">'Oktober'</span><span class="sy0">,</span>
												<span class="st_h">'November'</span><span class="sy0">,</span>
												<span class="st_h">'Dezember'</span>
											 <span class="br0">&#41;</span><span class="sy0">,</span>
&nbsp;
					   <span class="st_h">'monthsShort'</span> <span class="sy0">=&gt;</span> <span class="kw3">array</span><span class="br0">&#40;</span>
											  	<span class="st_h">'Jan'</span><span class="sy0">,</span>
												<span class="st_h">'Feb'</span><span class="sy0">,</span>
												<span class="st_h">'März'</span><span class="sy0">,</span>
												<span class="st_h">'Apr'</span><span class="sy0">,</span>
												<span class="st_h">'Mai'</span><span class="sy0">,</span>
												<span class="st_h">'Juni'</span><span class="sy0">,</span>
												<span class="st_h">'Juli'</span><span class="sy0">,</span>
												<span class="st_h">'Aug'</span><span class="sy0">,</span>
												<span class="st_h">'Sep'</span><span class="sy0">,</span>
												<span class="st_h">'Okt'</span><span class="sy0">,</span>
												<span class="st_h">'Nov'</span><span class="sy0">,</span>
												<span class="st_h">'Dez'</span>
											  <span class="br0">&#41;</span>
					   <span class="br0">&#41;</span><span class="sy0">;</span></pre></div></div></div></div></div></div></div>


<p>Falls Ihr euren Code nicht so aufblähen möchtet, hier die kurze Fassung:</p>


<div class="wp-geshi-highlight-wrap5"><div class="wp-geshi-highlight-wrap4"><div class="wp-geshi-highlight-wrap3"><div class="wp-geshi-highlight-wrap2"><div class="wp-geshi-highlight-wrap"><div class="wp-geshi-highlight"><div class="php"><pre class="de1"><span class="re0">$deutscheDaten</span><span class="sy0">=</span><span class="kw3">array</span><span class="br0">&#40;</span><span class="st_h">'daysLong'</span><span class="sy0">=&gt;</span><span class="kw3">array</span><span class="br0">&#40;</span><span class="st_h">'Montag'</span><span class="sy0">,</span><span class="st_h">'Dienstag'</span><span class="sy0">,</span><span class="st_h">'Mittwoch'</span><span class="sy0">,</span><span class="st_h">'Donnerstag'</span><span class="sy0">,</span><span class="st_h">'Freitag'</span><span class="sy0">,</span><span class="st_h">'Samstag'</span><span class="sy0">,</span><span class="st_h">'Sonntag'</span><span class="br0">&#41;</span><span class="sy0">,</span><span class="st_h">'daysShort'</span><span class="sy0">=&gt;</span><span class="kw3">array</span><span class="br0">&#40;</span><span class="st_h">'Mo'</span><span class="sy0">,</span><span class="st_h">'Di'</span><span class="sy0">,</span><span class="st_h">'Mi'</span><span class="sy0">,</span><span class="st_h">'Do'</span><span class="sy0">,</span><span class="st_h">'Fr'</span><span class="sy0">,</span><span class="st_h">'Sa'</span><span class="sy0">,</span><span class="st_h">'So'</span><span class="sy0">,</span><span class="br0">&#41;</span><span class="sy0">,</span><span class="st_h">'monthsLong'</span><span class="sy0">=&gt;</span><span class="kw3">array</span><span class="br0">&#40;</span><span class="st_h">'Januar'</span><span class="sy0">,</span><span class="st_h">'Februar'</span><span class="sy0">,</span><span class="st_h">'März'</span><span class="sy0">,</span><span class="st_h">'April'</span><span class="sy0">,</span><span class="st_h">'Mai'</span><span class="sy0">,</span><span class="st_h">'Juni'</span><span class="sy0">,</span><span class="st_h">'Juli'</span><span class="sy0">,</span><span class="st_h">'August'</span><span class="sy0">,</span><span class="st_h">'September'</span><span class="sy0">,</span><span class="st_h">'Oktober'</span><span class="sy0">,</span><span class="st_h">'November'</span><span class="sy0">,</span><span class="st_h">'Dezember'</span><span class="br0">&#41;</span><span class="sy0">,</span><span class="st_h">'monthsShort'</span><span class="sy0">=&gt;</span><span class="kw3">array</span><span class="br0">&#40;</span><span class="st_h">'Jan'</span><span class="sy0">,</span><span class="st_h">'Feb'</span><span class="sy0">,</span><span class="st_h">'März'</span><span class="sy0">,</span><span class="st_h">'Apr'</span><span class="sy0">,</span><span class="st_h">'Mai'</span><span class="sy0">,</span><span class="st_h">'Juni'</span><span class="sy0">,</span><span class="st_h">'Juli'</span><span class="sy0">,</span><span class="st_h">'Aug'</span><span class="sy0">,</span><span class="st_h">'Sep'</span><span class="sy0">,</span><span class="st_h">'Okt'</span><span class="sy0">,</span><span class="st_h">'Nov'</span><span class="sy0">,</span><span class="st_h">'Dez'</span><span class="br0">&#41;</span><span class="br0">&#41;</span><span class="sy0">;</span></pre></div></div></div></div></div></div></div>


<p>Übergebt nun dem Objekt diese Daten:</p>


<div class="wp-geshi-highlight-wrap5"><div class="wp-geshi-highlight-wrap4"><div class="wp-geshi-highlight-wrap3"><div class="wp-geshi-highlight-wrap2"><div class="wp-geshi-highlight-wrap"><div class="wp-geshi-highlight"><div class="php"><pre class="de1"><span class="re0">$kalender</span> <span class="sy0">=</span> <span class="kw2">new</span> Punkt16_Calendar<span class="br0">&#40;</span><span class="re0">$deutscheDaten</span><span class="br0">&#41;</span><span class="sy0">;</span></pre></div></div></div></div></div></div></div>


<p>&nbsp;</p>
<p>Kompletter Code:</p>


<div class="wp-geshi-highlight-wrap5"><div class="wp-geshi-highlight-wrap4"><div class="wp-geshi-highlight-wrap3"><div class="wp-geshi-highlight-wrap2"><div class="wp-geshi-highlight-wrap"><div class="wp-geshi-highlight"><div class="php"><pre class="de1"><span class="kw1">include</span><span class="br0">&#40;</span><span class="st_h">'calendar.class.php'</span><span class="br0">&#41;</span><span class="sy0">;</span>
<span class="re0">$deutscheDaten</span><span class="sy0">=</span><span class="kw3">array</span><span class="br0">&#40;</span><span class="st_h">'daysLong'</span><span class="sy0">=&gt;</span><span class="kw3">array</span><span class="br0">&#40;</span><span class="st_h">'Montag'</span><span class="sy0">,</span><span class="st_h">'Dienstag'</span><span class="sy0">,</span><span class="st_h">'Mittwoch'</span><span class="sy0">,</span><span class="st_h">'Donnerstag'</span><span class="sy0">,</span><span class="st_h">'Freitag'</span><span class="sy0">,</span><span class="st_h">'Samstag'</span><span class="sy0">,</span><span class="st_h">'Sonntag'</span><span class="br0">&#41;</span><span class="sy0">,</span><span class="st_h">'daysShort'</span><span class="sy0">=&gt;</span><span class="kw3">array</span><span class="br0">&#40;</span><span class="st_h">'Mo'</span><span class="sy0">,</span><span class="st_h">'Di'</span><span class="sy0">,</span><span class="st_h">'Mi'</span><span class="sy0">,</span><span class="st_h">'Do'</span><span class="sy0">,</span><span class="st_h">'Fr'</span><span class="sy0">,</span><span class="st_h">'Sa'</span><span class="sy0">,</span><span class="st_h">'So'</span><span class="sy0">,</span><span class="br0">&#41;</span><span class="sy0">,</span><span class="st_h">'monthsLong'</span><span class="sy0">=&gt;</span><span class="kw3">array</span><span class="br0">&#40;</span><span class="st_h">'Januar'</span><span class="sy0">,</span><span class="st_h">'Februar'</span><span class="sy0">,</span><span class="st_h">'März'</span><span class="sy0">,</span><span class="st_h">'April'</span><span class="sy0">,</span><span class="st_h">'Mai'</span><span class="sy0">,</span><span class="st_h">'Juni'</span><span class="sy0">,</span><span class="st_h">'Juli'</span><span class="sy0">,</span><span class="st_h">'August'</span><span class="sy0">,</span><span class="st_h">'September'</span><span class="sy0">,</span><span class="st_h">'Oktober'</span><span class="sy0">,</span><span class="st_h">'November'</span><span class="sy0">,</span><span class="st_h">'Dezember'</span><span class="br0">&#41;</span><span class="sy0">,</span><span class="st_h">'monthsShort'</span><span class="sy0">=&gt;</span><span class="kw3">array</span><span class="br0">&#40;</span><span class="st_h">'Jan'</span><span class="sy0">,</span><span class="st_h">'Feb'</span><span class="sy0">,</span><span class="st_h">'März'</span><span class="sy0">,</span><span class="st_h">'Apr'</span><span class="sy0">,</span><span class="st_h">'Mai'</span><span class="sy0">,</span><span class="st_h">'Juni'</span><span class="sy0">,</span><span class="st_h">'Juli'</span><span class="sy0">,</span><span class="st_h">'Aug'</span><span class="sy0">,</span><span class="st_h">'Sep'</span><span class="sy0">,</span><span class="st_h">'Okt'</span><span class="sy0">,</span><span class="st_h">'Nov'</span><span class="sy0">,</span><span class="st_h">'Dez'</span><span class="br0">&#41;</span><span class="br0">&#41;</span><span class="sy0">;</span>
<span class="re0">$kalender</span> <span class="sy0">=</span> <span class="kw2">new</span> Punkt16_Calendar<span class="br0">&#40;</span><span class="re0">$deutscheDaten</span><span class="br0">&#41;</span><span class="sy0">;</span>
<span class="kw1">echo</span> <span class="re0">$kalender</span><span class="sy0">-&gt;</span><span class="me1">getCalendar</span><span class="br0">&#40;</span><span class="br0">&#41;</span><span class="sy0">;</span></pre></div></div></div></div></div></div></div>


<p>&nbsp;</p>
<p>Eure Ausgabe sieht wohl noch etwas sehr weiss aus. Deswegen benötigt Ihr noch eine passende CSS, welche dem Download oben beiliegt:</p>


<div class="wp-geshi-highlight-wrap5"><div class="wp-geshi-highlight-wrap4"><div class="wp-geshi-highlight-wrap3"><div class="wp-geshi-highlight-wrap2"><div class="wp-geshi-highlight-wrap"><div class="wp-geshi-highlight"><div class="css"><pre class="de1">table<span class="re1">.calendar</span> <span class="br0">&#123;</span> <span class="kw1">width</span><span class="sy0">:</span><span class="re3">210px</span><span class="sy0">;</span> <span class="kw1">border</span><span class="sy0">:</span><span class="re3">1px</span> <span class="kw2">solid</span> <span class="re0">#a6c9e2</span><span class="sy0">;</span> <span class="kw1">margin</span><span class="sy0">:</span><span class="re3">50px</span> <span class="kw2">auto</span> <span class="kw2">auto</span><span class="sy0">;</span><span class="br0">&#125;</span>
table<span class="re1">.calendar</span> table<span class="re1">.title</span> <span class="br0">&#123;</span> <span class="kw1">width</span><span class="sy0">:</span><span class="re3">100%</span><span class="sy0">;</span> <span class="kw1">height</span><span class="sy0">:</span><span class="re3">30px</span><span class="sy0">;</span> broder<span class="sy0">:</span><span class="re3">1px</span> <span class="kw2">solid</span> <span class="re0">#c5dbec</span><span class="sy0">;</span> <span class="kw1">background</span><span class="sy0">:</span><span class="re0">#5c9ccc</span><span class="sy0">;</span> <span class="kw1">text-align</span><span class="sy0">:</span><span class="kw2">center</span><span class="sy0">;</span><span class="br0">&#125;</span>
table<span class="re1">.calendar</span> table<span class="re1">.title</span> td<span class="re1">.monthBackwardA</span> <span class="br0">&#123;</span> <span class="kw1">width</span><span class="sy0">:</span><span class="re3">30px</span><span class="sy0">;</span> <span class="kw1">color</span><span class="sy0">:</span><span class="re0">#fff</span><span class="sy0">;</span> <span class="br0">&#125;</span>
table<span class="re1">.calendar</span> table<span class="re1">.title</span> td<span class="re1">.monthBackwardA</span> a <span class="br0">&#123;</span> <span class="kw1">font-size</span><span class="sy0">:</span><span class="re3">18px</span><span class="sy0">;</span> <span class="kw1">color</span><span class="sy0">:</span><span class="re0">#fff</span><span class="sy0">;</span> <span class="kw1">width</span><span class="sy0">:</span><span class="re3">30px</span><span class="sy0">;</span> <span class="kw1">height</span><span class="sy0">:</span><span class="re3">30px</span><span class="sy0">;</span> <span class="kw1">line-height</span><span class="sy0">:</span><span class="re3">30px</span><span class="sy0">;</span> <span class="kw1">display</span><span class="sy0">:</span><span class="kw2">block</span><span class="sy0">;</span> <span class="kw1">text-decoration</span><span class="sy0">:</span><span class="kw2">none</span><span class="sy0">;</span> <span class="br0">&#125;</span>
table<span class="re1">.calendar</span> table<span class="re1">.title</span> td<span class="re1">.monthYear</span> <span class="br0">&#123;</span> <span class="kw1">font-size</span><span class="sy0">:</span><span class="re3">14px</span><span class="sy0">;</span> <span class="kw1">line-height</span><span class="sy0">:</span><span class="re3">30px</span><span class="sy0">;</span> <span class="kw1">color</span><span class="sy0">:</span><span class="re0">#fff</span><span class="sy0">;</span><span class="br0">&#125;</span>
table<span class="re1">.calendar</span> table<span class="re1">.title</span> td<span class="re1">.monthForwardA</span> <span class="br0">&#123;</span> <span class="kw1">width</span><span class="sy0">:</span><span class="re3">30px</span><span class="sy0">;</span> <span class="kw1">color</span><span class="sy0">:</span><span class="re0">#fff</span><span class="sy0">;</span><span class="br0">&#125;</span>
table<span class="re1">.calendar</span> table<span class="re1">.title</span> td<span class="re1">.monthForwardA</span> a <span class="br0">&#123;</span> <span class="kw1">font-size</span><span class="sy0">:</span><span class="re3">18px</span><span class="sy0">;</span> <span class="kw1">color</span><span class="sy0">:</span><span class="re0">#fff</span><span class="sy0">;</span> <span class="kw1">width</span><span class="sy0">:</span><span class="re3">30px</span><span class="sy0">;</span> <span class="kw1">height</span><span class="sy0">:</span><span class="re3">30px</span><span class="sy0">;</span> <span class="kw1">line-height</span><span class="sy0">:</span><span class="re3">30px</span><span class="sy0">;</span> <span class="kw1">display</span><span class="sy0">:</span><span class="kw2">block</span><span class="sy0">;</span> <span class="kw1">text-decoration</span><span class="sy0">:</span><span class="kw2">none</span><span class="sy0">;</span><span class="br0">&#125;</span>
table<span class="re1">.calendar</span> td<span class="re1">.dayName</span> <span class="br0">&#123;</span> <span class="kw1">text-align</span><span class="sy0">:</span><span class="kw2">center</span><span class="sy0">;</span> <span class="kw1">font-weight</span><span class="sy0">:</span><span class="kw2">bold</span><span class="sy0">;</span> <span class="br0">&#125;</span>
table<span class="re1">.calendar</span> td<span class="re1">.dayA</span> <span class="br0">&#123;</span> <span class="kw1">border</span><span class="sy0">:</span><span class="re3">1px</span> <span class="kw2">solid</span> <span class="re0">#c5dbec</span><span class="sy0">;</span> <span class="kw1">background</span><span class="sy0">:</span><span class="re0">#dfeffc</span><span class="sy0">;</span> <span class="kw1">color</span><span class="sy0">:</span><span class="re0">#2e6e9e</span><span class="sy0">;</span> <span class="kw1">text-align</span><span class="sy0">:</span><span class="kw2">center</span><span class="sy0">;</span><span class="br0">&#125;</span>
table<span class="re1">.calendar</span> td<span class="re1">.dayA</span><span class="re1">.dayTodayA</span> <span class="br0">&#123;</span> <span class="kw1">border</span><span class="sy0">:</span><span class="re3">1px</span> <span class="kw2">solid</span> <span class="re0">#fad42e</span><span class="sy0">;</span> <span class="kw1">background</span><span class="sy0">:</span><span class="re0">#fbec88</span><span class="sy0">;</span> <span class="kw1">color</span><span class="sy0">:</span><span class="re0">#363636</span><span class="sy0">;</span><span class="br0">&#125;</span>
table<span class="re1">.calendar</span> td<span class="re1">.dayA</span><span class="re1">.dayOther</span> <span class="br0">&#123;</span> <span class="kw1">border</span><span class="sy0">:</span><span class="re3">1px</span> <span class="kw2">solid</span> <span class="re0">#e6f4ff</span><span class="sy0">;</span> <span class="kw1">background</span><span class="sy0">:</span><span class="re0">#f6fbff</span><span class="sy0">;</span> <span class="kw1">color</span><span class="sy0">:</span><span class="re0">#98d3ff</span><span class="sy0">;</span> <span class="br0">&#125;</span></pre></div></div></div></div></div></div></div>


<p>&nbsp;</p>
<p>Ein Beispiel mit deutschen Namen könnt ihr euch hier ansehen: <a href="http://examples.punkt16.de/PHP/Kalender/" target="_blank">http://examples.punkt16.de/PHP/Kalender/</a></p>
<p>&nbsp;</p>
<p><b>Ein Backlink zu www.punkt16.de ist erwünscht, aber nicht Pflicht!</b></p>
<div class="simple_likebuttons_container_small">
      <div class="simple_likebuttons_googleplus">
        <g:plusone size="medium" count="false" href="http://www.punkt16.de/2009/12/php-kalender/"></g:plusone>
      </div>
    
      <div class="simple_likebuttons_twitter simple_likebuttons_twitter_s">
        <a href="https://twitter.com/share" class="twitter-share-button" data-count="none" data-url="http://www.punkt16.de/2009/12/php-kalender/" data-lang="de">Tweet</a>
      </div>
    
      <div class="simple_likebuttons_facebook">
        <div id="fb-root"></div>
        <script>(function(d, s, id) {
          var js, fjs = d.getElementsByTagName(s)[0];
          if (d.getElementById(id)) {return;}
          js = d.createElement(s); js.id = id;
          js.src = "//connect.facebook.net/de_DE/all.js#xfbml=1";
          fjs.parentNode.insertBefore(js, fjs);
        }(document, "script", "facebook-jssdk"));</script>
        <div class="fb-like" data-href="http://www.punkt16.de/2009/12/php-kalender/" data-send="false" data-layout="button_count" data-show-faces="false" data-width="90"></div>
      </div>
    </div>]]></content:encoded>
			<wfw:commentRss>http://www.punkt16.de/2009/12/php-kalender/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Snippet: jsonEncode();</title>
		<link>http://www.punkt16.de/2009/10/code-snippet-jsonencode/</link>
		<comments>http://www.punkt16.de/2009/10/code-snippet-jsonencode/#comments</comments>
		<pubDate>Mon, 12 Oct 2009 11:15:38 +0000</pubDate>
		<dc:creator>Florian Palme</dc:creator>
				<category><![CDATA[Code-Snippet]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[Code]]></category>
		<category><![CDATA[JSON]]></category>
		<category><![CDATA[Snippet]]></category>

		<guid isPermaLink="false">http://www.punkt16.de/?p=135</guid>
		<description><![CDATA[Gestern hatte ich das Problem, dass json_encode alle Strings mit einem Umlaut einfach gelöscht hatte. utf8_encode brachte auch nichts. Deswegen schnell eine eigene jsonEncode();-Funktion geschrieben! ;)  ]]></description>
			<content:encoded><![CDATA[<p class="wp-flattr-button"></p><p>Gestern hatte ich das Problem, dass json_encode alle Strings mit einem Umlaut einfach gelöscht hatte. utf8_encode brachte auch nichts. Deswegen schnell eine eigene jsonEncode();-Funktion geschrieben! <img src='http://www.punkt16.de/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> </p>
<p><span id="more-135"></span></p>
<p>&nbsp;</p>
<p>Diese Funktion ersetzt die json_encode-Funktion komplett. Selbst mehrdimensionale Arrays sind kein Problem, da die Funktion rekursiv programmiert ist.</p>


<div class="wp-geshi-highlight-wrap5"><div class="wp-geshi-highlight-wrap4"><div class="wp-geshi-highlight-wrap3"><div class="wp-geshi-highlight-wrap2"><div class="wp-geshi-highlight-wrap"><div class="wp-geshi-highlight"><div class="php"><pre class="de1"><span class="kw2">function</span> jsonEncode<span class="br0">&#40;</span><span class="re0">$array</span><span class="br0">&#41;</span>
<span class="br0">&#123;</span>
	<span class="re0">$zaehler</span> <span class="sy0">=</span> <span class="nu0">1</span><span class="sy0">;</span>
	<span class="re0">$ret</span> <span class="sy0">=</span> <span class="st_h">'{'</span><span class="sy0">;</span>
&nbsp;
	<span class="kw1">foreach</span><span class="br0">&#40;</span><span class="re0">$array</span> <span class="kw1">as</span> <span class="re0">$key</span> <span class="sy0">=&gt;</span> <span class="re0">$val</span><span class="br0">&#41;</span>
	<span class="br0">&#123;</span>
		<span class="re0">$ret</span> <span class="sy0">.=</span> <span class="st_h">'&quot;'</span> <span class="sy0">.</span> <span class="re0">$key</span> <span class="sy0">.</span> <span class="st_h">'&quot;:'</span><span class="sy0">;</span>
&nbsp;
		<span class="kw1">if</span><span class="br0">&#40;</span><span class="kw3">is_string</span><span class="br0">&#40;</span><span class="re0">$val</span><span class="br0">&#41;</span><span class="br0">&#41;</span>
		<span class="br0">&#123;</span>	
			<span class="kw1">if</span><span class="br0">&#40;</span><span class="kw3">empty</span><span class="br0">&#40;</span><span class="re0">$val</span><span class="br0">&#41;</span><span class="br0">&#41;</span>
			<span class="br0">&#123;</span>
				<span class="re0">$ret</span> <span class="sy0">.=</span> <span class="st_h">'null'</span><span class="sy0">;</span>	
			<span class="br0">&#125;</span>
			<span class="kw1">else</span>
			<span class="br0">&#123;</span>
				<span class="re0">$val_e</span> <span class="sy0">=</span> <span class="kw3">str_replace</span><span class="br0">&#40;</span><span class="st_h">'&quot;'</span><span class="sy0">,</span> <span class="st_h">'\&quot;'</span><span class="sy0">,</span> <span class="re0">$val</span><span class="br0">&#41;</span><span class="sy0">;</span>
				<span class="re0">$val_e</span> <span class="sy0">=</span> <span class="kw3">str_replace</span><span class="br0">&#40;</span><span class="st_h">'/'</span><span class="sy0">,</span> <span class="st_h">'/'</span><span class="sy0">,</span> <span class="re0">$val_e</span><span class="br0">&#41;</span><span class="sy0">;</span>
&nbsp;
				<span class="re0">$ret</span> <span class="sy0">.=</span> <span class="st_h">'&quot;'</span> <span class="sy0">.</span> <span class="re0">$val_e</span> <span class="sy0">.</span> <span class="st_h">'&quot;'</span><span class="sy0">;</span>	
			<span class="br0">&#125;</span>
		<span class="br0">&#125;</span>
		<span class="kw1">elseif</span><span class="br0">&#40;</span><span class="kw3">is_bool</span><span class="br0">&#40;</span><span class="re0">$val</span><span class="br0">&#41;</span><span class="br0">&#41;</span>
		<span class="br0">&#123;</span>
			<span class="kw1">if</span><span class="br0">&#40;</span><span class="re0">$val</span> <span class="sy0">==</span> <span class="kw4">true</span><span class="br0">&#41;</span>
			<span class="br0">&#123;</span>
				<span class="re0">$ret</span> <span class="sy0">.=</span> <span class="st_h">'true'</span><span class="sy0">;</span>	
			<span class="br0">&#125;</span>
			<span class="kw1">elseif</span><span class="br0">&#40;</span><span class="re0">$val</span> <span class="sy0">==</span> <span class="kw4">false</span><span class="br0">&#41;</span>
			<span class="br0">&#123;</span>
				<span class="re0">$ret</span> <span class="sy0">.=</span> <span class="st_h">'false'</span><span class="sy0">;</span>	
			<span class="br0">&#125;</span>
		<span class="br0">&#125;</span>
		<span class="kw1">elseif</span><span class="br0">&#40;</span><span class="kw3">is_array</span><span class="br0">&#40;</span><span class="re0">$val</span><span class="br0">&#41;</span><span class="br0">&#41;</span>
		<span class="br0">&#123;</span>
			<span class="re0">$ret</span> <span class="sy0">.=</span> jsonEncode<span class="br0">&#40;</span><span class="re0">$val</span><span class="br0">&#41;</span><span class="sy0">;</span>	
		<span class="br0">&#125;</span>
		<span class="kw1">elseif</span><span class="br0">&#40;</span><span class="kw3">is_null</span><span class="br0">&#40;</span><span class="re0">$val</span><span class="br0">&#41;</span><span class="br0">&#41;</span>
		<span class="br0">&#123;</span>
			<span class="re0">$ret</span> <span class="sy0">.=</span> <span class="st_h">'null'</span><span class="sy0">;</span>
		<span class="br0">&#125;</span>
&nbsp;
		<span class="kw1">if</span><span class="br0">&#40;</span><span class="re0">$zaehler</span> <span class="sy0">&lt;</span> <span class="kw3">count</span><span class="br0">&#40;</span><span class="re0">$array</span><span class="br0">&#41;</span><span class="br0">&#41;</span>
		<span class="br0">&#123;</span>
			<span class="re0">$ret</span> <span class="sy0">.=</span> <span class="st_h">','</span><span class="sy0">;</span>
		<span class="br0">&#125;</span>
&nbsp;
		<span class="re0">$zaehler</span><span class="sy0">++;</span>
	<span class="br0">&#125;</span>
&nbsp;
	<span class="re0">$ret</span> <span class="sy0">.=</span> <span class="st_h">'}'</span><span class="sy0">;</span>
&nbsp;
	<span class="kw1">return</span> <span class="re0">$ret</span><span class="sy0">;</span>
<span class="br0">&#125;</span></pre></div></div></div></div></div></div></div>


<div class="simple_likebuttons_container_small">
      <div class="simple_likebuttons_googleplus">
        <g:plusone size="medium" count="false" href="http://www.punkt16.de/2009/10/code-snippet-jsonencode/"></g:plusone>
      </div>
    
      <div class="simple_likebuttons_twitter simple_likebuttons_twitter_s">
        <a href="https://twitter.com/share" class="twitter-share-button" data-count="none" data-url="http://www.punkt16.de/2009/10/code-snippet-jsonencode/" data-lang="de">Tweet</a>
      </div>
    
      <div class="simple_likebuttons_facebook">
        <div id="fb-root"></div>
        <script>(function(d, s, id) {
          var js, fjs = d.getElementsByTagName(s)[0];
          if (d.getElementById(id)) {return;}
          js = d.createElement(s); js.id = id;
          js.src = "//connect.facebook.net/de_DE/all.js#xfbml=1";
          fjs.parentNode.insertBefore(js, fjs);
        }(document, "script", "facebook-jssdk"));</script>
        <div class="fb-like" data-href="http://www.punkt16.de/2009/10/code-snippet-jsonencode/" data-send="false" data-layout="button_count" data-show-faces="false" data-width="90"></div>
      </div>
    </div>]]></content:encoded>
			<wfw:commentRss>http://www.punkt16.de/2009/10/code-snippet-jsonencode/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Code-Snippet: getRandomString();</title>
		<link>http://www.punkt16.de/2009/10/code-snippet-getrandomstring/</link>
		<comments>http://www.punkt16.de/2009/10/code-snippet-getrandomstring/#comments</comments>
		<pubDate>Wed, 07 Oct 2009 09:43:47 +0000</pubDate>
		<dc:creator>Florian Palme</dc:creator>
				<category><![CDATA[Code-Snippet]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[Code]]></category>
		<category><![CDATA[Snippet]]></category>

		<guid isPermaLink="false">http://www.punkt16.de/?p=115</guid>
		<description><![CDATA[Heute gibt es einen kleinen Code-Snippet, welcher einen zufällig generierten Code zurückgibt.  ]]></description>
			<content:encoded><![CDATA[<p class="wp-flattr-button"></p><p>Heute gibt es einen kleinen Code-Snippet, welcher einen zufällig generierten Code zurückgibt.</p>
<p><span id="more-115"></span></p>
<p>&nbsp;</p>
<p><b>Die Funktion:</b></p>


<div class="wp-geshi-highlight-wrap5"><div class="wp-geshi-highlight-wrap4"><div class="wp-geshi-highlight-wrap3"><div class="wp-geshi-highlight-wrap2"><div class="wp-geshi-highlight-wrap"><div class="wp-geshi-highlight"><div class="php"><pre class="de1"><span class="kw2">function</span> getRandomString<span class="br0">&#40;</span><span class="re0">$types</span> <span class="sy0">=</span> <span class="kw3">array</span><span class="br0">&#40;</span><span class="st_h">'lowtypes'</span><span class="sy0">,</span> <span class="st_h">'bigtypes'</span><span class="sy0">,</span> <span class="st_h">'nummerics'</span><span class="br0">&#41;</span><span class="sy0">,</span> <span class="re0">$fix</span> <span class="sy0">=</span> <span class="kw4">false</span><span class="sy0">,</span> <span class="re0">$max</span> <span class="sy0">=</span> <span class="nu0">20</span><span class="sy0">,</span> <span class="re0">$min</span> <span class="sy0">=</span> <span class="nu0">1</span><span class="br0">&#41;</span>
<span class="br0">&#123;</span>
	<span class="re0">$strings</span> <span class="sy0">=</span> <span class="st0">&quot;&quot;</span><span class="sy0">;</span>
	<span class="re0">$output</span> <span class="sy0">=</span> <span class="st0">&quot;&quot;</span><span class="sy0">;</span>
&nbsp;
	<span class="kw1">foreach</span><span class="br0">&#40;</span><span class="re0">$types</span> <span class="kw1">as</span> <span class="re0">$type</span><span class="br0">&#41;</span>
	<span class="br0">&#123;</span>
		<span class="kw1">switch</span><span class="br0">&#40;</span><span class="re0">$type</span><span class="br0">&#41;</span>
		<span class="br0">&#123;</span>
			<span class="kw1">case</span> <span class="st_h">'lowtypes'</span><span class="sy0">:</span>
					<span class="re0">$strings</span> <span class="sy0">.=</span> <span class="st_h">'abcdefghijklmnopqrstuvwxyz'</span><span class="sy0">;</span>
				<span class="kw1">break</span><span class="sy0">;</span>
&nbsp;
			<span class="kw1">case</span> <span class="st_h">'bigtypes'</span><span class="sy0">:</span>
					<span class="re0">$strings</span> <span class="sy0">.=</span> <span class="st_h">'ABCDEFGHJIKLMNOPQRSTUVWXYZ'</span><span class="sy0">;</span>
				<span class="kw1">break</span><span class="sy0">;</span>
&nbsp;
			<span class="kw1">case</span> <span class="st_h">'nummerics'</span><span class="sy0">:</span>
					<span class="re0">$strings</span> <span class="sy0">.=</span> <span class="st_h">'0123456789'</span><span class="sy0">;</span>
				<span class="kw1">break</span><span class="sy0">;</span>
		<span class="br0">&#125;</span>
	<span class="br0">&#125;</span>
&nbsp;
	<span class="re0">$letters</span> <span class="sy0">=</span> <span class="br0">&#40;</span><span class="sy0">!</span><span class="re0">$fix</span><span class="br0">&#41;</span> ? <span class="kw3">rand</span><span class="br0">&#40;</span><span class="re0">$min</span><span class="sy0">,</span> <span class="re0">$max</span><span class="br0">&#41;</span> <span class="sy0">:</span> <span class="re0">$max</span><span class="sy0">;</span>
&nbsp;
	<span class="kw1">for</span><span class="br0">&#40;</span><span class="re0">$i</span> <span class="sy0">=</span> <span class="nu0">0</span><span class="sy0">;</span> <span class="re0">$i</span> <span class="sy0">&lt;</span> <span class="re0">$letters</span><span class="sy0">;</span> <span class="re0">$i</span><span class="sy0">++</span><span class="br0">&#41;</span>
	<span class="br0">&#123;</span>
		<span class="re0">$output</span> <span class="sy0">.=</span> <span class="re0">$strings</span><span class="br0">&#91;</span><span class="kw3">rand</span><span class="br0">&#40;</span><span class="nu0">0</span><span class="sy0">,</span> <span class="kw3">strlen</span><span class="br0">&#40;</span><span class="re0">$strings</span><span class="br0">&#41;</span> <span class="sy0">-</span> <span class="nu0">1</span><span class="br0">&#41;</span><span class="br0">&#93;</span><span class="sy0">;</span>
	<span class="br0">&#125;</span>
&nbsp;
	<span class="kw1">return</span> <span class="re0">$output</span><span class="sy0">;</span>
<span class="br0">&#125;</span></pre></div></div></div></div></div></div></div>


<p>&nbsp;</p>
<p><b>Funktionsaufruf:</b></p>


<div class="wp-geshi-highlight-wrap5"><div class="wp-geshi-highlight-wrap4"><div class="wp-geshi-highlight-wrap3"><div class="wp-geshi-highlight-wrap2"><div class="wp-geshi-highlight-wrap"><div class="wp-geshi-highlight"><div class="php"><pre class="de1"><span class="co1">//große &amp; kleine Buchstaben + Zahlen, beliebige Größe, min 10 Zeichen, max 20 Zeichen</span>
<span class="kw1">echo</span> getRandomString<span class="br0">&#40;</span><span class="kw3">array</span><span class="br0">&#40;</span><span class="st_h">'lowtypes'</span><span class="sy0">,</span> <span class="st_h">'bigtypes'</span><span class="sy0">,</span> <span class="st_h">'nummerics'</span><span class="br0">&#41;</span><span class="sy0">,</span> <span class="kw4">false</span><span class="sy0">,</span> <span class="nu0">20</span><span class="sy0">,</span> <span class="nu0">10</span><span class="br0">&#41;</span><span class="sy0">;</span>
&nbsp;
<span class="co1">//große Buchstaben + Zahlen, Fixe Größe von 15 Zeichen</span>
<span class="kw1">echo</span> getRandomString<span class="br0">&#40;</span><span class="kw3">array</span><span class="br0">&#40;</span><span class="st_h">'bigtypes'</span><span class="sy0">,</span> <span class="st_h">'nummerics'</span><span class="br0">&#41;</span><span class="sy0">,</span> <span class="kw4">true</span><span class="sy0">,</span> <span class="nu0">15</span><span class="br0">&#41;</span><span class="sy0">;</span></pre></div></div></div></div></div></div></div>


<div class="simple_likebuttons_container_small">
      <div class="simple_likebuttons_googleplus">
        <g:plusone size="medium" count="false" href="http://www.punkt16.de/2009/10/code-snippet-getrandomstring/"></g:plusone>
      </div>
    
      <div class="simple_likebuttons_twitter simple_likebuttons_twitter_s">
        <a href="https://twitter.com/share" class="twitter-share-button" data-count="none" data-url="http://www.punkt16.de/2009/10/code-snippet-getrandomstring/" data-lang="de">Tweet</a>
      </div>
    
      <div class="simple_likebuttons_facebook">
        <div id="fb-root"></div>
        <script>(function(d, s, id) {
          var js, fjs = d.getElementsByTagName(s)[0];
          if (d.getElementById(id)) {return;}
          js = d.createElement(s); js.id = id;
          js.src = "//connect.facebook.net/de_DE/all.js#xfbml=1";
          fjs.parentNode.insertBefore(js, fjs);
        }(document, "script", "facebook-jssdk"));</script>
        <div class="fb-like" data-href="http://www.punkt16.de/2009/10/code-snippet-getrandomstring/" data-send="false" data-layout="button_count" data-show-faces="false" data-width="90"></div>
      </div>
    </div>]]></content:encoded>
			<wfw:commentRss>http://www.punkt16.de/2009/10/code-snippet-getrandomstring/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Zend Framework: Eigene Router</title>
		<link>http://www.punkt16.de/2009/09/zend-framework-eigene-router/</link>
		<comments>http://www.punkt16.de/2009/09/zend-framework-eigene-router/#comments</comments>
		<pubDate>Tue, 29 Sep 2009 12:40:59 +0000</pubDate>
		<dc:creator>Florian Palme</dc:creator>
				<category><![CDATA[PHP]]></category>
		<category><![CDATA[Zend]]></category>
		<category><![CDATA[Controller]]></category>
		<category><![CDATA[Framework]]></category>
		<category><![CDATA[Router]]></category>

		<guid isPermaLink="false">http://www.punkt16.de/?p=98</guid>
		<description><![CDATA[Wie erstelle ich eigene URLs um zum Beispiel eine Variable übergeben zu können?  ]]></description>
			<content:encoded><![CDATA[<p class="wp-flattr-button"></p><p>Wie erstelle ich eigene URLs um zum Beispiel eine Variable übergeben zu können?</p>
<p><span id="more-98"></span></p>
<p>&nbsp;</p>
<p>Um eigene Router zu implementieren, öffnen wir als erstes die index.php aus dem &#8220;public&#8221;-Ordner.<br />
Hier schreiben wir nun, nach dem wir die Application erstellt, die Bootstrap geladen und ausgeführt haben, folgende Zeile um einen neuen Rewrite-Router zu erstellen:</p>


<div class="wp-geshi-highlight-wrap5"><div class="wp-geshi-highlight-wrap4"><div class="wp-geshi-highlight-wrap3"><div class="wp-geshi-highlight-wrap2"><div class="wp-geshi-highlight-wrap"><div class="wp-geshi-highlight"><div class="php"><pre class="de1"><span class="re0">$router</span> <span class="sy0">=</span> <span class="kw2">new</span> Zend_Controller_Router_Rewrite<span class="br0">&#40;</span><span class="br0">&#41;</span><span class="sy0">;</span></pre></div></div></div></div></div></div></div>


<p>&nbsp;</p>
<p>Als nächstes möchten wir einen eigenen Router anlegen. Wir nehmen nun mal an, dass wir einen NachrichtenController haben, sowie eine lesenAction. An diese Action möchten wir nun über die URL die ID mitgeben. Als Name für den Router verwenden wir &#8220;nachrichtlesen&#8221;:</p>


<div class="wp-geshi-highlight-wrap5"><div class="wp-geshi-highlight-wrap4"><div class="wp-geshi-highlight-wrap3"><div class="wp-geshi-highlight-wrap2"><div class="wp-geshi-highlight-wrap"><div class="wp-geshi-highlight"><div class="php"><pre class="de1"><span class="re0">$router</span><span class="sy0">-&gt;</span><span class="me1">addRoute</span><span class="br0">&#40;</span><span class="st_h">'nachrichtlesen'</span><span class="br0">&#41;</span><span class="sy0">;</span></pre></div></div></div></div></div></div></div>


<p>Hier würde Zend noch meckern, da er eine Klasse des Typs Zend_Controller_Router_Route erwartet. In diesen Klassen-Aufruf schreiben wir, wie die URL aussehen soll, dass eine ID übergeben werden soll und welcher Controller / welche Action verwendet werden soll:


<div class="wp-geshi-highlight-wrap5"><div class="wp-geshi-highlight-wrap4"><div class="wp-geshi-highlight-wrap3"><div class="wp-geshi-highlight-wrap2"><div class="wp-geshi-highlight-wrap"><div class="wp-geshi-highlight"><div class="php"><pre class="de1"><span class="re0">$router</span><span class="sy0">-&gt;</span><span class="me1">addRoute</span><span class="br0">&#40;</span>
	<span class="st_h">'nachrichtlesen'</span><span class="sy0">,</span>
	<span class="kw2">new</span> Zend_Controller_Router_Route<span class="br0">&#40;</span><span class="st_h">'nachrichten/lesen/:id'</span><span class="sy0">,</span>
									<span class="kw3">array</span><span class="br0">&#40;</span><span class="st_h">'controller'</span> <span class="sy0">=&gt;</span> <span class="st_h">'nachrichten'</span><span class="sy0">,</span>
										  <span class="st_h">'action'</span> <span class="sy0">=&gt;</span> <span class="st_h">'lesen'</span><span class="br0">&#41;</span><span class="br0">&#41;</span>
<span class="br0">&#41;</span><span class="sy0">;</span></pre></div></div></div></div></div></div></div>


<p><b>Zur Erklärung:</b><br />
&#8220;nachrichten/lesen/&#8221; ist die URL, wie sie später aussehen wird (http://beispiel.de/nachrichten/lesen/).<br />
:id ist ein Parameter, der Übergeben wird.<br />
Das Array enthält die Bestimmung, welcher Controller (nachrichten) / welche Action (lesen) verwendet werden soll.</p>
<p>&nbsp;</p>
<p>Jetzt noch die Routen an die Application übergeben:</p>


<div class="wp-geshi-highlight-wrap5"><div class="wp-geshi-highlight-wrap4"><div class="wp-geshi-highlight-wrap3"><div class="wp-geshi-highlight-wrap2"><div class="wp-geshi-highlight-wrap"><div class="wp-geshi-highlight"><div class="php"><pre class="de1"><span class="re0">$ctrl</span> <span class="sy0">=</span> Zend_Controller_Front<span class="sy0">::</span><span class="me2">getInstance</span><span class="br0">&#40;</span><span class="br0">&#41;</span><span class="sy0">;</span>
<span class="re0">$ctrl</span><span class="sy0">-&gt;</span><span class="me1">setRouter</span><span class="br0">&#40;</span><span class="re0">$router</span><span class="br0">&#41;</span><span class="sy0">;</span></pre></div></div></div></div></div></div></div>


<p>&nbsp;</p>
<p>In einer unsere Views erstellen wir nun ganz einfach eine URL mithilfe des URL-Helpers, welcher auf diese Route zugreift:</p>


<div class="wp-geshi-highlight-wrap5"><div class="wp-geshi-highlight-wrap4"><div class="wp-geshi-highlight-wrap3"><div class="wp-geshi-highlight-wrap2"><div class="wp-geshi-highlight-wrap"><div class="wp-geshi-highlight"><div class="php"><pre class="de1"><span class="re0">$this</span><span class="sy0">-&gt;</span><span class="me1">url</span><span class="br0">&#40;</span><span class="kw3">array</span><span class="br0">&#40;</span><span class="st_h">'id'</span> <span class="sy0">=&gt;</span> <span class="st_h">'3'</span><span class="br0">&#41;</span><span class="sy0">,</span> <span class="st_h">'nachrichtlesen'</span><span class="sy0">,</span> <span class="kw4">true</span><span class="br0">&#41;</span><span class="sy0">;</span></pre></div></div></div></div></div></div></div>


<p>Dies ergibt folgende Ausgabe:


<div class="wp-geshi-highlight-wrap5"><div class="wp-geshi-highlight-wrap4"><div class="wp-geshi-highlight-wrap3"><div class="wp-geshi-highlight-wrap2"><div class="wp-geshi-highlight-wrap"><div class="wp-geshi-highlight"><div class="html"><pre class="de1">http://beispiel.de/nachrichten/lesen/3</pre></div></div></div></div></div></div></div>


<p>&nbsp;</p>
<p>Im NachrichtenController &#038; der lesenAction können wir dies nun wie gewohnt über die Request-Methode verarbeiten:</p>


<div class="wp-geshi-highlight-wrap5"><div class="wp-geshi-highlight-wrap4"><div class="wp-geshi-highlight-wrap3"><div class="wp-geshi-highlight-wrap2"><div class="wp-geshi-highlight-wrap"><div class="wp-geshi-highlight"><div class="php"><pre class="de1"><span class="re0">$id</span> <span class="sy0">=</span> <span class="re0">$this</span><span class="sy0">-&gt;</span><span class="me1">getRequest</span><span class="br0">&#40;</span><span class="br0">&#41;</span><span class="sy0">-&gt;</span><span class="me1">getParam</span><span class="br0">&#40;</span><span class="st_h">'id'</span><span class="br0">&#41;</span><span class="sy0">;</span></pre></div></div></div></div></div></div></div>


<div class="simple_likebuttons_container_small">
      <div class="simple_likebuttons_googleplus">
        <g:plusone size="medium" count="false" href="http://www.punkt16.de/2009/09/zend-framework-eigene-router/"></g:plusone>
      </div>
    
      <div class="simple_likebuttons_twitter simple_likebuttons_twitter_s">
        <a href="https://twitter.com/share" class="twitter-share-button" data-count="none" data-url="http://www.punkt16.de/2009/09/zend-framework-eigene-router/" data-lang="de">Tweet</a>
      </div>
    
      <div class="simple_likebuttons_facebook">
        <div id="fb-root"></div>
        <script>(function(d, s, id) {
          var js, fjs = d.getElementsByTagName(s)[0];
          if (d.getElementById(id)) {return;}
          js = d.createElement(s); js.id = id;
          js.src = "//connect.facebook.net/de_DE/all.js#xfbml=1";
          fjs.parentNode.insertBefore(js, fjs);
        }(document, "script", "facebook-jssdk"));</script>
        <div class="fb-like" data-href="http://www.punkt16.de/2009/09/zend-framework-eigene-router/" data-send="false" data-layout="button_count" data-show-faces="false" data-width="90"></div>
      </div>
    </div>]]></content:encoded>
			<wfw:commentRss>http://www.punkt16.de/2009/09/zend-framework-eigene-router/feed/</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
	</channel>
</rss>

