Fonction fetch() error

Résolu
blackbutterfly -  
blackbutterfly Messages postés 100 Statut Membre -
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. blackbutterfly
     
    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
    0
    1. ReDLoG
       
      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...
      0
    2. blackbutterfly
       
      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 )
      0
  2. blackbutterfly
     
    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 ?
    0
  3. blackbutterfly Messages postés 100 Statut Membre 1
     
    Bon il faut le mettre en PDO pour que la fonction fetch() fonctionne.
    0