Bonsoir,
Dans ton fichier Models.php à la ligne 60 tu mets un echo d'une array ce qui ne va pas,
tu essaies avec :
var_dump( $requete->errorInfo() );
Bonsoir,
j'ai voulu faire le tutoriel "POO et Création de models", mais en utilisent la PDO le problème
lorsque j'affiche le résultat de la requête il m'affiche un tableau vide ( Array())
Voilà le code:
index.php
<?php
require_once('Core/Core.php');
$Lire = new Models();
$Lire->read();
echo "Titre = ".$Lire->titre;
echo '<br>';
$find = new Models();
$sql = array(
"table" => "testemiam",
);
echo '<pre>';
print_r($sql);
echo '</pre>';
echo '<br>';
$tableau = $find->find($sql);
echo '<pre>';
var_dump($tableau);
echo '</pre>';
print_r($tableau);
?>
models.php
<?php
/*
* To change this template, choose Tools | Templates
* and open the template in the editor.
*/
/**
* Description of Models
*
* @author Julien
*/
class Models extends Bdd{
private $dbbconnexion;
public $table_Models;
public function read(){
$this->dbbconnexion = self::getInstance();
$requete= $this->dbbconnexion->prepare("SELECT * FROM testemiam");
$requete->execute();
$resultat = $requete->fetch();
foreach($resultat as $k=>$v) {
$this->$k =$v;
}
}
public function save(){
}
public function find($data=array()){
$this->dbbconnexion = self::getInstance();
if(!isset($data"conditions"]))
{
$data"conditions"] = "1=1";
}
if(!isset($data"fields"]))
{
$data"fields"] = "*";
}
if(isset($data"limit"]))
{
$data"limit"] = "LIMIT ".$data"limit"];
}
else
{
$data"limit"] = "";
}
if(!isset($data"order"]))
{
$data"order"] = "id DESC";
}
if(isset($data"table"]))
{
$requete= $this->dbbconnexion->prepare("SELECT :fields FROM :table WHERE :conditions ORDER BY :order :limit");
if($requete->execute($data) == false)
{
echo "Erreur l'envoie a echoue";
echo "<br/>";
echo $requete->errorInfo();
}
$d =array();
while ($resultat = $requete->fetch())
{
$d] = $resultat;
}
return $d;
}
else
{
$data"table"] = $this->table_Models;
$requete= $this->dbbconnexion->prepare("SELECT :fields FROM :table WHERE :conditions ORDER BY :order :limit");
$requete->execute($data);
$d =array();
while ($resultat = $requete->fetch())
{
$d] = $resultat;
}
return $d;
}
}
static function load($name){
require_once("$name.php");
return new $name();
}
}
?>
Le résultat en image:

Merci d'avance.
Bonsoir,
Dans ton fichier Models.php à la ligne 60 tu mets un echo d'une array ce qui ne va pas,
tu essaies avec :
var_dump( $requete->errorInfo() );
Maintenant il m'affiche cela : [url=http://img5.imageshack.us/img5/1745/probleme1.png][img]http://img5.imageshack.us/img5/1745/probleme1.png[/img][/url] Mais je ne vois pas ou et le problème dans ma requête.
Oui c'est normal,
parce que quand tu vient d'executer ta requête, la methode execute ajoute des '' autour de chaque element de ton tableau data
SELECT '*' FROM 'table' WHERE 'x=y' au lieu de SELECT * FROM table WHERE x='y'
essaies avec cette structure:
<?php
$sql = 'SELECT ';
if( isset( $data'fields'] ) ){
$sql .= $data'fields'];
}else{
// sinon
}
if( isset( $data'table'] ) ){
$sql .= ' FROM '.$data'table'];
}else{
// sinon
}
if( isset( $data'conditions'] ) ){
$sql .= ' WHERE '.$data'conditions'];
}else{
// sinon
}
if( isset( $data'order'] ) ){
$sql .= ' ORDER BY'.$data'order'];
}else{
// sinon
}
if( isset( $data'limit'] ) ){
$sql .= ' '.$data'limit'];
}else{
// sinon
}
$request = $pdo->prepare($sql);
$request->execute();
?>