Récupérer valeurs PDO

Fermé
Brandon1993 Messages postés 15 Date d'inscription samedi 16 juin 2012 Statut Membre Dernière intervention 8 juillet 2015 - 18 janv. 2015 à 15:06
Brandon1993 Messages postés 15 Date d'inscription samedi 16 juin 2012 Statut Membre Dernière intervention 8 juillet 2015 - 20 janv. 2015 à 16:49
Bonjour,

Je tente d'apprendre PDO/POO car je remarque l'utilisation fréquente de cette programmation.
J'ai donc mis en place un système de panier, sur base d'un tuto, et je voudrai aller plus loin que le système établi.

De niveau simple, j'en ai conscience, mais je débute comme tout personne qui a dû commencer par le commencement.

Je souhaiterai pour commencer pouvoir extraire des informations.

db.class.php
<?php 
class DB{

private $host = 'localhost';
private $username = 'root';
private $password = '';
private $database = 'essai';
private $db;

public function __construct($host = null, $username = null, $password = null, $database = null){
	if($host != null){
		$this->host = $host;
		$this->username = $username;
		$this->password = $password;
		$this->database = $database;
	}
	try{
	$this->db = new PDO('mysql:host='.$this->host.';dbname='.$this->database, $this->username,
	$this->password, array(PDO::MYSQL_ATTR_INIT_COMMAND => 'SET NAMES UTF8',
						   PDO::ATTR_ERRMODE => PDO::ERRMODE_WARNING
						   ));
}catch(PDOException $e){
die('Impossible de se connecter a la base de donnée');
}
	}
	
public function query($sql, $data = array()){
	$req=$this->db->prepare($sql);
	$req->execute($data); 
	return $req->fetchAll(PDO::FETCH_OBJ);
}		
}
?>


Dans un autre fichier, j'ai inclus au début

require 'db.class.php';
$DB = new DB('');


Et puis j'ai tenté ...

$sql = "SELECT * FROM products";
$req = $DB->query($sql);
$d = $req->fetch();
echo $d;


J'ai également fait d'autres essais, mais je ne suis pas parvenu à obtenir mes informations.
Quelqu'un aurait une petite idée ?

1 réponse

jordane45 Messages postés 38168 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 8 mai 2024 4 659
Modifié par jordane45 le 20/01/2015 à 18:30
Bonjour,


Ton code est correct (hormis quelques erreurs comme le fetch que tu fais...alors que tu en as déjà un dans ta fonction... et le ECHO qui ne peut afficher un array ....)

Dans ta class DB .. évite de nommer une fonction "query" alors que c'est utilisé pour une instruction en php......

A la limite :
public function sqlquery($sql, $data = array()){
 $req=$this->db->prepare($sql);
 $req->execute($data); 
 return $req->fetchAll(PDO::FETCH_OBJ);
}



require 'db.class.php';f
$DB = new DB();
$sql = "SELECT * FROM products";
$d= $DB->query($sql);
print_r($d); 


Par contre.. quitte à faire des requêtes... autant les mettre dans des CLASS (comme pour la class DB) ...

Par exemple.. une class products.class.php

class products Extends DB{

public function __construct(){
  parent::__construct();
}

public function getListProducts(){
  $sql = "SELECT * FROM products";
  $req = parent::sqlquery($sql);
  return $req;
}

}



et donc dans ta page principale tu aurais quelque chose du genre :
require 'db.class.php';
require 'products.class.php';

$product = new products();
$listProducts = $product ->getListProducts();

// Affichage :
Print_r($listProducts );





Cordialement,
Jordane
0
Brandon1993 Messages postés 15 Date d'inscription samedi 16 juin 2012 Statut Membre Dernière intervention 8 juillet 2015
Modifié par Brandon1993 le 20/01/2015 à 16:50
Merci pour cette réponse.
Si maintenant je veux récupérer une valeur de ma bdd, comment dois-je m'y prendre ?

require 'db.class.php';
$DB = new DB();
$sql = "SELECT * FROM products";
$req = $DB->query($sql);
print_r($req->name);


n'est pas correct ?
0