Fonction fetch() error

Résolu
Bonjour,

Voici mon problème :
Sur une page html, je dois générer automatiquement des lignes provenant de ma base de données. Ainsi, je fais le code suivant pour pouvoir les récupérer :

include ("classes/MProduit.class.php");
$produit = new MProduit();
$List_Presta = $produit->Get_MP_info();
$nb = sizeof($List_Presta['CODE']);
echo ($produit['ID_PRESTA']);

Comme vous le voyez, j'appelle la fonction Get_MP-info contenu dans MPrduit.class.php. Cette fonction ressemble à ça:

public function Get_MP_info ()
{
define ('SERVEUR', 'localhost');
define ('USER', 'root@localhost');
define ('Paswd', '');
define ('db', 'test');

$cnx = mysql_connect(SERVEUR, USER,Paswd, db) ;
$DB = mysql_select_db(db) ;

$sql = "SELECT ID_PRESTA, CODE, LIBELLE, PVHT, TVA, PVTTC
FROM PRESTATION";

$res = mysql_query($sql, $cnx) or die (mysql_error());
$VAL = mysql_fetch_array($res) or die (mysql_error());
return $VAL;
}

et pourtant j'obtiens cette erreur :

Fatal error: Cannot use object of type MProduit as array pour cette ligne : echo ($produit['ID_PRESTA']);

J'ai suivi un tuto, car travaillant habituellement sur oracle, mysql n'est pas mon fort. Si vous avez une idée de pourquoi cela ne fonctionne pas ou une méthode plus simple ( je tiens à garder la fonction en dehors du fichier contenant la page) je suis preneur.

Merci de l'attention que vous portez à mon problème. Cordialement

3 réponses

  1. Bon il faut le mettre en PDO pour que la fonction fetch() fonctionne.
    1. Je crois que soit le pc me troll soit la BD mais, je suis certain qu'il y a quelque chose qui n'est pas clair :/
      Étant donné que je sort du sujet, car le fetch() ne me pose plus de problème, dois-je ouvrir un autre topic ou on peut étendre celui-ci ?
      1. Problème en cours de résolution. Modification apporté :
        {
        define ('USER', 'root@localhost');
        define ('Paswd', '');

        $dbh = new PDO('mysql:host=localhost;dbname=test', USER, Paswd);
        //$DB = mysql_select_db(db) ;

        $sql = "SELECT ID_PRESTA, CODE, LIBELLE, PVHT, TVA, PVTTC
        FROM PRESTATION";

        $res = $dbh->query($sql) or die (mysql_error());
        $VAL = res->fetch();
        return $VAL;
        }
        c'est le $VAL = res->fetch() qui me pose problème maintenant : unexpected T_OBJECT_OPERATOR
        1. Je ne suis pas très prog orienté objet mais plus procédural mais j'ai comme l'impression qu'il manque le signe $ devant res :
          $VAL = $res->fetch();

          Sinon je ne vois pas ce qui cloche sur cette ligne...
        2. en effet :/ ( oublie à la c*** ) Voilà les changements fait : Fonction Get_Mp_info
          define ('USER', 'root@localhost');
          define ('Paswd', '');

          $pdo = new PDO('mysql:host=localhost;dbname=test', USER, Paswd);
          //$DB = mysql_select_db(db) ;

          $sql = "SELECT ID_PRESTA, CODE, LIBELLE, PVHT, TVA, PVTTC
          FROM PRESTATION";

          $stmt = $pdo->prepare($sql);
          $rs = $stmt->fetchAll(PDO::FETCH_ASSOC);
          $stmt->closeCursor();
          return $rs;
          }

          Maintenant j'ai ces problèmes sur ma page où je dois générer les tuples :
          Pour $nb = sizeof($List_Presta['CODE']); mysql me renvoi :
          Undefined index: CODE
          Pour echo ($produit['ID_PRESTA']); mysql me renvoi :
          Cannot use object of type MProduit as array

          A la demande de Forbec ( m'aidant en ce moment) j'ai fait un print_r($rs) et celui-ci me renvoi array empty alors qu'il y a bien des tuples dans ma base ( j'ai refais le test )