Bonjour,

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

j'ai suivi le cours sur la poo et je suis en train de m'essayer à la technique.

j'ai commencer a construire mon systeme et je voulais charger certains éléments via ajax mais je me retrouve confronté a un probleme de localisation de mes classes.
plus precisement j'ai index qui récupére mes different corps de page les stocks en tampon puis je les reinsére dans mon template.
j'aimerais importer ces different elements via ajax mais problemes!!

index.php


define('ROOT', dirname(__DIR__));
require ROOT.'/app/App.php';
use \Core\Auth\DBAuth;
App::load();

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

//auth
$app = App::getInstance();
$auth = new DBAuth($app->getDb());
if(!$auth->logged()){
    $app->forbidden();
}

ob_start();
if($page === 'home'){
    require ROOT.'/pages/admin/posts/index.php';
}elseif($page === 'myspace'){
    require ROOT.'/pages/admin/myspace/myspace.php';
}elseif($page === 'myspace.personnel'){
    require ROOT.'/pages/admin/myspace/personnel.php';
}
$content = ob_get_clean();
require ROOT.'/pages/templates/admin_default.php';

le fichier template n'as rien de special
header + body + footer conventionel

le fichier que j'essaie de charger :

categories.php


<?php
        $app = App::getInstance();
        $categories = $app->getTable('materiel_categorie')->all();
        if($categories == false){
            $app->notFound();
        }
?>
<div class="main_panel_wrapper">
    <div class="main_panel panel_top">
        <div class="panel_med_wrapper">
            <div class="panel_header">
                <ul>
                    <li>
                        <figure><span>icone</span></figure><figure>Categorie</figure><figure>Supprimer</figure><figure>Modifier</figure>
                    </li>
                </ul>
            </div>
            <div class="panel_body">
                <ul>
                    <?php foreach($categories as $categories):?>
                    <li><?php echo $categories->titre ?></li>
                    <?php endforeach;?>
                    <li><figure>Ajouter une categorie</figure><figure style="display: none"></figure><figure style="display: none"></figure></li>
                </ul>
            </div>
        </div>
    </div>
</div>

et mon morceau de js:


    $("#categorie_btn").click(function(){

            $(".main_panel_wrapper").load("../pages/admin/materiel/categories.php", function(responseTxt, statusTxt, xhr){
                if(statusTxt == "success")
                alert("trop de la balle!");
                if(statusTxt == "error")
                alert("putain de merde ! " + xhr.status + ": " + xhr.statusText);
            });
        });

j'oublié mon erreur :

Fatal error: Uncaught Error: Class 'App' not found in C:\wamp64\www\pixatelier\16_back_end\pages\admin\materiel\categories.php on line

si je met mon $app dans l'index
la variable $categorie n'est pas reconnue dans le foreach

si je met tout en php ça marche nikel

merci d'avance

4 réponses


Bonjour.

la variable $categorie n'est pas reconnue dans le foreach

Pour que la variable $categorie soit reconnue, il faudrait déjà qu'elle existe sur ta page, mais ce n'est pas le cas, dans le foreach tu donnes le même nom à la variable de l'alias qu'à la variable d'origine, soit $categories, donc comment veux-tu qu'elle puisse être reconnue ?

j'ai essayé de la changé mais pareil

Est ce qu'il y a un tuto ou une serie de lessons qui combinent le php et l'ajax sur graphikart?

Je ne vois pas le rapport avec l'ajax étant donné que dans ton JavaScript tu ne récupères aucune donnée.
Sinon, pour ce qui concerne le problème de la classe App, tu inclues le fichier de la classe dans le fichier index.php, mais pas dans le fichier categories.php.
Autre chose, si tu veux charger tes classes via use, il te faut utiliser un autoloader, mais je ne te vois en utiliser aucun.