<?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>Frédéric MARTINEZ - Freelance MAGENTO &#187; sql</title>
	<atom:link href="http://www.martinez-frederic.fr/tag/sql/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.martinez-frederic.fr</link>
	<description>Freelance Magento Toulouse - Entrepreneur</description>
	<lastBuildDate>Wed, 01 Feb 2012 11:54:21 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=</generator>
		<item>
		<title>Récupérer l&#8217;e-mail de contact</title>
		<link>http://www.martinez-frederic.fr/2011/12/19/recuperer-le-mail-de-contact/</link>
		<comments>http://www.martinez-frederic.fr/2011/12/19/recuperer-le-mail-de-contact/#comments</comments>
		<pubDate>Mon, 19 Dec 2011 12:38:46 +0000</pubDate>
		<dc:creator>Frédéric Martinez</dc:creator>
				<category><![CDATA[Magento]]></category>
		<category><![CDATA[email]]></category>
		<category><![CDATA[sql]]></category>
		<category><![CDATA[variable]]></category>
		<guid isPermaLink="false">http://martinez-frederic.fr/?p=359</guid>
		<description><![CDATA[Comment récupérer l&#8217;e-mail de contact général de votre boutique afin de l&#8217;utiliser en front-office dans vos pages contact / service après vente ? Les requêtes suivantes recherchent les informations se trouvant dans : Système &#62; Configuration &#62; Général &#62; Adresses email du magasin Contact Général Email : Mage::getStoreConfig('trans_email/ident_general/email') Nom : Mage::getStoreConfig('trans_email/ident_general/name') Représentant des ventes Email : Mage::getStoreConfig('trans_email/ident_sales/email') [...]]]></description>
			<content:encoded><![CDATA[<p>Comment récupérer l&#8217;e-mail de contact général de votre boutique afin de l&#8217;utiliser en front-office dans vos pages contact / service après vente ?</p>
<p><span id="more-359"></span></p>
<p>Les requêtes suivantes recherchent les informations se trouvant dans : <em>Système &gt; Configuration &gt; Général &gt; Adresses email du magasin</em></p>
<p><em><img class="alignnone size-full wp-image-761" title="Adresses-emails---Magento" src="http://www.martinez-frederic.fr/wp-content/uploads/2009/07/Adresses-emails-Magento1.jpg" alt="" width="514" height="609" /></em></p>
<p><em> </em></p>
<p><em> </em></p>
<h3>Contact Général</h3>
<p>Email :</p>
<pre class="brush: php; title: ;">Mage::getStoreConfig('trans_email/ident_general/email')</pre>
<p>Nom :</p>
<pre class="brush: php; title: ;">Mage::getStoreConfig('trans_email/ident_general/name')</pre>
<h3>Représentant des ventes</h3>
<p>Email :</p>
<pre class="brush: php; title: ;">Mage::getStoreConfig('trans_email/ident_sales/email')</pre>
<p>Nom :</p>
<pre class="brush: php; title: ;">Mage::getStoreConfig('trans_email/ident_sales/name')</pre>
<h3>Support client</h3>
<p>Email :</p>
<pre class="brush: php; title: ;">Mage::getStoreConfig('trans_email/ident_support/email')</pre>
<p>Nom :</p>
<pre class="brush: php; title: ;">Mage::getStoreConfig('trans_email/ident_support/name')</pre>
<h3>Email personnalisé 1</h3>
<p>Email :</p>
<pre class="brush: php; title: ;">Mage::getStoreConfig('trans_email/ident_custom1/email')</pre>
<p>Nom :</p>
<pre class="brush: php; title: ;">Mage::getStoreConfig('trans_email/ident_custom1/name')</pre>
<h3>email personnalisé 2</h3>
<p>Email :</p>
<pre class="brush: php; title: ;">Mage::getStoreConfig('trans_email/ident_custom2/email')</pre>
<p>Nom :</p>
<pre class="brush: php; title: ;">Mage::getStoreConfig('trans_email/ident_custom2/name')</pre>
]]></content:encoded>
			<wfw:commentRss>http://www.martinez-frederic.fr/2011/12/19/recuperer-le-mail-de-contact/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Export des clients invités ayant leur commande &#171;&#160;terminée&#160;&#187; sous Magento</title>
		<link>http://www.martinez-frederic.fr/2010/03/02/export-des-clients-invites-ayant-leur-commande-terminee-sous-magento/</link>
		<comments>http://www.martinez-frederic.fr/2010/03/02/export-des-clients-invites-ayant-leur-commande-terminee-sous-magento/#comments</comments>
		<pubDate>Tue, 02 Mar 2010 00:01:58 +0000</pubDate>
		<dc:creator>Frédéric Martinez</dc:creator>
				<category><![CDATA[Magento]]></category>
		<category><![CDATA[clients]]></category>
		<category><![CDATA[export]]></category>
		<category><![CDATA[guest']]></category>
		<category><![CDATA[sql]]></category>
		<guid isPermaLink="false">http://www.martinez-frederic.fr/?p=697</guid>
		<description><![CDATA[L&#8217;export des clients invités à des fins de mailing ou autre n&#8217;est pas possible en natif depuis l&#8217;interface de gestion des clients ou des commandes. Pour exporter simplement les clients il existe 3 méthodes : Récupération des clients via une requête SQL (exécution rapide / difficile à mettre en place) Récupération des clients via les [...]]]></description>
			<content:encoded><![CDATA[<p>L&#8217;export des clients invités à des fins de mailing ou autre n&#8217;est pas possible en natif depuis l&#8217;interface de gestion des clients ou des commandes.</p>
<p>Pour exporter simplement les clients il existe 3 méthodes :</p>
<ol>
<li><strong>Récupération des clients via une requête SQL (exécution rapide / difficile à mettre en place)</strong></li>
<li>Récupération des clients via les collections de Magento (exécution lente, facile à mettre en place)</li>
<li>Récupération des clients via les Web Services (exécution lente / difficile à mettre en place)</li>
</ol>
<p>Pourquoi via une requête SQL ? Car le serveur utilisé n&#8217;avait pas les ressources nécessaires pour traiter au delà des 2000 commandes. Le temps d&#8217;exécution maximum d&#8217;un script étant limité dans le php.ini inaccessible à cause d&#8217;un serveur dédié partagé. La requête SQL ne bronche pas, et encaisse les milliers de commandes en quelques secondes.</p>
<p>Dans nos cas, le script va balayer toutes les commandes passées et <strong>extraire les clients invités ayant leur commande &laquo;&nbsp;Terminée&nbsp;&raquo;</strong> (qui ne sont stockés que de cette façon en base de données, d&#8217;où le &laquo;&nbsp;invité&nbsp;&raquo;). Une fois les données récupérées, nous <strong>créons un fichier .CSV</strong> (<a href="http://www.martinez-frederic.fr/2010/03/02/utiliser-les-methodes-de-magento-dans-un-fichier-php/">via un fichier externe</a>, donc hors module Magento)<strong> <a href="http://www.martinez-frederic.fr/2010/03/01/detecter-si-ladministrateur-magento-est-connecte/">accessible uniquement aux administrateurs</a> </strong>du site.</p>
<p>En avant :</p>
<p><span id="more-697"></span></p>
<pre class="brush: php; title: ;">
&lt;?php
require_once 'app/Mage.php';
Mage::app('default');
umask(0);
Mage::getSingleton(&quot;core/session&quot;, array(&quot;name&quot; =&gt; &quot;adminhtml&quot;));
if( Mage::getSingleton(&quot;admin/session&quot;)-&gt;isLoggedIn() ):
header(&quot;Content-type: application/vnd.ms-excel&quot;);
header(&quot;Content-disposition: attachment; filename=\&quot;Export-Guests-Customers-&quot; . date('d/m/Y') . &quot;.csv\&quot;&quot;);
try{
$resource = Mage::getSingleton('core/resource');
$read= $resource-&gt;getConnection('core_read');
$userTable = $resource-&gt;getTableName('contact');
$select = $read-&gt;select()
-&gt;from(array('s2' =&gt; 'sales_flat_quote_address'))
-&gt;join(array('s1' =&gt; 'sales_flat_quote'), 's1.entity_id = s2.quote_id')
-&gt;join(array('s3' =&gt; 'sales_order'), 's3.increment_id = s1.reserved_order_id')
-&gt;join(array('s4' =&gt; 'sales_order_varchar'), 's4.entity_id = s3.entity_id')
-&gt;where('s1.customer_is_guest = 1')
-&gt;where('s2.address_type = \'billing\'')
-&gt;where('s4.attribute_id = 98')
-&gt;where('s4.value = \'complete\'')
;
$rows = $select-&gt;query()-&gt;fetchAll();
print(&quot;Numéro Commande;E-mail;Prénom;Nom;Civilite\n&quot;);
foreach( $rows as $row )
{
print( $row['reserved_order_id'] . ';' . $row['email'] . ';' . $row['firstname'] . ';' . $row['lastname'] . ';' . $row['suffix']);
print( &quot;\n&quot; );
}
}catch (Exception $e){
die($e-&gt;getMessage());
}
exit();
else:
header('location: /no-route');
endif;
?&gt;
</pre>
<p><strong>Note :</strong></p>
<p>L&#8217;attribut en varchar pour savoir si la commandé a été terminée &laquo;&nbsp;complete&nbsp;&raquo; est trouvée via l&#8217;identifiant de l&#8217;attribut (ici 98). Normalement, une jointure de plus aurait permis au script d&#8217;accéder à cet identifiant (via le nom de l&#8217;attribut). Cependant ce script étant spécifique au Magento en cours (1.2.*.*), il n&#8217;était pas nécessaire de pousser le vice à ce point. De plus je doute que l&#8217;identifiant de valeur de la commande soit différent suivant les versions de Magento.</p>
<p><strong>Amélioration :</strong></p>
<p>Ensuite il est possible d&#8217;automatiser cet export chaque semaine par exemple en lui assignant une tache CRON. Cependant il est nécessaire :</p>
<ul>
<li>d&#8217;enlever la détection de session administrateur</li>
<li>donc de déplacer le fichier hors de la visibilité d&#8217;un visiteur lambda (../)</li>
<li>de modifier le chemin vers Mage.php</li>
<li>de modifier le script pour créer un fichier .CSV (fopen / fputcsv / fclose) et non d&#8217;utiliser les sorties (header), et d&#8217;envoyer l&#8217;e-mail avec le fichier en pièce jointe</li>
</ul>
<div id="_mcePaste" style="overflow: hidden; position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px;">&lt;?php<br />
require_once &#8216;app/Mage.php&#8217;;<br />
Mage::app(&#8216;zappeal&#8217;);<br />
umask(0);<br />
Mage::getSingleton(&laquo;&nbsp;core/session&nbsp;&raquo;, array(&laquo;&nbsp;name&nbsp;&raquo; =&gt; &laquo;&nbsp;adminhtml&nbsp;&raquo;));<br />
if( Mage::getSingleton(&laquo;&nbsp;admin/session&nbsp;&raquo;)-&gt;isLoggedIn() ):<br />
header(&laquo;&nbsp;Content-type: application/vnd.ms-excel&nbsp;&raquo;);<br />
header(&laquo;&nbsp;Content-disposition: attachment; filename=\&nbsp;&raquo;Export-Guests-Customers-&nbsp;&raquo; . date(&#8216;d/m/Y&#8217;) . &laquo;&nbsp;.csv\&nbsp;&raquo;");try{<br />
$resource = Mage::getSingleton(&#8216;core/resource&#8217;);<br />
$read= $resource-&gt;getConnection(&#8216;core_read&#8217;);<br />
$userTable = $resource-&gt;getTableName(&#8216;contact&#8217;);</p>
<p>$select = $read-&gt;select()<br />
-&gt;from(array(&#8216;z2&#8242; =&gt; &#8216;zap_sales_flat_quote_address&#8217;))<br />
-&gt;join(array(&#8216;z1&#8242; =&gt; &#8216;zap_sales_flat_quote&#8217;), &#8216;z1.entity_id = z2.quote_id&#8217;)<br />
-&gt;join(array(&#8216;z3&#8242; =&gt; &#8216;zap_sales_order&#8217;), &#8216;z3.increment_id = z1.reserved_order_id&#8217;)<br />
-&gt;join(array(&#8216;z4&#8242; =&gt; &#8216;zap_sales_order_varchar&#8217;), &#8216;z4.entity_id = z3.entity_id&#8217;)<br />
-&gt;where(&#8216;z1.customer_is_guest = 1&#8242;)<br />
-&gt;where(&#8216;z2.address_type = \&#8217;billing\&nbsp;&raquo;)<br />
-&gt;where(&#8216;z4.attribute_id = 98&#8242;)<br />
-&gt;where(&#8216;z4.value = \&#8217;complete\&nbsp;&raquo;)<br />
;</p>
<p>$rows = $select-&gt;query()-&gt;fetchAll();</p>
<p>print(&laquo;&nbsp;Numéro Commande;E-mail;Prénom;Nom;Civilite\n&nbsp;&raquo;);</p>
<p>foreach( $rows as $row )<br />
{<br />
print( $row['reserved_order_id'] . &#8216;;&#8217; . $row['email'] . &#8216;;&#8217; . $row['firstname'] . &#8216;;&#8217; . $row['lastname'] . &#8216;;&#8217; . $row['suffix']);<br />
print( &laquo;&nbsp;\n&nbsp;&raquo; );<br />
}</p>
<p>}catch (Exception $e){<br />
die($e-&gt;getMessage());<br />
}</p>
<p>exit();<br />
else:<br />
header(&#8216;location: /no-route&#8217;);<br />
endif;<br />
?&gt;</p>
</div>
]]></content:encoded>
			<wfw:commentRss>http://www.martinez-frederic.fr/2010/03/02/export-des-clients-invites-ayant-leur-commande-terminee-sous-magento/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Supprimer une commande dans Magento</title>
		<link>http://www.martinez-frederic.fr/2010/03/01/supprimer-une-commande-dans-magento/</link>
		<comments>http://www.martinez-frederic.fr/2010/03/01/supprimer-une-commande-dans-magento/#comments</comments>
		<pubDate>Mon, 01 Mar 2010 18:34:34 +0000</pubDate>
		<dc:creator>Frédéric Martinez</dc:creator>
				<category><![CDATA[Magento]]></category>
		<category><![CDATA[commandes]]></category>
		<category><![CDATA[remize zéro]]></category>
		<category><![CDATA[sql]]></category>
		<guid isPermaLink="false">http://www.martinez-frederic.fr/?p=683</guid>
		<description><![CDATA[Note importante : Voir les commentaires de cet article pour supprimer les commandes sur les dernières versions de Magento. Magento permet d&#8217;annuler une commande, mais ne propose pas la possibilité de supprimer une commande qu&#8217;elle soit terminée ou non. Cela est utile pour supprimer les commandes de test sans pour autant supprimer toutes les commandes [...]]]></description>
			<content:encoded><![CDATA[<p>Note importante : Voir les commentaires de cet article pour supprimer les commandes sur les dernières versions de Magento.</p>
<p>Magento permet d&#8217;annuler une commande, mais ne propose pas la possibilité de <strong>supprimer </strong>une commande qu&#8217;elle soit terminée ou non. Cela est utile pour supprimer les commandes de test sans pour autant <a href="http://www.martinez-frederic.fr/2009/07/23/remise-a-zero-les-commandes-passes-dans-magento/">supprimer toutes les commandes de Magento</a>.</p>
<p>Pour cela direction la base de données afin d&#8217;agir directement sur celle-ci :</p>
<pre class="brush: sql; title: ;">
-- Renseigner votre numéro de commande ici
SET @increment_id = 100000025;
-- Récupère l'id de la commande en interne
SELECT @order_id := entity_id FROM sales_order WHERE increment_id = @increment_id;
-- Supprime la commande
DELETE FROM sales_order WHERE entity_id = @order_id;
-- Supprime tous les enregistrements en relation avec la commande
DELETE FROM sales_order_entity WHERE parent_id = @order_id;
-- Supprime les factures, remboursement, expéditions en relation avec la commande
DELETE s FROM sales_order_entity s
 JOIN sales_order_entity_int si on s.entity_id = si.entity_id
 JOIN eav_attribute a on si.attribute_id = a.attribute_id
 WHERE
 a.attribute_code = 'order_id'
 AND si.value = @order_id;
-- Supprime les enregistrements dans la tables des produits commandés
DELETE FROM sales_flat_order_item WHERE order_id=@order_id;
</pre>
<p>[Source : <a href="http://www.magexpert.com/2010/02/comment-supprimer-une-commande-terminee-dans-magento/">http://www.magexpert.com/2010/02/comment-supprimer-une-commande-terminee-dans-magento/</a>]</p>
]]></content:encoded>
			<wfw:commentRss>http://www.martinez-frederic.fr/2010/03/01/supprimer-une-commande-dans-magento/feed/</wfw:commentRss>
		<slash:comments>8</slash:comments>
		</item>
		<item>
		<title>Affichage des attributs et des libellés sous Magento</title>
		<link>http://www.martinez-frederic.fr/2009/11/17/affichage-des-attributs-et-des-libelles-sous-magento/</link>
		<comments>http://www.martinez-frederic.fr/2009/11/17/affichage-des-attributs-et-des-libelles-sous-magento/#comments</comments>
		<pubDate>Tue, 17 Nov 2009 17:08:50 +0000</pubDate>
		<dc:creator>Frédéric Martinez</dc:creator>
				<category><![CDATA[Magento]]></category>
		<category><![CDATA[attributs]]></category>
		<category><![CDATA[libelles]]></category>
		<category><![CDATA[sql]]></category>
		<guid isPermaLink="false">http://www.martinez-frederic.fr/?p=602</guid>
		<description><![CDATA[Pour afficher des attributs spécifiques sous Magento, soit on met l&#8217;attribut &#171;&#160;visible&#160;&#187; en back-office pour qu&#8217;il s&#8217;affiche dans le tableau de la fiche produit, soit on écrit dans le template list.phtml. Afficher les attributs avec une zone de texte Afficher les attributs avec une liste déroulante Afficher les attributs avec une sélection multiple Afficher le [...]]]></description>
			<content:encoded><![CDATA[<p>Pour afficher des attributs spécifiques sous Magento, soit on met l&#8217;attribut &laquo;&nbsp;visible&nbsp;&raquo; en back-office pour qu&#8217;il s&#8217;affiche dans le tableau de la fiche produit, soit on écrit dans le template list.phtml.</p>
<ol>
<li>Afficher les attributs avec une zone de texte</li>
<li>Afficher les attributs avec une liste déroulante</li>
<li>Afficher les attributs avec une sélection multiple</li>
<li>Afficher le libellé des attributs
<ol>
<li>Libellé Admin de l&#8217;attribut</li>
<li>Libellé Front de l&#8217;attribut</li>
</ol>
</li>
<li>Autres
<ol>
<li>Afficher les attributs avec une méthode &laquo;&nbsp;passe partout&nbsp;&raquo;</li>
<li>Afficher les attributs avec une liste déroulante dans un listing de catégorie n&#8217;ayant pas <em>chargé</em> l&#8217;attribut</li>
<li>Listing de différentes méthodes passe-partout</li>
</ol>
</li>
</ol>
<p><span id="more-602"></span></p>
<h2>Etape 1 : Afficher les attributs avec une zone de texte</h2>
<p>Vous pouvez donc afficher la référence du produit à l&#8217;endroit voulu.</p>
<pre class="brush: php; title: ;">$_product-&gt;getData('sku')</pre>
<h2>Etape 2 : Afficher les attributs avec une liste déroulante</h2>
<p>Instruction pratique pour afficher les attributs ayant une liste déroulante comme les fabricants par exemple.</p>
<pre class="brush: php; title: ;">$_product-&gt;getAttributeText('manufacturer')</pre>
<h2>Etape 3 : Afficher les attributs avec une sélection multiple</h2>
<p>Confronté récemment à un attribut ayant une sélection multiple (pour des labels biologiques par exemple), il faut effectuer une boucle sur l&#8217;attribut :</p>
<pre class="brush: php; title: ;">&lt;?php foreach($_product-&gt;getAttributeText('attribute_id') as $label): ?&gt;
&lt;?php echo $label ?&gt;
&lt;?php endforeach ?&gt;
</pre>
<h2>Etape 4 : Afficher le libellé des attributs</h2>
<p>Dans l&#8217;administration, un attribut est composé de son code, de sa valeur admin, et de ses valeurs de front suivant la vue (et donc normalement suivant la langue). Pour les exemples suivant :</p>
<ul>
<li>Code : short_description</li>
<li>Admin : Mini Description</li>
<li>Front (defaut fr) : Description courte</li>
<li>Front (eng) : Short Description</li>
</ul>
<p>Cette instruction permet d&#8217;afficher le titre (le libellé) de l&#8217;attribut depuis la fiche produit</p>
<h3>1) Libellé Admin de l&#8217;attribut</h3>
<p>Mini description :</p>
<pre class="brush: php; title: ;">$_product-&gt;getResource()
				-&gt;getAttribute('short_description')
				-&gt;getFrontend()
				-&gt;getLabel($_product)</pre>
<h3>2) Libellé Front de l&#8217;attribut</h3>
<p>Affiche : Description courte (ou Short Description si la vue est en anglais)</p>
<pre class="brush: php; title: ;">$_product-&gt;getResource()
				-&gt;getAttribute('short_description')
				-&gt;getStoreLabel()</pre>
<p>Depuis n&#8217;importe où :</p>
<pre class="brush: php; title: ;">Mage::getModel('eav/config')
			-&gt;getAttribute('catalog_product', 'attribute_id')
			// pour le libellé Admin
			-&gt;getFrontend()-&gt;getLabel()
			// pour le libellé Front
			-&gt;getStoreLabel()
</pre>
<h2>Etape 5 : Autres</h2>
<h3>1) Afficher les attributs simples avec une méthode &laquo;&nbsp;passe partout&nbsp;&raquo;</h3>
<p>Voici une instruction permettant aussi d&#8217;afficher un attribut simple</p>
<pre class="brush: php; title: ;">$_product-&gt;getResource()
				-&gt;getAttribute('club_type')
				-&gt;getFrontend()
				-&gt;getValue($_product)</pre>
<h3>2) Afficher les attributs avec une liste déroulante dans un listing de catégorie n&#8217;ayant pas <em>chargé</em> l&#8217;attribut</h3>
<p>Pour afficher des stickers (-10% / -20% / &#8230;) dans les listings des produits, je me sers de cette méthode beaucoup plus propre pour afficher les attributs personnels (ou en liste déroulante) <a href="http://www.jguiss.com/2009/06/customiser-la-liste-des-produits-sur-magento/">dans cet article.</a></p>
<h3>3) Listing de différentes méthodes passe-partout</h3>
<p>Pour compléter cet article, voici un <a href="http://www.sharpdotinc.com/mdost/2009/04/06/magento-getting-product-attributes-values-and-labels/">lien assez intéressant</a> permettant d&#8217;afficher tous les attributs automatiquement, etc.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.martinez-frederic.fr/2009/11/17/affichage-des-attributs-et-des-libelles-sous-magento/feed/</wfw:commentRss>
		<slash:comments>16</slash:comments>
		</item>
		<item>
		<title>Requetes SQL sous Magento</title>
		<link>http://www.martinez-frederic.fr/2009/06/23/requetes-sql-sous-magento/</link>
		<comments>http://www.martinez-frederic.fr/2009/06/23/requetes-sql-sous-magento/#comments</comments>
		<pubDate>Tue, 23 Jun 2009 08:54:06 +0000</pubDate>
		<dc:creator>Frédéric Martinez</dc:creator>
				<category><![CDATA[Magento]]></category>
		<category><![CDATA[requêtes]]></category>
		<category><![CDATA[Select]]></category>
		<category><![CDATA[sql]]></category>
		<guid isPermaLink="false">http://martinez-frederic.fr/developpement/?p=162</guid>
		<description><![CDATA[Nous avons besoin parfois d&#8217;exécuter une requête SQL pour récupérer des champs de tables personnelles. Attention, il ne faut pas non plus re créer la roue, par exemple, si on veut récupérer le nom d&#8217;un produit sur la page produit, on ne fait pas une requête SQL, on se sert de $_product-&#62;getData['name']; par exemple. Les [...]]]></description>
			<content:encoded><![CDATA[<p>Nous avons besoin parfois d&#8217;exécuter une requête SQL pour récupérer des champs de tables personnelles.</p>
<p>Attention, il ne faut pas non plus re créer la roue, par exemple, si on veut  récupérer le nom d&#8217;un produit sur la page produit, on ne fait pas une requête SQL, on se sert de $_product-&gt;getData['name']; par exemple.</p>
<p>Les structures des requêtes sont exactement comme dans la documentation de <a href="http://framework.zend.com/manual/fr/zend.db.select.html">Zend Framework</a>.</p>
<p><span id="more-162"></span>Pour récupérer un champ &laquo;&nbsp;id&nbsp;&raquo; dans une table &laquo;&nbsp;joueur&nbsp;&raquo; ayant comme prénom &laquo;&nbsp;John&nbsp;&raquo;, et comme nom &laquo;&nbsp;Doe&nbsp;&raquo; dans notre base de données :</p>
<pre class="brush: php; title: ;">
$resource = Mage::getSingleton('core/resource');
$read = $resource-&gt;getConnection('core_read');
$userTable = $resource-&gt;getTableName('joueur');
$prenom = 'John';
$nom = 'Doe';
$select = $read-&gt;select()
	-&gt;from('joueur',array('id'))
	-&gt;where('prenom = ?', $prenom)
	-&gt;where('nom = ?', $nom);
$retour_joueur = $select-&gt;query();
$row_joueur = $retour_joueur-&gt;fetchAll();
echo $row_joueur[0]['id']; // Affiche l'ID du joueur John Doe
</pre>
<p>Solution A Be Pas Faire : Ouvrir une connexion nous même pour repartir sur des fonctions PHP basiques</p>
<pre class="brush: php; title: ;">
// Chargement du fichier contenant les mots de passes
$xml = simplexml_load_file('../../../app/etc/local.xml');
// On parse le fichier pour extraire les infos
 $host = $xml-&gt;global-&gt;resources-&gt;default_setup-&gt;connection-&gt;host;
 $username = $xml-&gt;global-&gt;resources-&gt;default_setup-&gt;connection-&gt;username;
 $password = $xml-&gt;global-&gt;resources-&gt;default_setup-&gt;connection-&gt;password;
 $dbname = $xml-&gt;global-&gt;resources-&gt;default_setup-&gt;connection-&gt;dbname;
// Connexion BDD
 $db = mysql_connect($host, $username, $password);
 mysql_select_db($dbname, $db);
// Requete SQL
 $result = mysql_fetch_assoc(mysql_query(
 &quot;SELECT * FROM core_config_data WHERE path = 'blabla'&quot;));
// Etc
</pre>
<p>Cependant, il est toujours préférable dans Magento de rendre une table compatible avec les Collections de Magento et donc de gérer vos données via un module personnalisé.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.martinez-frederic.fr/2009/06/23/requetes-sql-sous-magento/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
	</channel>
</rss>
<!-- WP Super Cache is installed but broken. The path to wp-cache-phase1.php in wp-content/advanced-cache.php must be fixed! -->
