Jump to content

Module : Accéder à la base de données


Recommended Posts

Bonjour, je suis en train de développer mon premier module prestashop, j'ai réussi à créer les tables lors de l'installation du module, et supprimer les tables lors de la désinstallation.

Mais dans le module, je souhaiterai faire appel aux variables stockées dans mes tables.

 

J'ai essayé le mysql_fetch_array() et le mysql_fetch_row() pour récupérer des valeurs mais ça ne fonctionne pas.

En étudiant le code des autres, je vois bien que ces fonctions ne sont pas utilisées.

 

J'ai bien mis une include pour le config.inc.php, d'ailleurs j'ai réussi à faire une select avec :

 

$database=Db::getInstance()->ExecuteS('SELECT * FROM `' . _DB_PREFIX_ . 'monmodule` where `id`=' . $_GET['id']);

 

En mettant monmodule.php?id=xxx

Il renvoit bien la requête, le problème c'est que je ne peux pas exploiter les données du tableau.

Quelles sont les fonctions à utiliser?

Merci de votre aide.

Link to comment
Share on other sites

Bonjour, je suis en train de développer mon premier module prestashop, j'ai réussi à créer les tables lors de l'installation du module, et supprimer les tables lors de la désinstallation.

Mais dans le module, je souhaiterai faire appel aux variables stockées dans mes tables.

 

J'ai essayé le mysql_fetch_array() et le mysql_fetch_row() pour récupérer des valeurs mais ça ne fonctionne pas.

En étudiant le code des autres, je vois bien que ces fonctions ne sont pas utilisées.

 

J'ai bien mis une include pour le config.inc.php, d'ailleurs j'ai réussi à faire une select avec :

 

$database=Db::getInstance()->ExecuteS('SELECT * FROM `' . _DB_PREFIX_ . 'monmodule` where `id`=' . $_GET['id']);

 

En mettant monmodule.php?id=xxx

Il renvoit bien la requête, le problème c'est que je ne peux pas exploiter les données du tableau.

Quelles sont les fonctions à utiliser?

Merci de votre aide.

 

Hello,

A proprement parler ce que tu es en train de développer n'est pour l'heure pas un module mais s'apparente plus à un controller.

(ne serait-ce qu'en raison de ça "J'ai bien mis une include pour le config.inc.php")

 

Bref quoiqu'il en soit $result te retourne un tableau de résultats que tu peux parcourir assez facilement via un foreach, si tu attends plusieurs résultats :

 

foreach($result as $row)
{
  $champ1 = $row['monchamp'];
  $champ2 = $row['monautrechamp'];
....
}

 

Si tu n'attends qu'un seul résultat et ne veux pas faire de boucle, tu vas avec ExecuteS() devoir au moins adresser le premier résultat de cette manière :

 

$fieldval = $result[0]['monchamp'];

 

Si tu attends un seul résultat ne veux pas d'index sur une seule ligne , alors il sera préférable d'utiliser getRow plutôt que ExecuteS :

 

$result = Db->getInstance()->getRow($sql);

 

dans ce cas seulement tu aurais directement accès au champ : $result['mochamp']

 

mysql_fetch_array() et le mysql_fetch_row() ... sont sans effet car déja effectués par la classe Db ...

 

En espérant dans que ceci t'aidera

  • Like 1
Link to comment
Share on other sites

Le foreach, c'est exactement ça qui fonctionne, (j'avais testé avec une boucle while) merci de ton aide rapide. Bonne journée

EDIT : Par contre j'ai un souci, les résultats s'affichent de cette manière :

a,b

b,c

c

 

hmm là j'avoue ne pas comprendre ce que tu veux dire

Link to comment
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
×
×
  • Create New...