<?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>Docs Jmini &#187; sql</title>
	<atom:link href="http://docs.jmini.fr/mot-cle/sql/feed" rel="self" type="application/rss+xml" />
	<link>http://docs.jmini.fr</link>
	<description>docs.jmini.fr</description>
	<lastBuildDate>Thu, 18 Feb 2010 09:47:54 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.9.2</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>Description de la base de données &#171;&#160;employees&#160;&#187;</title>
		<link>http://docs.jmini.fr/notes/description-employees-db</link>
		<comments>http://docs.jmini.fr/notes/description-employees-db#comments</comments>
		<pubDate>Mon, 29 Jun 2009 20:59:48 +0000</pubDate>
		<dc:creator>Jérémie Bresson</dc:creator>
				<category><![CDATA[Notes]]></category>
		<category><![CDATA[sql]]></category>

		<guid isPermaLink="false">http://docs.jmini.fr/?p=90</guid>
		<description><![CDATA[Le site de MySQL propose plusieurs bases de données d&#8217;exemples, dont la base de données employees. Cette base de données est distribuée sous licence Creative Commons, elle peut donc être téléchargée et installée librement. Le petit nombre de tables permet de ne pas être perdu dans la structure, mais est suffisant pour effectuer quelques requêtes [...]]]></description>
			<content:encoded><![CDATA[<p>Le site de MySQL propose plusieurs bases de données d&#8217;exemples, dont la base de données <em>employees</em>. Cette base de données est distribuée sous licence Creative Commons, elle peut donc être téléchargée et installée librement. Le petit nombre de tables permet de ne pas être perdu dans la structure, mais est suffisant pour effectuer quelques requêtes complexes (jointures, &#8230;). Le nombre d&#8217;enregistrements varie d&#8217;une table à l&#8217;autre et est suffisant pour avoir une exploitation représentative de cas réels.</p>
<p>De par son aspect libre et ouvert, des ressources intéressantes existent pour cette base de données. On trouve par exemple un script d&#8217;installation évolué ainsi qu&#8217;une description précise de la structure&#8230; (Voir la liste en fin d&#8217;article). J&#8217;ai également mis en pièce jointe de cet article quelques documents &laquo;&nbsp;fait maison&nbsp;&raquo;.</p>
<h3 id="informations_contenues_dans_la_base_de_donnes">Informations contenues dans la base de données :</h3>
<p>La base de données <em>employees</em> sert à gérer comme son nom l&#8217;indique, les employés d&#8217;une entreprise. Pour chaque employé, les informations suivantes sont conservées : son nom, son prénom et son sexe, sa date de naissance ainsi que la date à laquelle il a été embauché. On garde également l&#8217;historique de l&#8217;évolution de son salaire ainsi que l&#8217;historique de l&#8217;évolution de son titre (&laquo;&nbsp;Senior Engineer&nbsp;&raquo;, &laquo;&nbsp;Staff&nbsp;&raquo;, &laquo;&nbsp;Engineer&nbsp;&raquo;&#8230;).</p>
<p>Cette entreprise est organisée en un certain nombre de départements (&laquo;&nbsp;Marketing&nbsp;&raquo;, &laquo;&nbsp;Finance&nbsp;&raquo;&#8230;). Pour chaque département la base de données enregistre l&#8217;historique des manageurs (qui doit être un employé de la liste précédemment évoquée) ainsi que l&#8217;historique des employés de ce département (également des employés de la liste).</p>
<div class="markNote"><blockquote></p>
<p><strong>Description de la base de donnée en 2 listes :</strong></p>
<p>6 tables :</p>
<ul>
<li>employees</li>
<li>salaries</li>
<li>titles</li>
<li>departments</li>
<li>dept_emp</li>
<li>dept_manager</li>
</ul>
<p>Relations suivantes :</p>
<ul>
<li>employees 1:N salaries</li>
<li>employees 1:N titles</li>
<li>employees 1:N dept_manager M:1 departments</li>
<li>employees 1:N dept_emp M:1 departments</li>
</ul>
<p></blockquote></div>
<h3 id="resources">Resources</h3>
<ul>
<li><a title="Entity-relationship model of database 'employees'" href="http://jmini.fr/depot/mysql/employees_entity-relationship.png">Diagramme entité-relation </a> (obtenu avec le logiciel MySQL Workbench puis annoté)</li>
<li><a title="Schema for database 'employees'" href="http://jmini.fr/depot/mysql/employees_structure.html">Liste des tables</a> (à partir de l&#8217;export du logiciel SQLyog)</li>
<li><a title="Content of database 'employees' (extract)" href="http://jmini.fr/depot/mysql/employees_content.html">10 premiers enregistrements de chaque table</a> (réalisé à la main sur le même modèle que le document précédent)</li>
<li>(en) <a href="https://launchpad.net/test-db">Sample database with test suite in Launchpad</a> : Site Launchpad de la base de données <em>employees</em> (description, <a href="https://launchpad.net/test-db/+download">téléchargement</a>, questions/réponses, annonces, &#8230;)</li>
<li>(en) <a href="http://dev.mysql.com/doc/employee/en/employee.html">MySQL :: HTML Setup Guide for employee data</a> : Page décrivant la mise en place la base de données <em>employees</em> dans la documentation officielle de MySQL.</li>
<li>(en) <a title="MySQL :: MySQL Documentation" href="http://dev.mysql.com/doc/#sampledb">MySQL :: MySQL Documentation</a> : Autres exemples officiels de bases de données.</li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://docs.jmini.fr/notes/description-employees-db/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Un script pour convertir un fichier CSV en requêtes SQL</title>
		<link>http://docs.jmini.fr/code/script-convertir-csv-en-sql</link>
		<comments>http://docs.jmini.fr/code/script-convertir-csv-en-sql#comments</comments>
		<pubDate>Mon, 06 Aug 2007 05:58:00 +0000</pubDate>
		<dc:creator>Jérémie Bresson</dc:creator>
				<category><![CDATA[Code]]></category>
		<category><![CDATA[awk]]></category>
		<category><![CDATA[csv]]></category>
		<category><![CDATA[programmation]]></category>
		<category><![CDATA[sql]]></category>

		<guid isPermaLink="false">http://docs.jmini.fr/?p=14</guid>
		<description><![CDATA[Voici un petit script AWK pour convertir un fichier csv (provenant d&#8217;Excel ou de n&#8217;importe quel autre programme) en une requête SQL (pour remplir une base de données MySQL avec phpMyAdmin par exemple).
Il fonctionne grâce à AWK, donc sur pratiquement n&#8217;importe quel système UNIX, et Mac OS X en particulier.
Pour en savoir plus sur l&#8217;utilisation [...]]]></description>
			<content:encoded><![CDATA[<p>Voici un petit script AWK pour convertir un fichier csv (provenant d&#8217;Excel ou de n&#8217;importe quel autre programme) en une requête SQL (pour remplir une base de données MySQL avec phpMyAdmin par exemple).</p>
<p>Il fonctionne grâce à AWK, donc sur pratiquement n&#8217;importe quel système UNIX, et Mac OS X en particulier.</p>
<p>Pour en savoir plus sur l&#8217;utilisation de AWK dans Mac OS X, je vous invite à consulter l&#8217;article <a href="http://docs.jmini.fr/pas-a-pas/se-servir-de-awk-dans-mac-os-x" title="Se servir de AWK dans Mac OS X">Se servir de AWK dans Mac OS X</a></p>
<p>Le script :</p>
<div class="markCode"><div class="boxCode"><code>
<pre class="Clr_Code"><span class="Clr_Comment">#!/usr/bin/awk -f
# Script de conversion d'un fichier .csv Excel en un script d'insertion SQL.
# version 1
# http://jmini.fr/

# STRUCTURE DU FICHIER :
# separateur : ;
# premiere ligne : nom de la table
# deuxieme ligne : nom des champs
# lignes suivantes : enregistrements</span>

<span class="Clr_Anchor">BEGIN</span> <span class="Clr_Operator">{</span>
	<span class="Clr_Var">FS</span>=<span class="Clr_String">"<span class="Clr_Operator">;</span>"</span><span class="Clr_Operator">;</span>
	<span class="Clr_Var">RS</span>=<span class="Clr_String">"\n"</span><span class="Clr_Operator">;</span>
	<span class="Clr_Var">OFS</span>=<span class="Clr_String">""</span><span class="Clr_Operator">;</span>
	<span class="Clr_Func">printf</span> <span class="Clr_String">"-- csvToSql : debut du script sql\n"</span><span class="Clr_Operator">;</span>
<span class="Clr_Operator">}</span>

<span class="Clr_Operator">{</span>
	<span class="Clr_Func">gsub</span>(<span class="Clr_String">/'/</span><span class="Clr_Operator">,</span><span class="Clr_String">"\\'"</span><span class="Clr_Operator">,</span> <span class="Clr_Var">$0</span>)<span class="Clr_Operator">;</span>
<span class="Clr_Operator">}</span>

<span class="Clr_Var">NR</span>==<span class="Clr_Int">1</span> <span class="Clr_Operator">{</span>
	li=<span class="Clr_String">"INSERT INTO  `"</span> <span class="Clr_Var">$1</span> <span class="Clr_String">"` (  `"</span><span class="Clr_Operator">;</span>
<span class="Clr_Operator">}</span>
<span class="Clr_Var">NR</span>==<span class="Clr_Int">2</span> <span class="Clr_Operator">{</span>
	<span class="Clr_Var">nb_champ</span>=<span class="Clr_Var">NF</span><span class="Clr_Operator">;</span>
	<span class="Clr_KeyWord">for</span>(<span class="Clr_Var">i</span>=<span class="Clr_Int">1</span><span class="Clr_Operator">;</span> <span class="Clr_Var">i</span>&lt;<span class="Clr_Var">NF</span><span class="Clr_Operator">;</span> <span class="Clr_Var">i</span><span class="Clr_Operator">++</span>)
		<span class="Clr_Var">li</span>=<span class="Clr_Var">li</span> <span class="Clr_Var">$i</span> <span class="Clr_String">"` ,  `"</span><span class="Clr_Operator">;</span>
	<span class="Clr_Var">li</span>=<span class="Clr_Var">li</span> <span class="Clr_Var">$i</span> <span class="Clr_String">"` ) "</span><span class="Clr_Operator">;</span>
	<span class="Clr_Func">print</span> <span class="Clr_Var">li</span><span class="Clr_Operator">;</span>
	<span class="Clr_Var">li</span>=<span class="Clr_String">"VALUES "</span><span class="Clr_Operator">;</span>
<span class="Clr_Operator">}</span>

<span class="Clr_Var">NR</span>&gt;<span class="Clr_Int">2</span> <span class="Clr_Operator">{</span>
	<span class="Clr_Var">li</span>=<span class="Clr_Var">li</span> <span class="Clr_String">"('"</span>
	<span class="Clr_KeyWord">for</span>(<span class="Clr_Var">i</span>=<span class="Clr_Int">1</span><span class="Clr_Operator">;</span> <span class="Clr_Var">i</span>&lt;<span class="Clr_Var">nb_champ</span><span class="Clr_Operator">;</span> <span class="Clr_Var">i</span><span class="Clr_Operator">++</span>)
		<span class="Clr_Var">li</span>=<span class="Clr_Var">li</span> <span class="Clr_Var">$i</span> <span class="Clr_String">"',  '"</span><span class="Clr_Operator">;</span>

	<span class="Clr_Var">li</span>=<span class="Clr_Var">li</span> <span class="Clr_Var">$i</span> <span class="Clr_String">"')"</span><span class="Clr_Operator">;</span>

	<span class="Clr_Func">print</span> <span class="Clr_Var">li</span><span class="Clr_Operator">;</span>
	<span class="Clr_Var">li=<span class="Clr_String">", "</span><span class="Clr_Operator">;</span>
<span class="Clr_Operator">}</span>

<span class="Clr_Anchor">END</span> <span class="Clr_Operator">{</span>
	<span class="Clr_Func">print</span> <span class="Clr_String">";"</span><span class="Clr_Operator">;</span>
	<span class="Clr_Func">print</span> <span class="Clr_String">"-- csvToSql : fin du script sql \n"</span><span class="Clr_Operator">;</span>
<span class="Clr_Operator">}</span>
</span></pre>
<p></code></div></div>
<p>Retrouvez tous les fichiers de démonstration dans une archive zip : <a href="http://docs.jmini.fr/wp-content/uploads/2008/11/csvsql.zip" title="csvsql" class="attachment_file">csvsql.zip</a></p>
<h2>Utilisation du script :</h2>
<h3>1) Préparer le fichier CSV</h3>
<p>Peu importe la manière dont vous obtenez votre fichier CSV (copier-coller, export Excel&#8230;) vous devez vous assurer qu&#8217;il respecte bien le format prévu par le script. Si ce n&#8217;est pas le cas, un éditeur texte et une série de rechercher-remplacer devrait faire l&#8217;affaire. Pour les utilisateurs avertis, il est aussi possible de changer le script AWK&#8230;</p>
<p>Dans la configuration du script actuelle, il faut que fichier soit construit de la manière suivante :</p>
<ul>
<li>Le séparateur de champs doit être un point-virgule &laquo;&nbsp;;&nbsp;&raquo;</li>
<li>La première ligne ne doit contenir qu&#8217;un champ : le nom de la table</li>
<li>La deuxième ligne doit contenir les noms des champs de la table SQL</li>
<li>Les lignes suivantes doivent contenir les enregistrements (et donc le même nombre de champs que la deuxième ligne, s’il y en a plus, ils seront ignorés)</li>
</ul>
<p>Exemple : fichier panier.csv :</p>
<div class="markCode"><div class="boxCode"><code>panier<br />
id;fruit;nombre;etat<br />
1;pomme;23;bon<br />
2;poire;4;mauvais<br />
3;banane;7;parfait</code></div></div>
<p>Ce fichier s&#8217;obtient très facilement avec Excel en remplissant correctement une feuille du classeur :</p>
<div id="attachment_21" class="wp-caption alignnone" style="width: 310px"><img class="size-medium wp-image-21" title="capture_excel" src="http://docs.jmini.fr/wp-content/uploads/2008/08/img46b194dcb445e-300x121.png" alt="Visualisation du fichier CSV dans Excel" width="300" height="121" /><p class="wp-caption-text">Visualisation du fichier CSV dans Excel</p></div>
<p>Pour générer le fichier CSV, il suffit de faire : <strong>Menu &gt; Fichier &gt; Enregistrer sous&#8230;</strong> puis de choisir dans le format de fichier « CSV (séparateur : point-virgule) »</p>
<div class="markNote"><blockquote><strong>Attention :</strong> parfois, le fichier généré par Excel ne fonctionne pas avec AWK. Il suffit d&#8217;ouvrir le fichier CSV dans un éditeur de texte, de tout sélectionner, de copier la sélection et de coller le texte dans un nouveau fichier que l&#8217;on réenregistre.</blockquote></div>
<p>Enregistrer le fichier dans le répertoire de travail (ici un dossier csvsql sur le bureau).</p>
<h3>2) Préparation du script</h3>
<p>Copier le script ci-dessus dans un fichier texte nommé csvToSql.awk et rendez-le exécutable (méthode décrite dans l&#8217;<a href="http://docs.jmini.fr/pas-a-pas/se-servir-de-awk-dans-mac-os-x" title="Se servir de AWK dans Mac OS X">article sur l&#8217;utilisation d&#8217;AWK</a>)</p>
<p>ou utilisez le script de l&#8217;archive Zip de démonstration</p>
<p>Le plus simple est d&#8217;avoir ce fichier de script dans le répertoire de travail (dans notre cas, toujours le dossier csvsql sur le bureau).</p>
<h3>3) Préparer le terminal</h3>
<p>Ouvrer le terminal et placer vous dans le répertoire de travail contenant le script AWK (csvToSql.awk) et le fichier source (dans notre exemple panier.csv) <div class="markCode"><div class="boxCode"><code>$ cd ~/Desktop/csvsql/</code></div></div></p>
<h3>4) Lancer le script :</h3>
<p>Il suffit de taper dans le terminal la commande : <div class="markCode"><div class="boxCode"><code>$ ./csvToSql.awk panier.csv</code></div></div></p>
<p>On obtient dans terminal la requête SQL que l&#8217;on peut réutiliser à l&#8217;endroit adéquat (notamment dans PhpMyAdmin)</p>
<div class="markCode"><div class="boxCode"><code>
<pre class="Clr_Code"><span class="Clr_Comment">-- csvToSql : debut du script sql</span>
<span class="Clr_KeyWord">INSERT INTO</span>  <span class="Clr_String">`panier`</span> <span class="Clr_Operator">(</span>  <span class="Clr_String">`id`</span> <span class="Clr_Operator">,</span>  <span class="Clr_String">`fruit`</span> <span class="Clr_Operator">,</span>  <span class="Clr_String">`nombre`</span> <span class="Clr_Operator">,</span>  <span class="Clr_String">`etat`</span> <span class="Clr_Operator">)</span>
<span class="Clr_KeyWord">VALUES</span> <span class="Clr_Operator">(</span><span class="Clr_String">'1'</span><span class="Clr_Operator">,</span>  <span class="Clr_String">'pomme'</span><span class="Clr_Operator">,</span>  <span class="Clr_String">'23'</span><span class="Clr_Operator">,</span>  <span class="Clr_String">'bon'</span><span class="Clr_Operator">)</span><span class="Clr_Operator">,</span> <span class="Clr_Operator">(</span><span class="Clr_String">'2'</span><span class="Clr_Operator">,</span>  <span class="Clr_String">'poire'</span><span class="Clr_Operator">,</span>  <span class="Clr_String">'4'</span><span class="Clr_Operator">,</span>  <span class="Clr_String">'mauvais'</span><span class="Clr_Operator">)</span><span class="Clr_Operator">,</span> <span class="Clr_Operator">(</span><span class="Clr_String">'3'</span><span class="Clr_Operator">,</span>  <span class="Clr_String">'banane'</span><span class="Clr_Operator">,</span>  <span class="Clr_String">'7'</span><span class="Clr_Operator">,</span>  <span class="Clr_String">'parfait'</span><span class="Clr_Operator">)</span><span class="Clr_Operator">;</span>
<span class="Clr_Comment">-- csvToSql : fin du script sql</span></pre>
<p></code></div></div>
<hr />
En annexe voici une requête permettant de créer la structure de la table correspondant à notre exemple.</p>
<div class="markCode"><div class="boxCode"><code>
<pre class="Clr_Code"><span class="Clr_Comment">-- Creation de la table</span>
<span class="Clr_KeyWord">CREATE TABLE</span>  <span class="Clr_String">`panier`</span> <span class="Clr_Operator">(</span>
<span class="Clr_String">`id`</span> <span class="Clr_KeyWord">INT</span><span class="Clr_Operator">(</span> <span class="Clr_Int">4</span> <span class="Clr_Operator">)</span> <span class="Clr_KeyWord">NOT NULL</span> AUTO_INCREMENT <span class="Clr_Operator">,</span>
<span class="Clr_String">`fruit`</span> <span class="Clr_KeyWord">VARCHAR</span><span class="Clr_Operator">(</span> <span class="Clr_Int">20</span> <span class="Clr_Operator">)</span> <span class="Clr_Operator">,</span>
<span class="Clr_String">`nombre`</span> <span class="Clr_KeyWord">INT</span><span class="Clr_Operator">(</span> <span class="Clr_Int">8</span> <span class="Clr_Operator">)</span> DEFAULT  <span class="Clr_String">'0'</span> <span class="Clr_KeyWord">NOT NULL</span> <span class="Clr_Operator">,</span>
<span class="Clr_String">`etat`</span> <span class="Clr_KeyWord">VARCHAR</span><span class="Clr_Operator">(</span> <span class="Clr_Int">20</span> <span class="Clr_Operator">)</span> <span class="Clr_Operator">,</span>
<span class="Clr_KeyWord">PRIMARY KEY</span> <span class="Clr_Operator">(</span>  <span class="Clr_String">`id`</span> <span class="Clr_Operator">)</span>
<span class="Clr_Operator">)</span> TYPE <span class="Clr_Operator">=</span> MYISAM COMMENT <span class="Clr_Operator">=</span>  <span class="Clr_String">'Panier de fruits'</span><span class="Clr_Operator">;</span></pre>
<p></code></div></div>
]]></content:encoded>
			<wfw:commentRss>http://docs.jmini.fr/code/script-convertir-csv-en-sql/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Mac OS X : un serveur LAMP ?</title>
		<link>http://docs.jmini.fr/notes/mac-os-x-un-serveur-lamp</link>
		<comments>http://docs.jmini.fr/notes/mac-os-x-un-serveur-lamp#comments</comments>
		<pubDate>Fri, 23 Mar 2007 08:02:28 +0000</pubDate>
		<dc:creator>Jérémie Bresson</dc:creator>
				<category><![CDATA[Notes]]></category>
		<category><![CDATA[hébergement]]></category>
		<category><![CDATA[mac os x]]></category>
		<category><![CDATA[php]]></category>
		<category><![CDATA[sql]]></category>

		<guid isPermaLink="false">http://docs.jmini.fr/?p=12</guid>
		<description><![CDATA[LAMP :
Par définition, LAMP est un acronyme qui désigne la réunion sur une même plateforme de : Linux (système d&#8217;exploitation), Apache (serveur web), MySQL (serveur de base de données) et PHP (langage de script). Par définition donc, Mac OS n’est donc pas une solution LAMP, puisque Mac OS n’est pas un Linux. Néanmoins, Mac OS [...]]]></description>
			<content:encoded><![CDATA[<h3>LAMP :</h3>
<p>Par définition, LAMP est un acronyme qui désigne la réunion sur une même plateforme de : <strong>L</strong>inux (système d&#8217;exploitation), <strong>A</strong>pache (serveur web), <strong>M</strong>ySQL (serveur de base de données) et <strong>P</strong>HP (langage de script). Par définition donc, Mac OS n’est donc pas une solution LAMP, puisque Mac OS n’est pas un Linux. Néanmoins, Mac OS X est un UNIX (basé sur FreeBSD) et peut tout à fait servir de serveur web. Wikipédia propose le néologisme MAMP pour désigner de telle solution.</p>
<p>Cet article décrit comment installer un serveur Web sur la version normale de Mac OS X. Un tel serveur web peu notamment servir à faire des essais, ou alors comme serveur d’un intranet par exemple. Pour des besoins plus évolués, il faudrait certainement se pencher sur l’utilisation de MAMP avec Mac OS X Serveur (les principes de cet article doivent tout de même être vrais).</p>
<div class="markNote"><blockquote><em>Cet article a été rédigé avec la version 10.4.9 de Mac OS X, mais cette procédure était déjà valable avec la version 10.2 et le sera certainement avec la version 10.5.</em></blockquote></div>
<h2>Apache :</h2>
<p>Par défaut Apache est installé pour Mac OS X. Pour le lancer c’est très simple, il faut faire :</p>
<p><strong>Menu Pomme &gt; Préférence Système &gt; Partage &gt; Services</strong></p>
<p>Dans la liste il suffit de sélectionner <em>Partage Web personnel</em> et de cliquer sur Démarrer.</p>
<p>Dès que l’on tape : http://localhost/ (ou http://127.0.0.1/) dans son navigateur, on obtient les pages du serveur Apache.</p>
<p>La racine du serveur web se trouve dans le dossier :</p>
<p><strong>Macintosh HD &gt; Bibliothèque &gt; WebServer &gt; Documents.</strong></p>
<p>Il faut des droits d&#8217;administrateur pour modifier ce dossier.</p>
<p>Chaque utilisateur a la possibilité d’avoir son site internet. Il place alors ses pages dans le dossier :</p>
<p><strong>Macintosh HD &gt; Utilisateurs &gt; Dossier personnel (la maison) &gt; Sites</strong></p>
<p>Les pages sont alors disponibles à l’adresse : http://127.0.0.1/~nom_dutilisateur/<br />
<div class="markRem"><blockquote>Il faut bien faire la différence entre l’affichage d’une page HTML par le serveur web et directement dans le navigateur :</p>
<p>file:///Users/nom_dutilisateur/Sites/ma_page.html affiche le fichier</p>
<p>http://127.0.0.1/~nom_dutilisateur/ma_page.html affiche la réponse du serveur web. (qui dans ce cas est le même fichier)</p>
<p>Dans le cas d’un simple fichier HTML, il n’y a aucune différence, mais avec des fichiers php, dans le premier cas le fichier ne sera pas interprété (on verra les sources) alors que dans le deuxième cas on verra le résultat de l’exécution du script php.<br />
</blockquote></div></p>
<h2>MySQL :</h2>
<p>Il est tout à fait possible d’avoir une base de données MySQL. Pour ma part j’ai choisi d’installer une solution toute faite proposée par <a href="http://www.serverlogistics.com/mysql.php" target="_blank">ServerLogistics</a>.</p>
<p>Elle a l’avantage de s’installer avec un simple fichier <strong>.pkg</strong> (utilisable avec l&#8217;installateur Apple) et propose un PreferencesPane (module pour les préférences système).</p>
<div class="markNote"><blockquote><strong>Note : </strong> Visiblement MySQL propose depuis la version 4.0.11 un paquet <strong>.pkg</strong> officiel à utiliser avec l&#8217;<strong>installateur Apple</strong>. <em>A voir</em>.</p>
<p>Documentation officielle : <a href="http://dev.mysql.com/doc/refman/5.0/fr/mac-os-x-installation.html">MySQL 5.0 Reference Manual : Installer MySQL sur Mac OS X</a></blockquote></div>
<h3>Emplacement du Socket MySQL</h3>
<p>Récemment, j’ai rencontré un problème avec le Soket MySql. Il semblerait qu’il y ait un ancien et un nouvel emplacement :</p>
<ul>
<li>Par défaut, Apache l&#8217;attend ici : <strong>/var/mysql/mysql.sock</strong></li>
<li>Celui installé par ServerLogistics se trouve à l’ancien emplacement : <strong>/tmp/mysql.sock</strong></li>
</ul>
<p>Il faut donc modifier le fichier de configuration pour indiquer que l’on veut l’utiliser l’ancien emplacement. Le fichier de configuration est à l’adresse : <strong>/etc/php.ini</strong></p>
<p>Voici comment modifier le fichier de configuration (lire également l&#8217;<a href="http://docs.jmini.fr/notes/editer-fichier-texte-terminal" title="Éditer un fichier texte avec le terminal">article sur l&#8217;édition des fichiers textes dans le terminal</a> si vous n&#8217;êtes pas à l&#8217;aise avec son utilisation). Dans le terminal taper (il faut être administrateur) :<br />
<div class="markCode"><div class="boxCode"><code>sudo nano /etc/php.ini</code></div></div></p>
<p>dans le fichier, il faut modifier la valeur de la variable mysql.default_socket. Il faut que la ligne soit égale à :<br />
<div class="markCode"><div class="boxCode"><code>mysql.default_socket = /tmp/mysql.sock</code></div></div></p>
<p>Plus d’information sur ce changement sur le site d’Apple : <a href="http://docs.info.apple.com/article.html?artnum=302977-fr" target="_blank">améliorations de l&#8217;interaction Apache/PHP/MySQL</a>.<br />
(cela concerne la version serveur, mais le fonctionnement est sensiblement le même)</p>
<h2>PHP :</h2>
<p>Par défaut, PHP n’est pas activé. Il faut le faire en modifiant le fichier : <strong>/etc/httpd/httpd.conf</strong></p>
<p>Il s’agit de décommenter (enlever un #) devant certaines lignes.</p>
<p>Lancer l’éditeur en tapant dans le terminal (il faut être administrateur) :<br />
<div class="markCode"><div class="boxCode"><code>sudo nano /etc/httpd/httpd.conf</code></div></div><br />
(en savoir plus : <a href="http://docs.jmini.fr/notes/editer-fichier-texte-terminal" title="Éditer un fichier texte avec le terminal">Éditer un fichier texte avec le terminal</a>)</p>
<p>Les détails des lignes à modifier sont bien décrits dans l’article : <a href="http://www.xrings.net/xrings/article.php3?id_article=25" target="_blank">xrings  : Activer PHP sous Mac OS 10.2</a> (Copie de l&#8217;article au format pdf : <a href="http://docs.jmini.fr/wp-content/uploads/2008/11/xringsnet-activer_php.pdf" title="xringsnet-activer_php" class="attachment_file">xringsnet-activer_php.pdf</a>)</p>
<div class="markNote"><blockquote><strong>Note :</strong> Par rapport à l&#8217;article, les commandes pico et nano sont identiques dans le terminal.</blockquote></div>
]]></content:encoded>
			<wfw:commentRss>http://docs.jmini.fr/notes/mac-os-x-un-serveur-lamp/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
