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 :

réinitialisation d'une variable $_GET


Sujet :

Langage PHP

  1. #1
    Membre régulier Avatar de Markos22
    Homme Profil pro
    Développeur Java
    Inscrit en
    Juillet 2016
    Messages
    198
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 59
    Localisation : France, Val d'Oise (Île de France)

    Informations professionnelles :
    Activité : Développeur Java

    Informations forums :
    Inscription : Juillet 2016
    Messages : 198
    Points : 84
    Points
    84
    Par défaut réinitialisation d'une variable $_GET
    Bonjour à tous,

    J'ai créé un formulaire pour poster des articles sur une page web. Le même formulaire me permet de modifier ces articles. La liste des titres des articles s'affiche, sous forme de liens avec des variables $_GET :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <a href="ajout_articles.php?art=<?php echo $article->getId(); ?>" class="list-group-item list-group-item-action"><strong><?php echo $article->getId().'.- '.$article->getTitre(); ?></strong></a>
    Je dois donc tester si la variable "$_GET['art']" est renseignée ou non. Si elle l'est, je fais une modification, et si ce n'est pas le cas, je fais un ajout.

    De façon à ne pas rester en mode modification après une modif, je dois donc réinitialiser ma variable $_GET. Je fais donc :

    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
    if (!empty($_POST)) {
            $article = ArticleDAO::lire_formulaire();
     
            $dao = new ArticleDAO();
            if(!empty($_GET)){
                $article->setId($_GET['art']);
                $dao->modifier($article);
     
                $alert = "Modification effectuée !";
                unset($_GET);
                unset($article);
            }else{
     
            $dao->ajouter($article);
     
            $alert = "Article ajouté à la page !";
            unset($_GET);
            unset($article);
            }
        }
    Mais mon tableau $_GET n'est pourtant pas vide, et me renvoie l'id du dernier article modifié. Je reste donc en mode modification. Je ne comprends pas pourquoi.

    Merci par avance de votre aide

  2. #2
    Modératrice
    Avatar de Celira
    Femme Profil pro
    Développeuse PHP/Java
    Inscrit en
    Avril 2007
    Messages
    8 633
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 39
    Localisation : France

    Informations professionnelles :
    Activité : Développeuse PHP/Java
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2007
    Messages : 8 633
    Points : 16 372
    Points
    16 372
    Par défaut
    $_GET est une super-globale, il est impossible de la supprimer (ce que fait l'instruction unset) :
    Par défaut, toutes les superglobales sont disponibles, et seules les directives de configuration peuvent les rendre indisponibles.
    Tu dois travailler sur le contenu de $_GET, en l'occurrence $_GET['art'] :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    if(!empty($_GET['art'])){
         $article->setId($_GET['art']);
         $dao->modifier($article);
     
         $alert = "Modification effectuée !";
         unset($_GET['art']);
         unset($article);
    }
    Modératrice PHP
    Aucun navigateur ne propose d'extension boule-de-cristal : postez votre code et vos messages d'erreurs. (Rappel : "ça ne marche pas" n'est pas un message d'erreur)
    Cherchez un peu avant poser votre question : Cours et Tutoriels PHP - FAQ PHP - PDO une soupe et au lit !.

    Affichez votre code en couleurs : [CODE=php][/CODE] (bouton # de l'éditeur) et [C=php][/C]

  3. #3
    Membre régulier Avatar de Markos22
    Homme Profil pro
    Développeur Java
    Inscrit en
    Juillet 2016
    Messages
    198
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 59
    Localisation : France, Val d'Oise (Île de France)

    Informations professionnelles :
    Activité : Développeur Java

    Informations forums :
    Inscription : Juillet 2016
    Messages : 198
    Points : 84
    Points
    84
    Par défaut
    Bonjour, Célira,

    J'ai essayé aussi, ça n'a pas marché. Le plus étonnant, c'est que, plus loin dans le code, les lignes suivantes :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    <h2><?php if (isset($_GET['art'])) {
            $dao = new ArticleDAO();
            $art = $dao->trouver($_GET['art']);
     
            echo 'Modification de l\'article : '.$art->getTitre();
        } else {
            echo 'Création d\'un article';
        }
     
        ?></h2>
    m'affichent bien "Création d'un article", ce qui signifie que $_GET['art'] n'est pas défini. C'est étrange.

  4. #4
    Modératrice
    Avatar de Celira
    Femme Profil pro
    Développeuse PHP/Java
    Inscrit en
    Avril 2007
    Messages
    8 633
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 39
    Localisation : France

    Informations professionnelles :
    Activité : Développeuse PHP/Java
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2007
    Messages : 8 633
    Points : 16 372
    Points
    16 372
    Par défaut
    Question bête : quand tu dis "ça n'a pas marché", tu as testé comment exactement ?
    Modératrice PHP
    Aucun navigateur ne propose d'extension boule-de-cristal : postez votre code et vos messages d'erreurs. (Rappel : "ça ne marche pas" n'est pas un message d'erreur)
    Cherchez un peu avant poser votre question : Cours et Tutoriels PHP - FAQ PHP - PDO une soupe et au lit !.

    Affichez votre code en couleurs : [CODE=php][/CODE] (bouton # de l'éditeur) et [C=php][/C]

  5. #5
    Membre régulier Avatar de Markos22
    Homme Profil pro
    Développeur Java
    Inscrit en
    Juillet 2016
    Messages
    198
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 59
    Localisation : France, Val d'Oise (Île de France)

    Informations professionnelles :
    Activité : Développeur Java

    Informations forums :
    Inscription : Juillet 2016
    Messages : 198
    Points : 84
    Points
    84
    Par défaut
    J'ai effectué la modification d'un article, puis j'ai essayé d'en créer un nouveau. Au passage, je fais un petit var_dump($_GET). Le $_GET n'est pas vide. Il comporte toujours la variable $_GET['art'].

  6. #6
    Modératrice
    Avatar de Celira
    Femme Profil pro
    Développeuse PHP/Java
    Inscrit en
    Avril 2007
    Messages
    8 633
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 39
    Localisation : France

    Informations professionnelles :
    Activité : Développeuse PHP/Java
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2007
    Messages : 8 633
    Points : 16 372
    Points
    16 372
    Par défaut
    $_GET est alimenté à partir de l'URL (ou à partir d'une formulaire ou d'une requête AJAX en méthode GET, mais dans 90% des cas, c'est dans l'url).

    Pour modifier un article, tu cliques sur le lien que tu as mis dans ton 1er post je suppose et qui doit avoir une URI du genre "ajout_articles.php?art=42". Et pour créer un article, comment fais-tu ?
    Modératrice PHP
    Aucun navigateur ne propose d'extension boule-de-cristal : postez votre code et vos messages d'erreurs. (Rappel : "ça ne marche pas" n'est pas un message d'erreur)
    Cherchez un peu avant poser votre question : Cours et Tutoriels PHP - FAQ PHP - PDO une soupe et au lit !.

    Affichez votre code en couleurs : [CODE=php][/CODE] (bouton # de l'éditeur) et [C=php][/C]

  7. #7
    Membre régulier Avatar de Markos22
    Homme Profil pro
    Développeur Java
    Inscrit en
    Juillet 2016
    Messages
    198
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 59
    Localisation : France, Val d'Oise (Île de France)

    Informations professionnelles :
    Activité : Développeur Java

    Informations forums :
    Inscription : Juillet 2016
    Messages : 198
    Points : 84
    Points
    84
    Par défaut
    Justement, je voudrais que la page reconnaisse qu'il n'y a rien dans $_get, et à ce moment-là elle utilise une méthode ajouter() au lieu d'une méthode modifier() de mon objet. C'est ce qu'elle fait, mais le problème est justement là : la variable testée, qui aurait dû être effacée, est toujours là.

    Si c'est le sens de ta question, je vérifie en regardant dans phpmyadmin, ou plus simplement parce que j'utilise la méthode jquery 'load() pour afficher le contenu de ma base de données sans recharger. La liste est mise à jour en temps réel, et elle ajoute la ligne à la liste.

  8. #8
    Modératrice
    Avatar de Celira
    Femme Profil pro
    Développeuse PHP/Java
    Inscrit en
    Avril 2007
    Messages
    8 633
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 39
    Localisation : France

    Informations professionnelles :
    Activité : Développeuse PHP/Java
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2007
    Messages : 8 633
    Points : 16 372
    Points
    16 372
    Par défaut
    Honnêtement, je ne vois pas trop d'où vient le problème
    Si j'ai bien compris, tu as un lien par article existant : lorsque tu cliques sur ce lien, ça ouvre / remplit un formulaire de modification ou quelque chose du genre.
    Et pour l'ajout ? tu as un bouton différent ?

    Sinon, tu peux toujours nous montrer le code de la page du formulaire ou assimilé qui fait appel au code de modification/ajout.
    Modératrice PHP
    Aucun navigateur ne propose d'extension boule-de-cristal : postez votre code et vos messages d'erreurs. (Rappel : "ça ne marche pas" n'est pas un message d'erreur)
    Cherchez un peu avant poser votre question : Cours et Tutoriels PHP - FAQ PHP - PDO une soupe et au lit !.

    Affichez votre code en couleurs : [CODE=php][/CODE] (bouton # de l'éditeur) et [C=php][/C]

  9. #9
    Invité
    Invité(e)
    Par défaut
    Bonjour,

    Comme tu ne montres que des extraits de code, on ne peut pas savoir où se trouve l'erreur de logique...

Discussions similaires

  1. [MySQL] SYNTAXE : Appel d'une procédure stockée en php "CALL" en passant une variable _GET
    Par danamaro dans le forum PHP & Base de données
    Réponses: 4
    Dernier message: 01/05/2016, 00h27
  2. test d'une variable $_GET
    Par jissey74 dans le forum PHP & Base de données
    Réponses: 3
    Dernier message: 25/03/2016, 17h33
  3. [PHP 5.3] Traitement d'une variable $_GET
    Par cassis2k dans le forum Langage
    Réponses: 4
    Dernier message: 15/09/2009, 16h55
  4. Modifier une variable $_GET[]
    Par PoZZyX dans le forum Langage
    Réponses: 3
    Dernier message: 14/05/2008, 13h56
  5. [Configuration] php pour recuperer une variable dans l'url sans utiliser $_GET
    Par mikebranque dans le forum EDI, CMS, Outils, Scripts et API
    Réponses: 4
    Dernier message: 22/06/2006, 21h22

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