<?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>iTeamWork &#187; Snippets</title>
	<atom:link href="http://iteamwork.de/category/prog/snippets/feed" rel="self" type="application/rss+xml" />
	<link>http://iteamwork.de</link>
	<description>Coding Tipps</description>
	<lastBuildDate>Thu, 06 Oct 2011 17:38:00 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.1.1</generator>
		<item>
		<title>[PHP] Javascript und CSS Dateien komprimieren</title>
		<link>http://iteamwork.de/javascript-und-css-dateien-komprimieren.html</link>
		<comments>http://iteamwork.de/javascript-und-css-dateien-komprimieren.html#comments</comments>
		<pubDate>Tue, 05 Aug 2008 10:44:39 +0000</pubDate>
		<dc:creator>H.Grafe</dc:creator>
				<category><![CDATA[Performance]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[PHP Snippets]]></category>
		<category><![CDATA[Snippets]]></category>
		<category><![CDATA[caching]]></category>
		<category><![CDATA[css]]></category>
		<category><![CDATA[gzip]]></category>
		<category><![CDATA[javascript]]></category>
		<category><![CDATA[komprimieren]]></category>
		<category><![CDATA[optimieren]]></category>
		<category><![CDATA[platz sparen]]></category>
		<category><![CDATA[stylesheets]]></category>
		<category><![CDATA[verkleinern]]></category>

		<guid isPermaLink="false">http://iteamwork.de/?p=20</guid>
		<description><![CDATA[Relativ viel Performance kostet es, mehrere Javascript und/oder Stylesheet Dateien einzubinden. Zwar geht die Abarbeitung relativ fix dank keep-alive aber dennoch kostet es Zeit. Bestimmte Javascript Bibiotheken bestehen ja schonmal locker aus 10 Dateien. Daher kann es sinnvoll sein, mehrere Dateien in einer Zusammenzufassen. Weiterhin ist so die Möglichkeit gegeben, evtl noch etwas nachzubearbeiten um [...]]]></description>
			<content:encoded><![CDATA[<div class="tweetmeme_button" style="float: right; margin-left: 10px;">
			<a href="http://api.tweetmeme.com/share?url=http%3A%2F%2Fiteamwork.de%2Fjavascript-und-css-dateien-komprimieren.html"><br />
				<img src="http://api.tweetmeme.com/imagebutton.gif?url=http%3A%2F%2Fiteamwork.de%2Fjavascript-und-css-dateien-komprimieren.html&amp;source=okriz&amp;style=normal&amp;service=bit.ly&amp;b=2" height="61" width="50" /><br />
			</a>
		</div>
<p>Relativ viel Performance kostet es, mehrere Javascript und/oder Stylesheet Dateien einzubinden. Zwar geht die Abarbeitung relativ fix dank keep-alive aber dennoch kostet es Zeit. Bestimmte Javascript Bibiotheken bestehen ja schonmal locker aus 10 Dateien.</p>
<p>Daher kann es sinnvoll sein, mehrere Dateien in einer Zusammenzufassen.</p>
<p>Weiterhin ist so die Möglichkeit gegeben, evtl noch etwas nachzubearbeiten um weitere Dateigröße einzusparen.</p>
<p>Besonders User mit langsammen Verbindungen würden dies dankbar annehmen.</p>
<p><span id="more-20"></span></p>
<p>Nehmen wir also an, wir nutzen folgende beiden Dateien:</p>
<blockquote><p>&lt;script src=&#8221;script/script1.js&#8221; type=&#8221;text/javascript&#8221;&gt;&lt;/script&gt;<br />
&lt;script src=&#8221;script/script2.js&#8221; type=&#8221;text/javascript&#8221;&gt;&lt;/script&gt;</p></blockquote>
<p>dann ersetzen wir das durch:</p>
<blockquote><p>&lt;script src=&#8221;javascript.php&#8221; type=&#8221;text/javascript&#8221;&gt;&lt;/script&gt;</p></blockquote>
<p>Dieses müssen wir dann nur noch wie folgt anlegen:</p>
<blockquote><p>&lt;?php<br />
header(‘Content-type: application/javascript’); //Typ setzen<br />
//Dateien ausgeben<br />
require_once(’script/script1.js’);<br />
require_once(’script/script2.js’);<br />
?&gt;</p></blockquote>
<p>Das wars auch schon. Nun werden beide Dateien in einer ausgegeben. Dabei muss lediglich drauf geachtet werden das alles mit einem Semikolon abgeschlossen wird (auch die letzte Zeile der einzelnen Dateien!)</p>
<p>Der obrige Code kann noch weiter optimiert werden. Zuerst einmal könnten wir dem Browser sagen, das er die Script Datei Cachen soll, so muss sie lediglich einmal übertragen werden:</p>
<blockquote><p>header (&#8220;cache-control: must-revalidate; max-age: 2592000&#8243;);<br />
header (&#8220;expires: &#8221; . gmdate (&#8220;D, d M Y H:i:s&#8221;, time() + 2592000) . &#8221; GMT&#8221;);</p></blockquote>
<p>zweitens:<br />
es könnten alle Zeilenumbrüche entfernt , kommentare gefiltert und doppelte Leerzeichen durch einzelne ersetzt werden. Bei Dateien mit mehreren (tausend) Zeilen lässt sich so nochmal (ordentlich) Platz gespart werden:</p>
<blockquote><p>function verkleiner($data) {<br />
// Kommentare entfernen<br />
$data = preg_replace(‘!/\*[^*]*\*+([^/][^*]*\*+)*/!’, ”, $data);<br />
// Zeilenumbruch und Tab entfernen<br />
$data = str_replace(array(&#8220;\r\n&#8221;, &#8220;\r&#8221;, &#8220;\n&#8221;, &#8220;\t&#8221;), ”, $data);<br />
//Doppelte Leerzeichen entfernen<br />
$data = preg_replace(‘/\s\s+/’, ‘ ‘, $data);<br />
return $data;<br />
}</p></blockquote>
<p>und drittens können wir zusätzlich noch evtl verfügbare Komprimierungstechniken benutzen:</p>
<blockquote><p>header(‘Content-Length: ‘ . strlen($data));<br />
if (stripos($_SERVER["HTTP_ACCEPT_ENCODING"],‘x-gzip’) !== false) {<br />
header(&#8220;Content-encoding:x-gzip&#8221;);<br />
$data = gzencode($data);<br />
}<br />
elseif (stripos($_SERVER["HTTP_ACCEPT_ENCODING"],‘gzip’) !== false) {<br />
header(&#8220;Content-encoding:gzip&#8221;);<br />
$data = gzencode($data);<br />
}<br />
elseif (stripos($_SERVER["HTTP_ACCEPT_ENCODING"],‘deflate’) !== false) {<br />
header(&#8220;Content-encoding:deflate&#8221;);<br />
$data = gzdeflate($data);<br />
}</p></blockquote>
<p>Somit sieht die verkleiner funktion insgesammt wie folgt aus:</p>
<blockquote><p>function verkleiner($data) {<br />
// Kommentare entfernen<br />
$data = preg_replace(‘!/\*[^*]*\*+([^/][^*]*\*+)*/!’, ”, $data);<br />
// Zeilenumbruch und Tab entfernen<br />
$data = str_replace(array(&#8220;\r\n&#8221;, &#8220;\r&#8221;, &#8220;\n&#8221;, &#8220;\t&#8221;), ”, $data);<br />
//Doppelte Leerzeichen entfernen<br />
$data = preg_replace(‘/\s\s+/’, ‘ ‘, $data);<br />
header(‘Content-Length: ‘ . strlen($data));<br />
if (stripos($_SERVER["HTTP_ACCEPT_ENCODING"],‘x-gzip’) !== false) {<br />
header(&#8220;Content-encoding:x-gzip&#8221;);<br />
$data = gzencode($data);<br />
}<br />
elseif (stripos($_SERVER["HTTP_ACCEPT_ENCODING"],‘gzip’) !== false) {<br />
header(&#8220;Content-encoding:gzip&#8221;);<br />
$data = gzencode($data);<br />
}<br />
elseif (stripos($_SERVER["HTTP_ACCEPT_ENCODING"],‘deflate’) !== false) {<br />
header(&#8220;Content-encoding:deflate&#8221;);<br />
$data = gzdeflate($data);<br />
}<br />
return $data;<br />
}</p></blockquote>
<p>Jetzt müssen wir nur noch die Javascript Dateien anders einlesen so das wir sie bearbeiten können und das ganze sieht wie folgt aus:</p>
<blockquote><p>&lt;?php<br />
function verkleiner($data) {<br />
// Kommentare entfernen<br />
$data = preg_replace(‘!/\*[^*]*\*+([^/][^*]*\*+)*/!’, ”, $data);<br />
// Zeilenumbruch und Tab entfernen<br />
$data = str_replace(array(&#8220;\r\n&#8221;, &#8220;\r&#8221;, &#8220;\n&#8221;, &#8220;\t&#8221;), ”, $data);<br />
//Doppelte Leerzeichen entfernen<br />
$data = preg_replace(‘/\s\s+/’, ‘ ‘, $data);<br />
header(‘Content-Length: ‘ . strlen($data));<br />
if (stripos($_SERVER["HTTP_ACCEPT_ENCODING"],‘x-gzip’) !== false) {<br />
header(&#8220;Content-encoding:x-gzip&#8221;);<br />
$data = gzencode($data);<br />
}<br />
elseif (stripos($_SERVER["HTTP_ACCEPT_ENCODING"],‘gzip’) !== false) {<br />
header(&#8220;Content-encoding:gzip&#8221;);<br />
$data = gzencode($data);<br />
}<br />
elseif (stripos($_SERVER["HTTP_ACCEPT_ENCODING"],‘deflate’) !== false) {<br />
header(&#8220;Content-encoding:deflate&#8221;);<br />
$data = gzdeflate($data);<br />
}<br />
return $data;<br />
}<br />
header(‘Content-type: application/javascript’); //Typ setzen<br />
header (&#8220;cache-control: must-revalidate; max-age: 2592000&#8243;); //Caching<br />
header (&#8220;expires: &#8221; . gmdate (&#8220;D, d M Y H:i:s&#8221;, time() + 2592000) . &#8221; GMT&#8221;);<br />
$text=file_get_contents(’script/script1.js’);<br />
$text.=file_get_contents(’script/script2.js’);<br />
echo verkleiner($text);<br />
?&gt;</p></blockquote>
<p>Dies funktioniert natürlich auch mit CSS Dateien. HTML Seiten sollte man so nicht ausliefern da die Formatierung für bestimmte Elemente (z.B. pre) zerstört werden würde.<br />
Ich weise allerdings nochmal darauf hin, das die Javascript Dateien sauber geschrieben sein müssen und  auch die letzte Klasse in einer Datei mit einem Semikolon beendet werden muss!</p>
]]></content:encoded>
			<wfw:commentRss>http://iteamwork.de/javascript-und-css-dateien-komprimieren.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>[PHP] Generator Funktion</title>
		<link>http://iteamwork.de/php-generator-funktion.html</link>
		<comments>http://iteamwork.de/php-generator-funktion.html#comments</comments>
		<pubDate>Tue, 29 Jul 2008 18:05:53 +0000</pubDate>
		<dc:creator>O.Kriz</dc:creator>
				<category><![CDATA[PHP]]></category>
		<category><![CDATA[PHP Snippets]]></category>
		<category><![CDATA[Snippets]]></category>
		<category><![CDATA[generator]]></category>
		<category><![CDATA[gutschein]]></category>
		<category><![CDATA[passwort]]></category>
		<category><![CDATA[rand()]]></category>
		<category><![CDATA[random]]></category>
		<category><![CDATA[srand()]]></category>
		<category><![CDATA[zufall]]></category>

		<guid isPermaLink="false">http://iteamwork.de/?p=19</guid>
		<description><![CDATA[Hier eine praktische Generatorfunktion für Gutscheincodes, Passwörter etc. function generator($laenge) { //Generator für Passwörter Gutscheine etc! $wert=&#8221;"; $generator_zeichen=&#8217;abcdefghijklmnopqrstuvwxyz&#8217;; $generator_zeichen.=&#8217;ABCDEFGHIJKLMNOPQRSTUVWXYZ&#8217;; $generator_zeichen.=&#8217;0123456789&#8242;; for($a=0; $a&#60;=$laenge-1; $a++) { srand((double)microtime()*1000000); $id = rand (0,sizeof($generator_zeichen)-1); $wert=$wert.$generator_zeichen[$id]; } return $wert; }]]></description>
			<content:encoded><![CDATA[<div class="tweetmeme_button" style="float: right; margin-left: 10px;">
			<a href="http://api.tweetmeme.com/share?url=http%3A%2F%2Fiteamwork.de%2Fphp-generator-funktion.html"><br />
				<img src="http://api.tweetmeme.com/imagebutton.gif?url=http%3A%2F%2Fiteamwork.de%2Fphp-generator-funktion.html&amp;source=okriz&amp;style=normal&amp;service=bit.ly&amp;b=2" height="61" width="50" /><br />
			</a>
		</div>
<p>Hier eine praktische Generatorfunktion für Gutscheincodes, Passwörter etc.</p>
<p><span id="more-19"></span></p>
<blockquote><p>function generator($laenge)<br />
{<br />
//Generator für Passwörter Gutscheine etc!<br />
$wert=&#8221;";<br />
$generator_zeichen=&#8217;abcdefghijklmnopqrstuvwxyz&#8217;;<br />
$generator_zeichen.=&#8217;ABCDEFGHIJKLMNOPQRSTUVWXYZ&#8217;;<br />
$generator_zeichen.=&#8217;0123456789&#8242;;</p>
<p>for($a=0; $a&lt;=$laenge-1; $a++)<br />
{<br />
srand((double)microtime()*1000000);<br />
$id = rand (0,sizeof($generator_zeichen)-1);<br />
$wert=$wert.$generator_zeichen[$id];<br />
}<br />
return $wert;<br />
}</p></blockquote>
]]></content:encoded>
			<wfw:commentRss>http://iteamwork.de/php-generator-funktion.html/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>[Tricks] Regexp: Telefonnummern</title>
		<link>http://iteamwork.de/regexp-telefonnummern.html</link>
		<comments>http://iteamwork.de/regexp-telefonnummern.html#comments</comments>
		<pubDate>Mon, 21 Jul 2008 03:12:04 +0000</pubDate>
		<dc:creator>O.Kriz</dc:creator>
				<category><![CDATA[PHP Snippets]]></category>
		<category><![CDATA[Snippets]]></category>
		<category><![CDATA[Tricks]]></category>
		<category><![CDATA[ausland]]></category>
		<category><![CDATA[innland]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[preg_replace]]></category>
		<category><![CDATA[regexp]]></category>
		<category><![CDATA[regular expressions]]></category>
		<category><![CDATA[reguläre ausdrücke]]></category>
		<category><![CDATA[telefonnummer]]></category>

		<guid isPermaLink="false">http://iteamwork.de/?p=17</guid>
		<description><![CDATA[Hier mal ein kleines Beispiel für Reguläre Ausdrücke, da viele Programmierer ja hiermit Probleme haben. Bei diesem Beispiel wird eine Telefonnummer im typischen Format umformatiert, für Innland und Ausland User, die die Nummer angezeigt bekommen sollen. $nummer = &#34;+49 (0)123 45678900123&#34;; &#160; $innland = preg_replace&#40;&#8216;/^\+[0-9]{2}\s\(([0-9])\)/&#8217;, &#8216;$1&#8242;, $nummer&#41;; $ausland = preg_replace&#40;&#8216;/^(\+[0-9]{2}\s)\([0-9]\)/&#8217;, &#8216;$1&#8242;, $nummer&#41;; Ausgabe Innland: 0123 [...]]]></description>
			<content:encoded><![CDATA[<div class="tweetmeme_button" style="float: right; margin-left: 10px;">
			<a href="http://api.tweetmeme.com/share?url=http%3A%2F%2Fiteamwork.de%2Fregexp-telefonnummern.html"><br />
				<img src="http://api.tweetmeme.com/imagebutton.gif?url=http%3A%2F%2Fiteamwork.de%2Fregexp-telefonnummern.html&amp;source=okriz&amp;style=normal&amp;service=bit.ly&amp;b=2" height="61" width="50" /><br />
			</a>
		</div>
<p>Hier mal ein kleines Beispiel für Reguläre Ausdrücke, da viele Programmierer ja hiermit Probleme haben.<br />
Bei diesem Beispiel wird eine Telefonnummer im typischen Format umformatiert, für Innland und Ausland User, die die Nummer angezeigt bekommen sollen.</p>
<p><span id="more-17"></span></p>
<div class="codesnip-container" >
<div class="php codesnip" style="font-family:monospace;">
<ol>
<li class="li1">
<div class="de1"><span class="re0">$nummer</span> <span class="sy0">=</span> <span class="st0">&quot;+49 (0)123 45678900123&quot;</span><span class="sy0">;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1"><span class="re0">$innland</span> <span class="sy0">=</span> <a href="http://www.php.net/preg_replace"><span class="kw3">preg_replace</span></a><span class="br0">&#40;</span><span class="st_h">&#8216;/^\+[0-9]{2}\s\(([0-9])\)/&#8217;</span><span class="sy0">,</span> <span class="st_h">&#8216;$1&#8242;</span><span class="sy0">,</span> <span class="re0">$nummer</span><span class="br0">&#41;</span><span class="sy0">;</span></div>
</li>
<li class="li1">
<div class="de1"><span class="re0">$ausland</span> <span class="sy0">=</span> <a href="http://www.php.net/preg_replace"><span class="kw3">preg_replace</span></a><span class="br0">&#40;</span><span class="st_h">&#8216;/^(\+[0-9]{2}\s)\([0-9]\)/&#8217;</span><span class="sy0">,</span> <span class="st_h">&#8216;$1&#8242;</span><span class="sy0">,</span> <span class="re0">$nummer</span><span class="br0">&#41;</span><span class="sy0">;</span></div>
</li>
</ol>
</div>
</div>
<p>Ausgabe Innland: 0123 45678900123<br />
Ausgabe Auslang: +49 123 45678900123</p>
<p>Erkärung des Beispiels:</p>
<ul>
<li>zwischen den <strong>Slashes </strong>steht der Suchausdruck, sprich /AUSDRUCK/</li>
</ul>
<ul>
<li>das <strong>^ Zeichen</strong> symbolisiert dem Interpreter, dass hier der Stringanfang ist</li>
</ul>
<ul>
<li><strong>Sonderzeichen </strong>wie Klammern + * etc die gesucht werden müssen mit Backslahen maskiert werden, sprich (a) -&gt; \(\)</li>
</ul>
<ul>
<li><strong>eckige Klammern</strong> geben Wertebereiche an. In unserem Beispiel [0-9] wird also eine Ziffer gesucht</li>
</ul>
<ul>
<li><strong>geschweifte Klammern</strong> geben die Anzahl der Wiederholungen an [0-9]{2} bedeutet 2 Ziffern, [0-9]{2,5} hingegen bedeutet 2-5 Ziffern</li>
</ul>
<ul>
<li><strong>runde Klammern</strong> markieren einen Suchausdruck, der gemerkt werden soll, auf diesen kann man dann der Reihe nach über $1 &#8211; $n bei N Klammerungen zugreifen. Diese Klammern werden nicht maskiert <img src='http://iteamwork.de/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </li>
</ul>
<ul>
<li>\s steht für ein Whitespace</li>
</ul>
<p>Ich hoffe, ich habe euer Interesse an Regulären Ausdrücken geweckt. Richtig beherscht sind diese sehr sehr mächtig.</p>
<p>So long o.Kriz</p>
]]></content:encoded>
			<wfw:commentRss>http://iteamwork.de/regexp-telefonnummern.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>[PHP] E-Mail Adresse verifizieren</title>
		<link>http://iteamwork.de/e-mail-adresse-verifizieren.html</link>
		<comments>http://iteamwork.de/e-mail-adresse-verifizieren.html#comments</comments>
		<pubDate>Sun, 08 Jun 2008 12:25:00 +0000</pubDate>
		<dc:creator>H.Grafe</dc:creator>
				<category><![CDATA[PHP]]></category>
		<category><![CDATA[PHP Snippets]]></category>
		<category><![CDATA[adresse]]></category>
		<category><![CDATA[email]]></category>
		<category><![CDATA[regexp]]></category>
		<category><![CDATA[regular expressions]]></category>
		<category><![CDATA[reguläre ausdrücke]]></category>
		<category><![CDATA[snippet]]></category>
		<category><![CDATA[verifizieren]]></category>

		<guid isPermaLink="false">http://iteamwork.de/e-mail-adresse-verifizieren.html</guid>
		<description><![CDATA[Oft steht man vor dem Problem, E-Mail Adressen zu verifizieren. Dazu kann man gut folgenden Code benutzen: $testmail=split&#40;&#34;@&#34;, $email&#41;; if &#40;!eregi&#40;&#34;^[a-z0-9]+([-_\.]?[a-z0-9])+@[a-z0-9]+([-_\.]?[a-z0-9])+\.[a-z]{2,4}$&#34;, $email&#41; &#124;&#124; !getmxrr&#40;$testmail&#91;1&#93;, $mxhosts&#41;&#41; &#123; //Fehler &#125;]]></description>
			<content:encoded><![CDATA[<div class="tweetmeme_button" style="float: right; margin-left: 10px;">
			<a href="http://api.tweetmeme.com/share?url=http%3A%2F%2Fiteamwork.de%2Fe-mail-adresse-verifizieren.html"><br />
				<img src="http://api.tweetmeme.com/imagebutton.gif?url=http%3A%2F%2Fiteamwork.de%2Fe-mail-adresse-verifizieren.html&amp;source=okriz&amp;style=normal&amp;service=bit.ly&amp;b=2" height="61" width="50" /><br />
			</a>
		</div>
<p>Oft steht man vor dem Problem, E-Mail Adressen zu verifizieren.</p>
<p>Dazu kann man gut folgenden Code benutzen:</p>
<div class="codesnip-container" >
<div class="php codesnip" style="font-family:monospace;">
<ol>
<li class="li1">
<div class="de1"><span class="re0">$testmail</span><span class="sy0">=</span><a href="http://www.php.net/split"><span class="kw3">split</span></a><span class="br0">&#40;</span><span class="st0">&quot;@&quot;</span><span class="sy0">,</span> <span class="re0">$email</span><span class="br0">&#41;</span><span class="sy0">;</span></div>
</li>
<li class="li1">
<div class="de1"><span class="kw1">if</span> <span class="br0">&#40;</span><span class="sy0">!</span><a href="http://www.php.net/eregi"><span class="kw3">eregi</span></a><span class="br0">&#40;</span><span class="st0">&quot;^[a-z0-9]+([-_\.]?[a-z0-9])+@[a-z0-9]+([-_\.]?[a-z0-9])+\.[a-z]{2,4}$&quot;</span><span class="sy0">,</span> <span class="re0">$email</span><span class="br0">&#41;</span> <span class="sy0">||</span> <span class="sy0">!</span><a href="http://www.php.net/getmxrr"><span class="kw3">getmxrr</span></a><span class="br0">&#40;</span><span class="re0">$testmail</span><span class="br0">&#91;</span>1<span class="br0">&#93;</span><span class="sy0">,</span> <span class="re0">$mxhosts</span><span class="br0">&#41;</span><span class="br0">&#41;</span></div>
</li>
<li class="li1">
<div class="de1"><span class="br0">&#123;</span></div>
</li>
<li class="li1">
<div class="de1"><span class="co1">//Fehler</span></div>
</li>
<li class="li1">
<div class="de1"><span class="br0">&#125;</span></div>
</li>
</ol>
</div>
</div>
]]></content:encoded>
			<wfw:commentRss>http://iteamwork.de/e-mail-adresse-verifizieren.html/feed</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
		<item>
		<title>[PHP] Alternative zu die(mysql_error());</title>
		<link>http://iteamwork.de/alternative-zu-mysql_querysql-or-diemysql_error.html</link>
		<comments>http://iteamwork.de/alternative-zu-mysql_querysql-or-diemysql_error.html#comments</comments>
		<pubDate>Wed, 28 May 2008 00:33:42 +0000</pubDate>
		<dc:creator>O.Kriz</dc:creator>
				<category><![CDATA[PHP]]></category>
		<category><![CDATA[PHP Snippets]]></category>
		<category><![CDATA[SQL]]></category>
		<category><![CDATA[debug]]></category>
		<category><![CDATA[debug_backtrace()]]></category>
		<category><![CDATA[mysql_error()]]></category>
		<category><![CDATA[mysql_query()]]></category>
		<category><![CDATA[querysql()]]></category>
		<category><![CDATA[querysqlsimple()]]></category>

		<guid isPermaLink="false">http://iteamwork.de/?p=10</guid>
		<description><![CDATA[Wer kennt das nicht: Ein großes Projekt überall mit SQL-Anfragen gespickt. Um Fehler abzufangen gehen viele so vor: $sql = &#91;SQL-STATEMENT&#93;; &#160; mysql_query&#40;$sql&#41; or die&#40;mysql_error&#40;&#41;&#41;; Nun bekommt man jedoch nur den SQL Error ausgegeben, und kann sich auf eine lange Suche einstellen. Nicht so bei verwenden der debug_backtrace() Funktion. Hier ein praktisches Snippet, teils von [...]]]></description>
			<content:encoded><![CDATA[<div class="tweetmeme_button" style="float: right; margin-left: 10px;">
			<a href="http://api.tweetmeme.com/share?url=http%3A%2F%2Fiteamwork.de%2Falternative-zu-mysql_querysql-or-diemysql_error.html"><br />
				<img src="http://api.tweetmeme.com/imagebutton.gif?url=http%3A%2F%2Fiteamwork.de%2Falternative-zu-mysql_querysql-or-diemysql_error.html&amp;source=okriz&amp;style=normal&amp;service=bit.ly&amp;b=2" height="61" width="50" /><br />
			</a>
		</div>
<p>Wer kennt das nicht: Ein großes Projekt überall mit SQL-Anfragen gespickt.<br />
Um Fehler abzufangen gehen viele so vor:</p>
<div class="codesnip-container" >
<div class="php codesnip" style="font-family:monospace;">
<ol>
<li class="li1">
<div class="de1"><span class="re0">$sql</span> <span class="sy0">=</span> <span class="br0">&#91;</span>SQL<span class="sy0">-</span>STATEMENT<span class="br0">&#93;</span><span class="sy0">;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1"><a href="http://www.php.net/mysql_query"><span class="kw3">mysql_query</span></a><span class="br0">&#40;</span><span class="re0">$sql</span><span class="br0">&#41;</span> or <a href="http://www.php.net/die"><span class="kw3">die</span></a><span class="br0">&#40;</span><a href="http://www.php.net/mysql_error"><span class="kw3">mysql_error</span></a><span class="br0">&#40;</span><span class="br0">&#41;</span><span class="br0">&#41;</span><span class="sy0">;</span></div>
</li>
</ol>
</div>
</div>
<p>Nun bekommt man jedoch nur den SQL Error ausgegeben,<br />
und kann sich auf eine lange Suche einstellen.<span id="more-10"></span></p>
<p>Nicht so bei verwenden der debug_backtrace() Funktion.</p>
<p>Hier ein praktisches Snippet, teils von php.net, teils von mir <img src='http://iteamwork.de/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /><br />
So wird im Fehlerfall nicht nur der SQL-Error ausgegeben, sondern<br />
auch jede Stelle, an der er in den Skripten auftritt.</p>
<div class="codesnip-container" >
<div class="php codesnip" style="font-family:monospace;">
<ol>
<li class="li1">
<div class="de1"><span class="kw2">function</span> querysqlsimple<span class="br0">&#40;</span><span class="re0">$sql</span><span class="br0">&#41;</span> <span class="co1">// für simple kommandos wie update, insert…</span></div>
</li>
<li class="li1">
<div class="de1"><span class="br0">&#123;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; <span class="re0">$result</span> <span class="sy0">=</span> <a href="http://www.php.net/mysql_query"><span class="kw3">mysql_query</span></a><span class="br0">&#40;</span><span class="re0">$sql</span><span class="br0">&#41;</span> OR dieDebug<span class="br0">&#40;</span><a href="http://www.php.net/mysql_error"><span class="kw3">mysql_error</span></a><span class="br0">&#40;</span><span class="br0">&#41;</span><span class="br0">&#41;</span><span class="sy0">;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; <span class="kw1">return</span> <a href="http://www.php.net/mysql_affected_rows"><span class="kw3">mysql_affected_rows</span></a><span class="br0">&#40;</span><span class="br0">&#41;</span><span class="sy0">;</span></div>
</li>
<li class="li1">
<div class="de1"><span class="br0">&#125;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1"><span class="kw2">function</span> querysql<span class="br0">&#40;</span><span class="re0">$sql</span><span class="br0">&#41;</span> <span class="co1">//für select anweisungen</span></div>
</li>
<li class="li1">
<div class="de1"><span class="br0">&#123;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; <span class="re0">$result</span> <span class="sy0">=</span> <a href="http://www.php.net/mysql_query"><span class="kw3">mysql_query</span></a><span class="br0">&#40;</span><span class="re0">$sql</span><span class="br0">&#41;</span> OR dieDebug<span class="br0">&#40;</span><a href="http://www.php.net/mysql_error"><span class="kw3">mysql_error</span></a><span class="br0">&#40;</span><span class="br0">&#41;</span><span class="br0">&#41;</span><span class="sy0">;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; <span class="kw1">return</span> <span class="re0">$result</span><span class="sy0">;</span></div>
</li>
<li class="li1">
<div class="de1"><span class="br0">&#125;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1"><span class="kw2">function</span> dieDebug<span class="br0">&#40;</span><span class="re0">$sError</span><span class="br0">&#41;</span></div>
</li>
<li class="li1">
<div class="de1"><span class="br0">&#123;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; <span class="kw1">echo</span> <span class="st0">&quot;&lt;hr /&gt;&lt;div&gt;&lt;b&gt;&quot;</span><span class="sy0">.</span><span class="re0">$sError</span><span class="sy0">.</span><span class="st0">&quot;&lt;/b&gt;&lt;hr /&gt;&lt;br /&gt;&lt;table border=&#8217;1&#8242;&gt;&quot;</span><span class="sy0">;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; <span class="re0">$sOut</span><span class="sy0">=</span><span class="st0">&quot;&quot;</span><span class="sy0">;</span> <span class="re0">$aCallstack</span><span class="sy0">=</span><a href="http://www.php.net/debug_backtrace"><span class="kw3">debug_backtrace</span></a><span class="br0">&#40;</span><span class="br0">&#41;</span><span class="sy0">;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; <span class="kw1">echo</span> <span class="st0">&quot;&lt;thead&gt;&lt;tr&gt;&lt;th&gt;file&lt;/th&gt;&lt;th&gt;line&lt;/th&gt;&lt;th&gt;function&lt;/th&gt;&quot;</span><span class="sy0">.</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; <span class="st0">&quot;&lt;/tr&gt;&lt;/thead&gt;&quot;</span><span class="sy0">;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; <span class="kw1">foreach</span><span class="br0">&#40;</span><span class="re0">$aCallstack</span> <span class="kw1">as</span> <span class="re0">$aCall</span><span class="br0">&#41;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; <span class="br0">&#123;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; <span class="kw1">if</span> <span class="br0">&#40;</span><span class="sy0">!</span><a href="http://www.php.net/isset"><span class="kw3">isset</span></a><span class="br0">&#40;</span><span class="re0">$aCall</span><span class="br0">&#91;</span><span class="st_h">&#8216;file&#8217;</span><span class="br0">&#93;</span><span class="br0">&#41;</span><span class="br0">&#41;</span> <span class="re0">$aCall</span><span class="br0">&#91;</span><span class="st_h">&#8216;file&#8217;</span><span class="br0">&#93;</span> <span class="sy0">=</span> <span class="st_h">&#8216;[PHP Kernel]&#8216;</span><span class="sy0">;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; <span class="kw1">if</span> <span class="br0">&#40;</span><span class="sy0">!</span><a href="http://www.php.net/isset"><span class="kw3">isset</span></a><span class="br0">&#40;</span><span class="re0">$aCall</span><span class="br0">&#91;</span><span class="st_h">&#8216;line&#8217;</span><span class="br0">&#93;</span><span class="br0">&#41;</span><span class="br0">&#41;</span> <span class="re0">$aCall</span><span class="br0">&#91;</span><span class="st_h">&#8216;line&#8217;</span><span class="br0">&#93;</span> <span class="sy0">=</span> <span class="st0">&quot;&quot;</span><span class="sy0">;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; <span class="kw1">echo</span> <span class="st0">&quot;&lt;tr&gt;&lt;td&gt;{<span class="es4">$aCall</span>[&quot;</span><a href="http://www.php.net/file"><span class="kw3">file</span></a><span class="st0">&quot;]}&lt;/td&gt;&lt;td&gt;{<span class="es4">$aCall</span>[&quot;</span>line<span class="st0">&quot;]}&lt;/td&gt;&quot;</span><span class="sy0">.</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; <span class="st0">&quot;&lt;td&gt;{<span class="es4">$aCall</span>[&quot;</span><span class="kw2">function</span><span class="st0">&quot;]}&lt;/td&gt;&lt;/tr&gt;&quot;</span><span class="sy0">;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; <span class="br0">&#125;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; <span class="kw1">echo</span> <span class="st0">&quot;&lt;/table&gt;&lt;/div&gt;&lt;hr /&gt;&lt;/p&gt;&quot;</span><span class="sy0">;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; <a href="http://www.php.net/die"><span class="kw3">die</span></a><span class="br0">&#40;</span><span class="br0">&#41;</span><span class="sy0">;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1"><span class="br0">&#125;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1">querysqlsimple<span class="br0">&#40;</span><span class="st0">&quot;UPDATE table SET value=…&quot;</span><span class="br0">&#41;</span><span class="sy0">;</span> <span class="co1">//beispiel für update</span></div>
</li>
<li class="li1">
<div class="de1"><span class="re0">$result</span> <span class="sy0">=</span> querysql<span class="br0">&#40;</span><span class="st0">&quot;SELECT * FROM table …&quot;</span><span class="br0">&#41;</span><span class="sy0">;</span> <span class="co1">//beispiel für select</span></div>
</li>
<li class="li1">
<div class="de1"><span class="re0">$db</span> <span class="sy0">=</span> <a href="http://www.php.net/mysql_fetch_object"><span class="kw3">mysql_fetch_object</span></a><span class="br0">&#40;</span><span class="re0">$result</span><span class="br0">&#41;</span><span class="sy0">;</span></div>
</li>
<li class="li1">
<div class="de1"><span class="sy0">&#8230;</span></div>
</li>
</ol>
</div>
</div>
<p>Links:<br />
<a href="http://de2.php.net/debug_backtrace" target="_blank">debug_backtrace() Funktion Erklärung (php.net)<br />
</a><a href="http://de2.php.net/manual/de/function.debug-backtrace.php#65433" target="_blank">dieDebug() Snippet (php.net)</a></p>
<p>Hoffe es hilft euch <img src='http://iteamwork.de/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> </p>
]]></content:encoded>
			<wfw:commentRss>http://iteamwork.de/alternative-zu-mysql_querysql-or-diemysql_error.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

