Bonjour,

Je galère à trouver la solution à mon problème. (Je suis sur que c'est tout bête).

Voilà mon code :

$app = App::getInstance();
              <?php foreach($app->getTable('User')->skinsWon() as $history) :?>
                <h4 class="list-group-item"><?= $history->name; ?></h4>
                <?= '<img src='.$history->file.' alt=""/>' ?>
              <?php endforeach; ?>

Voilà ma fonction qui se situe dans la classe Table :


      public function skinsWon(){
        if(isset($_SESSION['auth'])){
          $user_id = $_SESSION['auth']->id;
          $id = App::getInstance()->getDb()->query('SELECT skins_won.id_users_members FROM skins_won');
          $user = $id[0]->id_users_members;
        }

       if($user === $user_id){
        return App::getInstance()->getTable('User')->query(
          'SELECT medias.name, medias.file
           FROM skins_won
            INNER JOIN medias  ON skins_won.id_medias = medias.id
          WHERE
            skins_won.id_users_members=?',[$user_id], true);
       }else{
        return NULL;
       }
    }

et voici l'erreur :

 require(D:\VirtualHost\test\www/core/Table/App.php): failed to open stream: No such file or directory in D:\VirtualHost\test\www\core\Autoloader.php on line 28

L'autoloader fonctionne correctement car ça marche pour cette fonction qui est elle aussi dans Table :

  public function reconnect_from_cookie(){
        if(session_status() == PHP_SESSION_NONE){
          session_start();
        }

        if(isset($_COOKIE['remember']) && !isset($_SESSION['auth'])){
              $remember_token = $_COOKIE['remember'];
              $parts = explode('//', $remember_token);
              $user_id = $parts[0];
              $usersMembers = App::getInstance()->getTable('User');
              $user = $usersMembers->query('SELECT * FROM users_members WHERE id= ?', [$user_id], true);
        if($user){
                  $expected = $user_id . '//'. $user->remember_token . sha1($user_id . 'getmemore');
            if($expected === $remember_token){
                      $_SESSION['auth'] = $user;
                      setcookie('remember', $remember_token, time() + 60*60*24*7);
          }else{
              setcookie('remember', NULL, -1);
            }
        }else{
          setcookie('remember', NULL, -1);
        }
        }
      }

Un pti coup de pouce?

Merci

edit :
Quand je mets le code ci-dessous directement dans le page ça fonctionne

$user_id = $_SESSION['auth']->id;
$skins = App::getInstance()->getTable('User')->query(
          'SELECT medias.name, medias.file
          FROM skins_won
          INNER JOIN medias  ON skins_won.id_medias = medias.id
          WHERE
            skins_won.id_users_members=?',[$user_id], true);

1 réponse


Manide
Auteur
Réponse acceptée

Résolu :
Remplacer : App::getInstance()->getDb() par $this
Remplacer : App::getInstance()->getTable('User') par $this.