<?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>RE-Design - Enrico Reinsdorf &#187; adressbuch</title>
	<atom:link href="http://www.re-design.de/tag/adressbuch/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.re-design.de</link>
	<description>Trainer für Konzeption und Umsetzung von medialen Internet-Projekten</description>
	<lastBuildDate>Fri, 28 Oct 2011 19:26: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>AJAX Adressbuch</title>
		<link>http://www.re-design.de/2008/01/29/ajax-adressbuch/</link>
		<comments>http://www.re-design.de/2008/01/29/ajax-adressbuch/#comments</comments>
		<pubDate>Tue, 29 Jan 2008 12:37:43 +0000</pubDate>
		<dc:creator>Enrico Reinsdorf</dc:creator>
				<category><![CDATA[Adventskalender 2007]]></category>
		<category><![CDATA[Programmierung]]></category>
		<category><![CDATA[adressbuch]]></category>
		<category><![CDATA[adventskalender]]></category>
		<category><![CDATA[ajax]]></category>
		<category><![CDATA[design]]></category>

		<guid isPermaLink="false">http://www.re-design.de/workbook/?p=107</guid>
		<description><![CDATA[In meinem Adventskalender habe ich ein kleines Tutorial über die Erstellung eines Adressbuch per AJAX geschrieben. Leider waren aber die Demodateien nicht direkt benutzbar. Ich habe sie nun korrigiert und stelle sie euch hiermit zur Verfügung. AJAX Adressbuch 1.1 Bugfix: Ich habe eine SQL-Datei hinzugefügt, um die Datenbank schneller zu installieren. Jetzt muss nur noch [...]]]></description>
			<content:encoded><![CDATA[<p>In meinem <a href="http://www.re-design.de/workbook/?p=103" title="Alle Türchen sind offen">Adventskalender</a> habe ich ein kleines Tutorial über die Erstellung eines <a href="http://www.re-design.de/workbook/?p=89" title="AJAX Adressbuh Tutorial Teil 1">Adressbuch per AJAX</a> geschrieben. Leider waren aber die Demodateien nicht direkt benutzbar. Ich habe sie nun korrigiert und stelle sie euch hiermit zur Verfügung.</p>
<ul>
<li> <a href="http://www.re-design.de/workbook/wp-content/uploads/2008/01/ajax-adressbuch-11.zip" title="AJAX Adressbuch 1.1">AJAX Adressbuch 1.1</a></li>
</ul>
<p>Bugfix:</p>
<ol>
<li>Ich habe eine SQL-Datei hinzugefügt, um  die Datenbank schneller zu installieren. Jetzt muss nur noch in der include-Datei der Zugriff auf die Datenbank geregelt werden.</li>
<li>Der init()-Methode des Adressbuches wird jetzt der Form-Container übergeben, so dass das Adressbuch flexibler auf das DOM reagieren kann.</li>
<li>Die Literal-Namen wurden in eine einheitliche Schreibweise (RED_AdrBook, RED_AJAX) umbenannt.</li>
<li>Eine update-Funktion für bestehende Datensätze wurde hinzugefügt.</li>
<li>Eine Lösch-Funktion wurde hinzugefügt. Deswegen wurde ein delete.php-Script, welches einen Datensatz löscht, angelget.</li>
<li>Die Anzahl der Datensätze und der aktuelle Datensatz wird nun im Interface angezeigt.</li>
</ol>
<h3  class="related_post_title">Ähnliche Beiträge</h3><ul class="related_post"><li><a href="http://www.re-design.de/2007/12/24/ajax-adressbuch-tutorial-teil-4/" title="AJAX Adressbuch &#8211; Tutorial Teil 4">AJAX Adressbuch &#8211; Tutorial Teil 4</a></li><li><a href="http://www.re-design.de/2008/12/21/tag-21-erweiterung-durch-ajax/" title="Tag 21 – Erweiterung durch AJAX">Tag 21 – Erweiterung durch AJAX</a></li><li><a href="http://www.re-design.de/2007/12/24/alle-tuerchen-von-2007-sind-offen/" title="Alle T&#252;rchen von 2007 sind offen">Alle T&#252;rchen von 2007 sind offen</a></li><li><a href="http://www.re-design.de/2007/12/23/ajax-abressbuch-tutorial-teil-3/" title="AJAX Abressbuch &#8211; Tutorial Teil 3">AJAX Abressbuch &#8211; Tutorial Teil 3</a></li><li><a href="http://www.re-design.de/2007/12/22/ajax-adressbuch-tutorial-teil-2/" title="AJAX Adressbuch &#8211; Tutorial Teil 2">AJAX Adressbuch &#8211; Tutorial Teil 2</a></li></ul>]]></content:encoded>
			<wfw:commentRss>http://www.re-design.de/2008/01/29/ajax-adressbuch/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>AJAX Adressbuch &#8211; Tutorial Teil 4</title>
		<link>http://www.re-design.de/2007/12/24/ajax-adressbuch-tutorial-teil-4/</link>
		<comments>http://www.re-design.de/2007/12/24/ajax-adressbuch-tutorial-teil-4/#comments</comments>
		<pubDate>Mon, 24 Dec 2007 00:00:28 +0000</pubDate>
		<dc:creator>Enrico Reinsdorf</dc:creator>
				<category><![CDATA[Adventskalender 2007]]></category>
		<category><![CDATA[Programmierung]]></category>
		<category><![CDATA[adressbuch]]></category>
		<category><![CDATA[ajax]]></category>
		<category><![CDATA[design]]></category>
		<category><![CDATA[mysql]]></category>
		<category><![CDATA[php]]></category>
		<category><![CDATA[tutorial]]></category>

		<guid isPermaLink="false">http://www.re-design.de/workbook/?p=101</guid>
		<description><![CDATA[Nun ist es soweit, heute ist Weihnachten und das letzte Türchen hat sich geöffnet. Der letzte Teil meine Adressbuches steht noch aus und das möchte ich euch jetzt geben. Es ist der serverseitige Teil meine kleinen Weanwendung. Ich habe dazu eine mySQL-Datenbank angelegt und greife mit PHP auf den Datenbestand zu. Ähnlich wie in Teil [...]]]></description>
			<content:encoded><![CDATA[<p>Nun ist es soweit, heute ist Weihnachten und das letzte Türchen hat sich geöffnet. Der letzte Teil meine Adressbuches steht noch aus und das möchte ich euch jetzt geben. Es ist der serverseitige Teil meine kleinen Weanwendung. Ich habe dazu eine <a href="http://www.mysql.com">mySQL-Datenbank</a> angelegt und greife mit PHP auf den Datenbestand zu.</p>
<p><span id="more-101"></span></p>
<p>Ähnlich wie in <a title="AJAX Adressbuch Teil 2" href="http://www.re-design.de/workbook/?p=91">Teil 2</a> und <a title="AJAX Adressbuch Teil 3" href="http://www.re-design.de/workbook/?p=96">Teil 3</a> werde ich mehrere Datei benutzen um alles geordnet zu haben. Aber als erstes die Scripte zum Erzeugen der Datenbank und des Datenbestandes.</p>
<ol class="Sourcecode">
<li><code>CREATE DATABASE `demodb` DEFAULT CHARACTER SET latin1 COLLATE latin1_general_ci; USE `demodb`;</code></li>
</ol>
<ol class="Sourcecode">
<li><code>CREATE TABLE `mitarbeiter` (</code></li>
<li><code> `id` int(11) NOT NULL auto_increment,</code></li>
<li><code> `nachname` varchar(255) NOT NULL,</code></li>
<li><code> `vorname` varchar(255) NOT NULL,</code></li>
<li><code> `email` varchar(255) NOT NULL,</code></li>
<li><code> `telefon` varchar(255) NOT NULL,</code></li>
<li><code>PRIMARY KEY (`id`)</code></li>
<li><code>); </code></li>
</ol>
<p>Also <a title="phpMyAdmin | MySQL Database Administration Tool" href="http://www.phpmyadmin.net">phpMyAdmin</a>, das ultimative Datenbank-Tool, öffnen und die Codes einfügen. Dazu noch einen Datenbank-Benutzer und ein dazugehöriges Passwort anlegen. In meinem Fall heißt der Benutzer &#8220;<code>demouser</code>&#8221; und sein Passwort ist &#8220;<code>password</code>&#8220;.</p>
<p>Als nächstes lege ich mir immer eine PHP-Datei an, die die Verbindung zur Datenbank regelt. Somit muss ich die Daten nicht in jedes Script hineinschreiben.</p>
<ol class="Sourcecode">
<li><code>&lt;?php</code></li>
<li><code>$connect = mysql_connect('localhost', 'demouser', 'password');</code></li>
<li><code>mysql_select_db('mitarbeiter', $connect);</code></li>
<li><code>?&gt;</code></li>
</ol>
<p>In der Variable <code>$connect</code> wird dann die Verbindung zum Datenbank-Server gespeichert und kann von nun an genutzt werden. Ich habe hier der Einfachheit halber auf Fehlermeldungen verzichtet.</p>
<ol class="Sourcecode">
<li><code>header('Content-Type: text/xml');</code></li>
<li><code>$xml = new DOMDocument('1.0', 'utf-8');</code></li>
<li><code>$root = $xml-&gt;createElement('mitarbeiter');</code></li>
<li><code>$xml-&gt;appendChild($root);</code></li>
<li></li>
<li></li>
<li><code>echo $xml-&gt;saveXML();</code></li>
</ol>
<p>Um mit PHP eine <abbr title="Extensable Markup Language">XML</abbr>-Ausgabe zu erzeugen, reicht der obige Quellcode. Wichtig dabei ist das der richtige Header an den Browser geschickt wird.</p>
<p>Danach wird ein XML-Objekt mit dem Zeichensatz &#8220;utf-8&#8243; generiert. Weiterhin wird ein Hauptknoten erzeugt und an das XML-Dokument dran gehangen. Zum Schluss alles an den Browser geschickt.</p>
<p>Soweit die Grundstruktur der XML-Ausgabe. Aber es fehlen ja noch die eigentlichen Inhalte aus der Datenbank.</p>
<ol class="Sourcecode">
<li><code>&lt;?php</code></li>
<li><code>include_once('include.php');</code></li>
<li></li>
<li><code>$sql = 'SELECT * FROM personen ORDER BY nachname';</code></li>
<li><code>$result = mysql_query($sql, $connect);</code></li>
<li><code>while($rs = mysql_fetch_assoc($result))</code></li>
<li><code>{</code></li>
<li><code> $nachname = $xml-&gt;createElement('nachname');</code></li>
<li><code> $nachname-&gt;appendChild($xml-&gt;createTextNode(iconv('iso-8859-1','utf-8',$rs['nachname'])));</code></li>
<li><code> $vorname = $xml-&gt;createElement('vorname');</code></li>
<li><code> $vorname-&gt;appendChild($xml-&gt;createTextNode(iconv('iso-8859-1','utf-8',$rs['vorname'])));</code></li>
<li><code> $email = $xml-&gt;createElement('email');</code></li>
<li><code> $email-&gt;appendChild($xml-&gt;createTextNode(iconv('iso-8859-1','utf-8',$rs['email'])));</code></li>
<li><code> $telefon = $xml-&gt;createElement('telefon');</code></li>
<li><code> $telefon-&gt;appendChild($xml-&gt;createTextNode(iconv('iso-8859-1','utf-8',$rs['telefon'])));</code></li>
<li><code> $person = $xml-&gt;createElement('person');</code></li>
<li><code> $person-&gt;setAttribute('id', $rs['id']);</code></li>
<li><code> $person-&gt;appendChild($nachname);</code></li>
<li><code> $person-&gt;appendChild($vorname);</code></li>
<li><code> $person-&gt;appendChild($email);</code></li>
<li><code> $person-&gt;appendChild($telefon);</code></li>
<li><code> $root-&gt;appendChild($person);</code></li>
<li><code>}</code></li>
<li></li>
<li><code>mysql_close($connect);</code></li>
<li><code>?&gt;</code></li>
</ol>
<p>Dazu binde ich als erstes die externe Datei zum Verbinden mit dem Datenbank-Server ein. Danach speichere ich das <abbr title="Structed Query Language">SQL</abbr>-Statement in einer Variablen zwischen und hole von der Datenbank alle Ergebnisse dieser Anfrage.</p>
<p>In der darauffolgenden <code>while</code>-Schleife werden neue Knoten erzeugt und an den Root dran gehangen. Dabei setzt sich der Nachname-Knoten z.B. wie folgt zusammen. Ich erzeuge als erstes einen <code>&lt;nachname&gt;</code>-Tag und hänge dann mit der <code>createTextNode()</code>-Methode einen Text-Knoten dran. Den Text den ich da dran hänge, konvertiere ich zuvor noch mit der <code>iconv()</code>-Funktion in den richtigen Zeichensatz. Zum Schluss hänge ich dem <code>&lt;person&gt;</code>-Tag alle Unterknoten dran.</p>
<p>Soweit die Ausgabe zum Browser, bzw. zu JavaScript und meiner <abbr title="Asyncron JavaScript and XML">AJAX</abbr>-Klasse. Was noch fehlt ist ein Script um Daten von JavaScript in Empfang zu nehmen und in die Datenbank einzufügen.</p>
<ol class="Sourcecode">
<li><code>&lt;?php</code></li>
<li><code>include('include.php');</code></li>
<li><code>$sql = sprintf('REPLACE INTO personen SET</code></li>
<li><code> id=%d, </code></li>
<li><code> nachname="%s", </code></li>
<li><code> vorname="%s", </code></li>
<li><code> email="%s",</code></li>
<li><code> telefon="%s"'</code></li>
<li><code> ,$_POST['f0'],$_POST['f1'],$_POST['f2'],$_POST['f3'],$_POST['f4']);</code></li>
<li><code>mysql_query($sql, $connect);</code></li>
<li><code>mysql_close();</code></li>
<li><code>?&gt;</code></li>
</ol>
<p>Auch hier ist der Quellcode sehr überschaubar. Als erstes binde ich wieder Das Script zum Erzeugen einer Verbindung zum Datenbank-Server ein. Dann speichere ich wieder in einer Variablen das SQL-Statement zwischen. Um ein korrektes Ergebnis zu bekommen, verwende ich hier die sprinf()-Funktion. Diese bietet mir eine kleiner Kontrolle über die übergebenen Werte. Zum Schluss schicke ich das Ganze nur noch an der Server und fertig ist das Einfügen neuer oder das Ändern von bestehenden Datensätzen. Ich verwende dazu immer ganz gern das REPLACE-Statement. Wenn dieses Statement keine ID besitzt wird ein neuer Datensatz erzeugt, ansonsten wird der Bestehende verändert.</p>
<ul>
<li><a title="komplettes Set" href="ftp://weblabor.re-design.de/AJAX-Adressbuch.zip">Download</a></li>
</ul>
<p>So und das war es auch schon mit der serverseitigen Programmierung. Gerade mal 3 kleine Script brauche ich hier um der ganzen Webanwendung auch das Speichern auf dem Server bzw. das Einlesen von Daten hinzuzufügen.</p>
<p>Ich hoffe es hat euch gefallen 24 meist kleine Beträge aus meinen Arbeitsalltag zu lesen. Ich gebe zu, es war nicht immer leicht die Texte rechtzeitig fertig zu stellen und ich verspreche, wie immer und alle, nächstes Jahr rechtzeitig mit den Vorbereitungen zu beginnen.</p>
<h3  class="related_post_title">Ähnliche Beiträge</h3><ul class="related_post"><li><a href="http://www.re-design.de/2008/01/29/ajax-adressbuch/" title="AJAX Adressbuch">AJAX Adressbuch</a></li><li><a href="http://www.re-design.de/2007/12/23/ajax-abressbuch-tutorial-teil-3/" title="AJAX Abressbuch &#8211; Tutorial Teil 3">AJAX Abressbuch &#8211; Tutorial Teil 3</a></li><li><a href="http://www.re-design.de/2007/12/22/ajax-adressbuch-tutorial-teil-2/" title="AJAX Adressbuch &#8211; Tutorial Teil 2">AJAX Adressbuch &#8211; Tutorial Teil 2</a></li><li><a href="http://www.re-design.de/2007/12/21/ajax-adressbuch-tutorial-teil-1/" title="AJAX Adressbuch &#8211; Tutorial Teil 1">AJAX Adressbuch &#8211; Tutorial Teil 1</a></li><li><a href="http://www.re-design.de/2009/03/04/einzelcoaching-php-xml-schulung/" title="Einzelcoaching &ndash; PHP-XML Schulung">Einzelcoaching &ndash; PHP-XML Schulung</a></li></ul>]]></content:encoded>
			<wfw:commentRss>http://www.re-design.de/2007/12/24/ajax-adressbuch-tutorial-teil-4/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
	</channel>
</rss>

