Bonsoir à tous ,

Voilà , j'ai un soucis dans mon code , j'ai un message undefined index par rapport à un $_POST quand j'arrive la premiere fois sur ma page , normal me dirait vous , j'ai beau faire un test existence avec isset mais rien à faire l'erreur s'affiche toujours.

Voici mon code:

switch($action){
    case 'selectionFiche':{
        $lesMoisVisiteurs= $pdo->getFiches('VA');

        if(isset($_POST)){

            $valueListe = $_POST['listeFiches'];
            $idVisiteurMois =  explode('-',$valueListe);
            $idVisiteur = $idVisiteurMois[0];
            $mois = $idVisiteurMois[1];
            $lesFraisForfait = $pdo->getLesFraisForfait($idVisiteur,$mois);
            $lesFraisHorsForfait = $pdo->getLesFraisHorsForfait($idVisiteur,$mois);
        }

        break;

    }case 'rembourser':{
        $update=$pdo->modificationEtat($etat , $idVisiteur , $mois);

        header('location:index.php?uc=suiviPaiement&action=selectionneFiche');

        break;
    }
}

et l'erreur suivante :

Notice: Undefined index: listeFiches in C:\Users\Terni\Documents\Workspace\GSBG02\controleurs\c_rembourser.php on line 13
Call Stack

Merci d'avance pour votre aide

6 réponses


Bonsoir,

1/ Comment arrivez-vous sur cette page ? Par un formulaire ?
2/ Les accolades juste après les "case ... :" ne sont pas à mettre. (C'est la 1er fois que je les vois après les case.

seb2913
Auteur

Bonsoir Carouge ,

C'est une solution existante qu'on a donné en cours et s'était comme ca , j'ai pas touché car sa fonctionne mais oui moi-meme je ne mets pas d'accolade pour un case... J'arrive sur ce formulaire quand je clique sur un élément du menu , c'est un modéle MVC ,en gros ici , je clique sur mon menu qui fait appel au controleur ensuite dans mon controle j'ai un switch avec le parametre action (ici , selectionneFiche)

Bonsoir Seb2913
il faut que tu utilises les outils de dev de ton navigateur pour voir les paramètres envoyés en POST
ou sinon fait un var_dump($_POST) juste avant la ligne 13

seb2913
Auteur

J'ai fait déjà je récupére bien ma value mais quand je sélectionne dans ma liste déroulante mais je voudrais dés que j'arrive sur ma page sa sélectionne la premiére personne de ma liste et que je puisse récupérer sa value directement comme le $_POST pour afficher les infos la premiére personne dés mon arrivé sur la page

Bonsoir,

Tu devrais utiliser (!empty($_POST)) plutôt que (isset($_POST)), il me semble que isset($_POST) renvoies toujours true. $_POST étant une superglobal, elle est 'set' même si rien n'est envoyé en POST.

Je rejoins @Sankaman, les variables $_GET, $_POST et peut $etre $_Files sont toujours initialiser et vide. Il faut mieux tester si la valeur que tu attend est présente.

if ( isset( $\_POST[ 'listeFiches' ] ) && !emty( $\_POST[ 'listeFiches' ] ) ) {
    # Do it here
}

Comme cela, tu peux cumuler plusieurs test avec les if elseif else.