IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage PHP Discussion :

Undefined index: action [PHP 5.4]


Sujet :

Langage PHP

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Juin 2009
    Messages
    27
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2009
    Messages : 27
    Points : 11
    Points
    11
    Par défaut Undefined index: action
    Bonjour a tous

    Voila j'ai un soucis avec une variable, avant elle ne s'affiché car c'est un script qui avait était fais en php4. Et derniérement j'ai mis a jour mon serveur avec la derniere version de php et j'ai decider de faire afficher toutes les erreur de script afin de mettre a jour mon site.

    Donc j'ai cette erreur de variable non definie qui s'affiche
    Notice: Undefined index: action in C:\EasyPHP\www\visuprezz\include\module\films\films.php on line 17
    cela empeche pas le site de fonctionner mais je n'aime pas quand cela s'affiche.

    Donc voici la page en question
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    <div class="clear"></div>
          <span class="heading2"><span><?php echo $title; ?></span></span>
    <div class="articles">
        <div align="center"><script src="xxxxxxxxxxxxxx"></script>
                                   <?php
                                   require('restrictions/functions.inc.php');
     
                                  // Inclusion du contenu
                                  $actions = array('main' => 'recherche',
                                                   'list' => 'list',
                                                   'info' => 'info',
                                                   'resultat' => 'resultat',
    							'prez_manuel' => 'prez_manuel',
    							'resultat_manuel' => 'resultat_manuel'
                                                   );
     
    								if (!isset($actions[ $_GET['action'] ])) $action = 'recherche';
                                   else $action = $actions[ $_GET['action'] ];
                                   require($action . '.php');
     
                                  ?>
    </div>	
    <br />
        <br />
      <div class="clear"></div>
    </div>
    Et la ligne 17 c'est celle-ci
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    if (!isset($actions[ $_GET['action'] ])) $action = 'recherche';
    J'ai cherchez partout sur le web et je n'ai trouvé aucune reponse (ou j'ai mal cherché)

    Est-ce que quelqu'un saurais me dire ou corriger ceci

    Je vous remercie de votre aide

  2. #2
    Membre averti Avatar de Njörd
    Homme Profil pro
    Inscrit en
    Janvier 2010
    Messages
    190
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Janvier 2010
    Messages : 190
    Points : 390
    Points
    390
    Par défaut
    Bonjour McGyver59280,

    Le message d'erreur te dit que l'index (donc ta clé du nom de 'action') de ton tableau $_GET (un tableau contenant tous les paramètres de type GET présent dans ta requête) n'est pas défini. Autrement dit, dans ton URL il n'existe pas de paramètre 'action'. De ce fait, il ne peut pas faire le test.

    Un petit tour sur la doc php => Les tableau en PHP

  3. #3
    Membre à l'essai
    Profil pro
    Inscrit en
    Juin 2009
    Messages
    27
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2009
    Messages : 27
    Points : 11
    Points
    11
    Par défaut
    Bonjour Njörd

    Je suis allez voir le lien (celui la je ne l'avais pas vu dans mes recherche) Il est tres interressant

    Mais le probleme que j'ai cela me dit qu'une variable n'est pas defini en l'occurrence $action. Mais si je ne me trompe pas elle defini non?
    Et je doit l'avouer que je ne suis pas un expert et le lien que tu me donne ne parle pas de la variable et je ne sais vraiment pas comment faire

    Merci de ton aide

  4. #4
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Points : 44 155
    Points
    44 155
    Par défaut
    Ce n'est pas $action qui est en jeu mais l'index 'action' dans $_GET['action']

    Il faut que ta condition prenne en compte le cas ou il n'y a rien comme paramètre :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    if (!isset($_GET['action'] || !isset($actions[ $_GET['action'] ])) $action = 'recherche';
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  5. #5
    Membre averti Avatar de Njörd
    Homme Profil pro
    Inscrit en
    Janvier 2010
    Messages
    190
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Janvier 2010
    Messages : 190
    Points : 390
    Points
    390
    Par défaut
    Partons du début alors :

    Que cherche tu à faire dans cette application ?
    Quelle est l'URL que tu appelles lorsque tu as ce message d'erreur ?

    EDIT: grilled by sabotage

  6. #6
    Membre à l'essai
    Profil pro
    Inscrit en
    Juin 2009
    Messages
    27
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2009
    Messages : 27
    Points : 11
    Points
    11
    Par défaut
    Bonjour sabotage
    J'ai deja testé ceci et cela ne fonctionne pas
    Citation Envoyé par sabotage Voir le message
    Ce n'est pas $action qui est en jeu mais l'index 'action' dans $_GET['action']

    Il faut que ta condition prenne en compte le cas ou il n'y a rien comme paramètre :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    if (!isset($_GET['action'] || !isset($actions[ $_GET['action'] ])) $action = 'recherche';

    @Njörd
    Citation Envoyé par Njörd Voir le message
    Partons du début alors :

    Que cherche tu à faire dans cette application ?
    Quelle est l'URL que tu appelles lorsque tu as ce message d'erreur ?

    EDIT: grilled by sabotage
    Bon je vais essayer d'être compréhensible.

    Voila le code que je vous ai fais voir et la premiére page que j'appelle par ce lien index.php?do=film ==>do=film correspond a un switch que j'ai sur une page init.php.

    Donc c'est la premiere page a afficher quand je clic sur rechercher cela me méne a une page index.php?do=film&action=list

    Donc j'ai un dossier films avec comme page dedans
    films.php (ou ce trouve le code avec l'erreur que je vous ai fais voir)
    recherche.php
    list.php
    info.php
    resultats.php

    ce qui donne le array dans le fichier film.php
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    $actions = array('main' => 'recherche', //appelle la page recherche.php et affiche en premier quand on clic sur index.php?do=film
                                                   'list' => 'list',//appelle la page list.php
                                                   'info' => 'info',//appelle la page info.php
                                                   'resultat' => 'resultat',//appelle la page resultat.php
    							'prez_manuel' => 'prez_manuel',
    							'resultat_manuel' => 'resultat_manuel'
                                                   );
    Voila j'espere avoir était compréhensif

  7. #7
    Membre averti Avatar de Njörd
    Homme Profil pro
    Inscrit en
    Janvier 2010
    Messages
    190
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Janvier 2010
    Messages : 190
    Points : 390
    Points
    390
    Par défaut
    Sabotage t'a bien donnée une piste. C'est normal que tu es le message d'erreur même en testant si le paramètre 'action' n'est pas vide car dans tous les cas, que ce soit dans ton IF ou dans ton ELSE, tu utilises $_GET['action'].

    D'après ce que tu viens de dire, tu arrives une première fois sur la page rechercher via le lien index.php?do=recherche (le paramètre 'action' n'existe pas ==> on entre dans le ELSE, sabotage te donne une bonne piste).

    Puis quand tu effectues une recherche, tu arrives sur index.php?do=recherche&action=list (là, le paramètre 'action' existe bel et bien ==> on entre dans le IF).

    De ce fait, je dirais que ton souci vient du fait que dans ton else, tu cherche à utiliser le mot-clé de ta recherche alors que tu devrais plutôt informer l'utilisateur qu'il y a une erreur (par exemple, le champ est vide).

  8. #8
    Membre à l'essai
    Profil pro
    Inscrit en
    Juin 2009
    Messages
    27
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2009
    Messages : 27
    Points : 11
    Points
    11
    Par défaut
    Citation Envoyé par Njörd Voir le message
    Sabotage t'a bien donnée une piste. C'est normal que tu es le message d'erreur même en testant si le paramètre 'action' n'est pas vide car dans tous les cas, que ce soit dans ton IF ou dans ton ELSE, tu utilises $_GET['action'].

    D'après ce que tu viens de dire, tu arrives une première fois sur la page rechercher via le lien index.php?do=recherche (le paramètre 'action' n'existe pas ==> on entre dans le ELSE, sabotage te donne une bonne piste).

    Puis quand tu effectues une recherche, tu arrives sur index.php?do=recherche&action=list (là, le paramètre 'action' existe bel et bien ==> on entre dans le IF).

    De ce fait, je dirais que ton souci vient du fait que dans ton else, tu cherche à utiliser le mot-clé de ta recherche alors que tu devrais plutôt informer l'utilisateur qu'il y a une erreur (par exemple, le champ est vide).
    J'ai modifié mon post precedent car j'avais fais des erreur d'explication.

    Pour le code de sabotage j'ai cette erreur
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Parse error: syntax error, unexpected '||' (T_BOOLEAN_OR), expecting ',' or ')' in C:\EasyPHP\www\visuprezz\include\module\films\films.php on line 18
    Meme en utlisant && OR ou AND

  9. #9
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Points : 44 155
    Points
    44 155
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    if (!isset($_GET['action']) || !isset($actions[ $_GET['action'] ])) $action = 'recherche';
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  10. #10
    Membre averti Avatar de Njörd
    Homme Profil pro
    Inscrit en
    Janvier 2010
    Messages
    190
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Janvier 2010
    Messages : 190
    Points : 390
    Points
    390
    Par défaut
    Le copier / coller sans analyser c'est le mal

    Sabotage a posté un code où il manque une parenthèse. Tu as juste une erreur de syntaxe.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    Grilled 2 :mouarf:

  11. #11
    Membre à l'essai
    Profil pro
    Inscrit en
    Juin 2009
    Messages
    27
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2009
    Messages : 27
    Points : 11
    Points
    11
    Par défaut
    Oui c'est mon default

    Pourquoi je ne l'ai pas vu de suite

  12. #12
    Membre averti Avatar de Njörd
    Homme Profil pro
    Inscrit en
    Janvier 2010
    Messages
    190
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Janvier 2010
    Messages : 190
    Points : 390
    Points
    390
    Par défaut
    Du coup, c'est bon pour toi ?

  13. #13
    Membre à l'essai
    Profil pro
    Inscrit en
    Juin 2009
    Messages
    27
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2009
    Messages : 27
    Points : 11
    Points
    11
    Par défaut
    C'est ok sa passe en faites moi ce que j'avais deja testé c'est avec && AND et OR mais pas ||

    Je vous remercie sabotage et Njörd

    Et a l'avenir je ferais plus attention avant de faire un copié collé bêtement sans réflechir

  14. #14
    Membre averti Avatar de Njörd
    Homme Profil pro
    Inscrit en
    Janvier 2010
    Messages
    190
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Janvier 2010
    Messages : 190
    Points : 390
    Points
    390
    Par défaut
    Nice alors, oublie pas de mettre en résolu et enjoy

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. notice: undefined index:action
    Par floctc dans le forum Langage
    Réponses: 6
    Dernier message: 14/04/2009, 10h30
  2. Réponses: 3
    Dernier message: 05/08/2008, 11h17
  3. [Noob] Undefined index: id
    Par Devil666 dans le forum Langage
    Réponses: 4
    Dernier message: 08/12/2005, 13h00
  4. Undefined index
    Par sebduduf dans le forum Langage
    Réponses: 5
    Dernier message: 02/11/2005, 12h13
  5. Erreur de "Undefined index" sur HTTP_REFERER
    Par guy2004 dans le forum Langage
    Réponses: 4
    Dernier message: 12/10/2005, 12h21

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo