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.
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();
?>
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.