<?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>Blog4J &#187; PHP</title>
	<atom:link href="http://blog4j.free.fr/index.php/category/web/php/feed/" rel="self" type="application/rss+xml" />
	<link>http://blog4j.free.fr</link>
	<description>Articles et tutoriels sur la plateforme Java EE</description>
	<lastBuildDate>Sat, 11 Nov 2023 18:27:36 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.8.4</generator>
	<language>fr</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>Comparaison PL SQL / Procédures MySql</title>
		<link>http://blog4j.free.fr/index.php/2023/11/11/comparaison-pl-sql-procedures-mysql/</link>
		<comments>http://blog4j.free.fr/index.php/2023/11/11/comparaison-pl-sql-procedures-mysql/#comments</comments>
		<pubDate>Sat, 11 Nov 2023 10:13:52 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[PHP]]></category>

		<guid isPermaLink="false">http://blog4j.free.fr/?p=70</guid>
		<description><![CDATA[Voici quelques notes prises en vrac concernant le langage procédural PL/SQL et les procédures SQL disponibles avec la version 5 de MySql :
Structure d&#8217;un programme
La structure d&#8217;un bloc PL SQL est très simple :
DECLARE
-- Déclaration des variables et curseurs
BEGIN
-- Code PL SQL
END;

Pour ce qui est de MySql, il existe les procédures (exécutent un traitement) et [...]

<script type="text/javascript">
SHARETHIS.addEntry({
    title: "Comparaison PL SQL / Procédures MySql",
    url: "http://blog4j.free.fr/index.php/2023/11/11/comparaison-pl-sql-procedures-mysql/"
});
</script>
    ]]></description>
			<content:encoded><![CDATA[<p>Voici quelques notes prises en vrac concernant le langage procédural PL/SQL et les procédures SQL disponibles avec la version 5 de MySql :</p>
<p><strong>Structure d&#8217;un programme</strong></p>
<p>La structure d&#8217;un bloc PL SQL est très simple :</p>
<p><code>DECLARE<br />
-- Déclaration des variables et curseurs<br />
BEGIN<br />
-- Code PL SQL<br />
END;<br />
</code></p>
<p>Pour ce qui est de MySql, il existe les procédures (exécutent un traitement) et les fonctions (renvoient une valeur).<br />
Il faut créer la procédure ou fonction :</p>
<p><code><br />
CREATE PROCEDURE exemple_proc(OUT param1 INT)<br />
BEGIN<br />
     SELECT * FROM employes<br />
END<br />
</code></p>
<p>Et ensuite l&#8217;appeler avec l&#8217;instruction CALL :</p>
<p><code><br />
CALL exemple_proc(@a)<br />
</code></p>
<p>Et ensuite faire un SELECT :<br />
<code><br />
SELECT @a<br />
</code><br />
<strong>Les déclencheurs (triggers)</strong></p>
<p>Exécutent une action lors d&#8217;un évènement spécifique sur une table, une vue ou sur la base de donnée en elle même.</p>
<p>Un déclencheur ne peut pas contenir de COMMIT ou ROLLBACK vu qu&#8217;il s&#8217;exécute dans une transaction.</p>
<p>Si un ordre DML (select, insert, delete, update) est lancé sur la table concernée par le trigger, une exception ORA-04091 TABLE IS MUTATING peut être lancée.</p>
<p>2 variables peuvent être utilisées : OLD et NEW (juste avec les insert et update). Elles ne peuvent être utilisées que dans la clause WHEN.</p>
<p>Mettre un exemple de trigger</p>
<p>La clause INSTEAD OF est la seule clause utilisable en plus uniquement pour les vues.</p>
<p>Les déclencheurs concernant la base de données sont des déclencheurs sur les évènements système ou utilisateur.</p>
<p>Mettre la liste</p>
<p>Il est possible de désactiver (ou activer) les déclencheurs d&#8217;une table :</p>
<p>ALTER TABLE nomTable DISABL / ENABLE ALL TRIGGERS</p>
<p>Un trigger en particulier :</p>
<p>ALTER TRIGGER nomTrigger [enable/disable]</p>
<p>Les vues système à propos des triggers :</p>
<p>USER_TRIGGERS<br />
DBA_TRIGGERS<br />
ALL_TRIGGERS</p>
<p><strong>Les curseurs</strong> :</p>
<p><u>En PL SQL</u> :</p>
<p>Il existe 2 sortes de curseurs :</p>
<p>les <i>curseurs explicites</i> (gérés par l&#8217;utilisateur &#8211; ouverture, fermeture du curseur&#8230;) et <i>implicites</i> (gérés par Oracle).</p>
<p><i>Exemple de curseur explicite</i> :<br />
<code>DECLARE<br />
-- déclaration du curseur<br />
CURSOR C_EMPLOYE IS<br />
    SELECT num_emp, nom_emp, prenom_emp FROM employes;</p>
<p>num employes.num_emp%Type;<br />
nom employes.nom_emp%Type;<br />
prenom employes.prenom_emp%Type;</p>
<p>BEGIN</p>
<p>Open C_EMPLOYE ; -- ouverture du curseur<br />
   Loop -- boucle sur les lignes<br />
     Fetch C_EMPLOYE Into num_emp, nom_emp, prenom_emp;<br />
          dbms_output.put_line( 'Employé ' || To_char(num) || ' ' || nom || ' ' || prenom) ;<br />
     End loop ;<br />
     CLOSE C_EMPLOYE<br />
END;</code></p>
<p><i>Exemple de curseur implicite</i></p>
<p><code>DECLARE<br />
   -- Déclaration des variables<br />
BEGIN</p>
<p>FOR row IN (SELECT num_emp, nom_emp, prenom_emp FROM employes)<br />
LOOP<br />
  dbms_output.put_line( 'Employé ' || To_char(row.num) || ' ' || row.nom || ' ' || row.prenom) ;<br />
END LOOP;</p>
<p>END;</code></p>
<p><a href="http://sharethis.com/item?publisher=7b829c6f-b726-4687-8b67-8a213e6bef30&title=Comparaison+PL+SQL+%2F+Proc%C3%A9dures+MySql&url=http%3A%2F%2Fblog4j.free.fr%2Findex.php%2F2023%2F11%2F11%2Fcomparaison-pl-sql-procedures-mysql%2F">ShareThis</a></p>]]></content:encoded>
			<wfw:commentRss>http://blog4j.free.fr/index.php/2023/11/11/comparaison-pl-sql-procedures-mysql/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Installer PHP sur Glassfish avec Quercus</title>
		<link>http://blog4j.free.fr/index.php/2008/03/24/installer-php-sur-glassfish-avec-quercus/</link>
		<comments>http://blog4j.free.fr/index.php/2008/03/24/installer-php-sur-glassfish-avec-quercus/#comments</comments>
		<pubDate>Mon, 24 Mar 2008 12:27:17 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Glassfish]]></category>
		<category><![CDATA[Java EE]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[php sur glassfish]]></category>
		<category><![CDATA[php sur serveur java]]></category>
		<category><![CDATA[quercus]]></category>

		<guid isPermaLink="false">http://blog4j.free.fr/index.php/2008/03/24/installer-php-sur-glassfish-avec-quercus/</guid>
		<description><![CDATA[Quercus est une implémentation de PHP 5 en Java. Cette librairie permet donc d&#8217;utiliser du PHP sur n&#8217;importe quel serveur d&#8217;application Java. Voici comment l&#8217;installer et l&#8217;utiliser :
Il faut tout d&#8217;abord télécharger les .jar de Quercus (disponibles ici) .
Une fois téléchargés, il faut les inclure dans le dossier lib du domaine du serveur glassfish  [...]

<script type="text/javascript">
SHARETHIS.addEntry({
    title: "Installer PHP sur Glassfish avec Quercus",
    url: "http://blog4j.free.fr/index.php/2008/03/24/installer-php-sur-glassfish-avec-quercus/"
});
</script>
    ]]></description>
			<content:encoded><![CDATA[<p><a href="http://quercus.caucho.com/" title="PHP sur Glassfish avec Quercus" rel="nofollow">Quercus</a> est <strong>une implémentation de PHP 5 en Java</strong>. Cette librairie permet donc d&#8217;<strong>utiliser du PHP sur n&#8217;importe quel serveur d&#8217;application Java</strong>. Voici comment l&#8217;installer et l&#8217;utiliser :</p>
<p>Il faut tout d&#8217;abord <strong>télécharger les .jar de Quercus</strong> (disponibles <a href="http://blog.jdevelop.eu/downloads/glassfishphp/quercus.zip" rel="nofollow" title="PHP sur Glassfish avec Quercus">ici</a>) .</p>
<p>Une fois téléchargés, il faut <strong>les inclure dans le dossier lib du domaine du serveur glassfish</strong>  (par exemple dans le dossier [glassfish_home]/domains/domain1/lib/).</p>
<p>Il suffit ensuite d&#8217;<strong>implémenter la servlet de Quercus dans le fichier web.xml de l&#8217;application et d&#8217;en définir le mapping</strong>. Par exemple pour mapper toutes les pages en .php :</p>

<div class="wp_syntax"><div class="code"><pre class="xml">&nbsp;
<span style="color: #009900;"><span style="font-weight: bold; color: black;">&lt;servlet-name<span style="font-weight: bold; color: black;">&gt;</span></span></span>Quercus Servlet<span style="color: #009900;"><span style="font-weight: bold; color: black;">&lt;/servlet-name<span style="font-weight: bold; color: black;">&gt;</span></span></span>
  <span style="color: #009900;"><span style="font-weight: bold; color: black;">&lt;servlet-class<span style="font-weight: bold; color: black;">&gt;</span></span></span>com.caucho.quercus.servlet.QuercusServlet<span style="color: #009900;"><span style="font-weight: bold; color: black;">&lt;/servlet-class<span style="font-weight: bold; color: black;">&gt;</span></span></span>
&nbsp;
<span style="color: #009900;"><span style="font-weight: bold; color: black;">&lt;servlet-mapping<span style="font-weight: bold; color: black;">&gt;</span></span></span>
  <span style="color: #009900;"><span style="font-weight: bold; color: black;">&lt;servlet-name<span style="font-weight: bold; color: black;">&gt;</span></span></span>Quercus Servlet<span style="color: #009900;"><span style="font-weight: bold; color: black;">&lt;/servlet-name<span style="font-weight: bold; color: black;">&gt;</span></span></span>
<span style="color: #009900;"><span style="font-weight: bold; color: black;">&lt;url-pattern<span style="font-weight: bold; color: black;">&gt;</span></span></span>*.php<span style="color: #009900;"><span style="font-weight: bold; color: black;">&lt;/url-pattern<span style="font-weight: bold; color: black;">&gt;</span></span></span> 
&nbsp;
<span style="color: #009900;"><span style="font-weight: bold; color: black;">&lt;/servlet-mapping<span style="font-weight: bold; color: black;">&gt;</span></span></span></pre></div></div>

<p>On peut maintenant créer une page PHP et l&#8217;inclure dans le répertoire contenant les pages web de l&#8217;application. Une fois le .war de l&#8217;appli déployé, la page PHP sera disponible sur le serveur Glassfish !</p>
<p><a href="http://sharethis.com/item?publisher=7b829c6f-b726-4687-8b67-8a213e6bef30&title=Installer+PHP+sur+Glassfish+avec+Quercus&url=http%3A%2F%2Fblog4j.free.fr%2Findex.php%2F2008%2F03%2F24%2Finstaller-php-sur-glassfish-avec-quercus%2F">ShareThis</a></p>]]></content:encoded>
			<wfw:commentRss>http://blog4j.free.fr/index.php/2008/03/24/installer-php-sur-glassfish-avec-quercus/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>[Glassfish] Les &#171;&#160;alternate docroot&#160;&#187;</title>
		<link>http://blog4j.free.fr/index.php/2008/02/12/glassfish-les-alternate-docroot/</link>
		<comments>http://blog4j.free.fr/index.php/2008/02/12/glassfish-les-alternate-docroot/#comments</comments>
		<pubDate>Tue, 12 Feb 2008 17:16:22 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Glassfish]]></category>
		<category><![CDATA[JSF]]></category>
		<category><![CDATA[Java EE]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[glassfish alternate docroot]]></category>

		<guid isPermaLink="false">http://blog4j.free.fr/index.php/2008/02/12/glassfish-les-alternate-docroot/</guid>
		<description><![CDATA[Un &#171;&#160;alternate docroot&#160;&#187; permet de mapper un répertoire physique du serveur à une url.
Voici  un exemple concret qui permettra de mieux comprendre l&#8217;utilité de cette fonctionalité de Glassfish :
Un site dispose d&#8217;une section d&#8217;upload de photos. Ces photos sont enregistrées dans un répertoire /uploads de l&#8217;application.
Un gros problème se pose alors : une fois [...]

<script type="text/javascript">
SHARETHIS.addEntry({
    title: "[Glassfish] Les &#171;&#160;alternate docroot&#160;&#187;",
    url: "http://blog4j.free.fr/index.php/2008/02/12/glassfish-les-alternate-docroot/"
});
</script>
    ]]></description>
			<content:encoded><![CDATA[<p>Un &laquo;&nbsp;<b>alternate docroot</b>&nbsp;&raquo; permet de mapper un répertoire physique du serveur à une url.<br />
Voici  un exemple concret qui permettra de mieux comprendre l&#8217;utilité de cette fonctionalité de <b>Glassfish</b> :</p>
<p>Un site dispose d&#8217;une section d&#8217;upload de photos. Ces photos sont enregistrées dans un répertoire /uploads de l&#8217;application.<br />
Un gros problème se pose alors : une fois  que l&#8217;on redéploie l&#8217;application, le contenu du répertoire /uploads est vidé puisque les photos ne seront plus présentes dans le .war de l&#8217;application.<br />
La solution à ce problème est donc les <b>alternate docroot</b>.</p>
<p>On va pouvoir, dans le fichier sun-web.xml, définir un répertoire externe à l&#8217;application où l&#8217;on stockera les photos et y mapper une url. Ainsi, si on déclare dans notre sun-web.xml :</p>

<div class="wp_syntax"><div class="code"><pre class="xml"><span style="color: #009900;"><span style="font-weight: bold; color: black;">&lt;property</span> <span style="color: #000066;">name</span>=<span style="color: #ff0000;">&quot;alternatedocroot_1&quot;</span> 
  <span style="color: #000066;">value</span>=<span style="color: #ff0000;">&quot;from=/uploads/*
  dir=/home/&quot;</span><span style="font-weight: bold; color: black;">&gt;</span></span>
<span style="color: #009900;"><span style="font-weight: bold; color: black;">&lt;/property<span style="font-weight: bold; color: black;">&gt;</span></span></span></pre></div></div>

<p><b>Glassfish</b> ira chercher toutes les photos qui auront l&#8217;url http://www.monSite.com/uploads/maPhoto.png dans le dossier /home/uploads/ du serveur.</p>
<p>A noter qu&#8217;il est possible de définir plusieurs <b>alternate docroot</b>, il faudra alors les déclarer sous la forme :</p>

<div class="wp_syntax"><div class="code"><pre class="xml"><span style="color: #009900;"><span style="font-weight: bold; color: black;">&lt;property</span> <span style="color: #000066;">name</span>=<span style="color: #ff0000;">&quot;alternatedocroot_1&quot;</span> <span style="color: #000066;">value</span>=<span style="color: #ff0000;">&quot;...&quot;</span><span style="font-weight: bold; color: black;">&gt;</span></span><span style="color: #009900;"><span style="font-weight: bold; color: black;">&lt;/property<span style="font-weight: bold; color: black;">&gt;</span></span></span>
<span style="color: #009900;"><span style="font-weight: bold; color: black;">&lt;property</span> <span style="color: #000066;">name</span>=<span style="color: #ff0000;">&quot;alternatedocroot_2&quot;</span> <span style="color: #000066;">value</span>=<span style="color: #ff0000;">&quot;...&quot;</span><span style="font-weight: bold; color: black;">&gt;</span></span><span style="color: #009900;"><span style="font-weight: bold; color: black;">&lt;/property<span style="font-weight: bold; color: black;">&gt;</span></span></span>
<span style="color: #009900;"><span style="font-weight: bold; color: black;">&lt;property</span> <span style="color: #000066;">name</span>=<span style="color: #ff0000;">&quot;alternatedocroot_3&quot;</span> <span style="color: #000066;">value</span>=<span style="color: #ff0000;">&quot;...&quot;</span><span style="font-weight: bold; color: black;">&gt;</span></span><span style="color: #009900;"><span style="font-weight: bold; color: black;">&lt;/property<span style="font-weight: bold; color: black;">&gt;</span></span></span></pre></div></div>

<p><a href="http://sharethis.com/item?publisher=7b829c6f-b726-4687-8b67-8a213e6bef30&title=%5BGlassfish%5D+Les+%26laquo%3B%26nbsp%3Balternate+docroot%26nbsp%3B%26raquo%3B&url=http%3A%2F%2Fblog4j.free.fr%2Findex.php%2F2008%2F02%2F12%2Fglassfish-les-alternate-docroot%2F">ShareThis</a></p>]]></content:encoded>
			<wfw:commentRss>http://blog4j.free.fr/index.php/2008/02/12/glassfish-les-alternate-docroot/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
