Bonjour,

Voila je rencontre un petit problème avec mon code.

Ce que je fais

J'apprend les base de PDO avec le tuto nommé "TP : Connexion à la base de donnée", mais je rencontre une erreur, qui je pense est lié avec le namespace app et / ou la class Database

Database.php
<?php
namespace App;

use \PDO;

class Database{

    private $db_name;
    private $db_user;
    private $db_pass;
    private $db_host;
    private $pdo;

    public function __construct($db_name, $db_user = 'root', $db_pass= '', $db_host = 'localhost'){
       $this->db_name = $db_name;
       $this->$db_user = $db_user;
       $this->$db_pass = $db_pass;
       $this->$db_host = $db_host;
    }

    private function getPDO() {
            $pdo = new PDO('mysql:dbname=ligue;host=localhost', 'root', '');
            $pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
            $this->pdo = $pdo;
            return $pdo;
        }

    public function query($statement){
        $req = $this->getPDO()->query($statement);
        $datas = $req->fetchAll(PDO::FETCH_OBJ);
        return $datas;
}

}

home.php
<?php

$db = new App\Database('ligue');
$datas = $db->query('SELECT * FROM formation');
var_dump($datas);

index.php
<?php
require '../App/Autoloader.php';
App\Autoloader::register();

if(isset($_GET['p'])) {
    $p = $_GET['p'];
    }else{
    $p = 'home';
}

ob_start();
if($p === 'home') {
    require '../pages/home.php';
} elseif ($p === 'single'){
    require '../pages/single.php';
}
$content = ob_get_clean();
require '../pages/templates/default.php';

//Et pour finir voici 
Autoloader.php
<?php
namespace App;
/**
 * Class Autoloader
 * @package Tutoriel
 */
class Autoloader{

    /**
     * Enregistre notre autoloader
     */
    static function register(){
        spl_autoload_register(array(__CLASS__,'autoload'));
    }

    /**
     * Inclue le fichier correspondant à notre classe
     * @param $class string Le nom de la classe à charger
     */
    static function autoload($class){
        if (strpos($class, __NAMESPACE__ . '\\') === 0){
            $class = str_replace(__NAMESPACE__ . "\\", '', $class);
            $class = str_replace('\\', '/', $class);
            require __DIR__ . 'class/' . $class . '.php';
        }
    }
}

Ce que je veux

J'aimerais pouvoir afficher les infos de ma bdd
Désolé de tout afficher en vrac comme ca, c'est la premiere fois que je poste un probleme lié à un code et je suis perdu par apport a ce namespace "app"
Je vais continuer à y reflechir cette nuit et mettrait à jour en fonction de mon avancé.

Ce que j'obtiens

j'ai ces deux erreurs :
"Warning: require(C:\wamp64\www\Blog\appclass/Database.php): failed to open stream: No such file or directory in C:\wamp64\www\Blog\app\Autoloader.php on line 24"
Je comprend pas le "\appclass/"

Fatal error: require(): Failed opening required 'C:\wamp64\www\Blog\appclass/Database.php' (include_path='.;C:\php\pear') in C:\wamp64\www\Blog\app\Autoloader.php on line 24

1 réponse


Bonjour,
Je pense qu'il manque un / devant require.... "class".
De plus, tu as fais des erreurs dans le constructeur de Database