Fonction fetch() error

Résolu/Fermé
blackbutterfly - Modifié par blackbutterfly le 17/04/2012 à 11:20
blackbutterfly Messages postés 95 Date d'inscription mardi 17 avril 2012 Statut Membre Dernière intervention 29 mai 2012 - 17 avril 2012 à 13:26
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

blackbutterfly
17 avril 2012 à 11:48
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
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
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
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
blackbutterfly Messages postés 95 Date d'inscription mardi 17 avril 2012 Statut Membre Dernière intervention 29 mai 2012 1
17 avril 2012 à 13:26
Bon il faut le mettre en PDO pour que la fonction fetch() fonctionne.
0