Requetes SQL sous Magento

Dans: Magento

23 juin 2009

Nous avons besoin parfois d’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’un produit sur la page produit, on ne fait pas une requête SQL, on se sert de $_product->getData['name']; par exemple.

Les structures des requêtes sont exactement comme dans la documentation de Zend Framework.

Pour récupérer un champ « id » dans une table « joueur » ayant comme prénom « John », et comme nom « Doe » dans notre base de données :

$resource = Mage::getSingleton('core/resource');
$read = $resource->getConnection('core_read');
$userTable = $resource->getTableName('joueur');
$prenom = 'John';
$nom = 'Doe';
$select = $read->select()
	->from('joueur',array('id'))
	->where('prenom = ?', $prenom)
	->where('nom = ?', $nom);
$retour_joueur = $select->query();
$row_joueur = $retour_joueur->fetchAll();
echo $row_joueur[0]['id']; // Affiche l'ID du joueur John Doe

Solution A Be Pas Faire : Ouvrir une connexion nous même pour repartir sur des fonctions PHP basiques

// 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->global->resources->default_setup->connection->host;
 $username = $xml->global->resources->default_setup->connection->username;
 $password = $xml->global->resources->default_setup->connection->password;
 $dbname = $xml->global->resources->default_setup->connection->dbname;
// Connexion BDD
 $db = mysql_connect($host, $username, $password);
 mysql_select_db($dbname, $db);
// Requete SQL
 $result = mysql_fetch_assoc(mysql_query(
 "SELECT * FROM core_config_data WHERE path = 'blabla'"));
// Etc

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é.

2 Commentaires pour Requetes SQL sous Magento

Avatar

Récupérer l’e-mail de contact - Frédéric Martinez

juillet 29th, 2009 à 14 h 38 min

[...] Astuce : Pour trouver les autres adresses e-mails (Système > Configuration > Général > Adresses mail du magasin), modifier votre adresse e-mail avec un terme facilement trouvable en base de données : zeserseredsr@ersedr.com par exemple. Vous serez alors où faire votre requête SQL. [...]

Avatar

Magento et les requêtes SQL | my-forge.eu

février 28th, 2010 à 1 h 51 min

[...] : http://www.martinez-frederic.fr/2009/06/23/requetes-sql-sous-magento/ Tags: Magento, Programmation, Script Share this [...]

Formulaire pour Commenter

Si vous en avez besoin, entourez votre code :

PHP : [php]echo $variable[/php]
XML : [xml]<default></default>[/xml]

Je m'appelle Frédéric Martinez.

Je suis Freelance Magento et anciennement étudiant en Master MIAGE à Toulouse.

Ce site présente mon CV ainsi que mes réalisations professionnelles, personnelles et universitaires.

rss_32 twitter_32 Magento

  • alexandre: Merci, c'est exactement ce dont j'avais besoin ! [...]
  • Frédéric Martinez: De base, non ce n'est pas possible. Cependant, cela doit se jouer dans les configurations JS de cal [...]
  • Peter: le tuto est génial, il est tres utile pour les débutants comme moi. Mais j'ai une petite que [...]
  • Frédéric Martinez: @martin : Non cela ne marche pas avec un Magento 1.6.2.0 par exemple car la table sales_order n'exis [...]
  • martin: Bonjour, ce code marche -t-il toujours sur les nouvelles version de magento ? merci [...]