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 :

Switch - Portée des variables - global


Sujet :

Langage PHP

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé Avatar de RowanMayfair
    Femme Profil pro
    Développeuse Freelance
    Inscrit en
    Mars 2019
    Messages
    247
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 48
    Localisation : France, Haute Marne (Champagne Ardenne)

    Informations professionnelles :
    Activité : Développeuse Freelance

    Informations forums :
    Inscription : Mars 2019
    Messages : 247
    Par défaut Switch - Portée des variables - global
    Bonjour,

    J'ai besoin d'utiliser des variables dans un switch, et qu'elles gardent la valeur qu'elles prennent dans une case, dans la case suivante.
    Donc je les déclare au-dessus, ensuite elle passe dans une case où une valeur récupérée d'un POST leur est affectée, mais dans la case suivante ça ne fonctionne pas, elle n'ont pas gardé la valeur postée précédemment, sur une autre vue
    Ok un peu de code, ce sera plus clair
    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
    27
    28
    29
    $idVisiteur;
    $leMois;
    switch ($action) {
    case 'validation':
        $lesVisiteurs = $pdo->getTousLesVisiteurs();    
        $visiteurASelectionner = $lesVisiteurs[0];    
        $lesMois = getLesDouzeDerniersMois();
        $moisASelectionner = $lesMois[0];
     
        include 'vues/v_listeVisiteursMois.php';
        break;
    case 'validerEtatFrais':
        global $idVisiteur, $leMois;
        $idVisiteur = filter_input(INPUT_POST, 'lstVisiteurs', FILTER_SANITIZE_STRING);
     
        $leMois = filter_input(INPUT_POST, 'lstMois', FILTER_SANITIZE_STRING);
        $lesMois = getLesDouzeDerniersMois();
        $moisASelectionner = $leMois;
        include 'vues/v_listeVisiteursMois.php';
       (...)
        break; 
     
    case 'validerFraisForfait' :    
        global $idVisiteur, $leMois;
        echo $idVisiteur;
        echo $leMois;
        (...)
        break;    
    }
    Et donc, mes echo dans la case 'validerFraisForfait' n'affichent rien du tout (c'est bien du string, donc echo devrait fonctionner)

    Pourtant, j'ai l'impression que j'ai bien tout fait comme dans l'exemple 2 de cette page du manuel : https://www.php.net/manual/fr/langua...bles.scope.php

    Donc ... pourquoi elles gardent pas leur valeur ?

    D'avance merci de votre aide

  2. #2
    Expert confirmé
    Avatar de mathieu
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    10 699
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 10 699
    Par défaut
    avec un switch, le code passe dans un seul case et pas dans les autres.
    donc s'il passe dans "validerFraisForfait", cela veut dire que le code qui lit les données dans $_POST n'est jamais exécuté.

  3. #3
    Membre Expert
    Avatar de laurentSc
    Homme Profil pro
    Webmaster débutant perpétuel !
    Inscrit en
    Octobre 2006
    Messages
    10 497
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Webmaster débutant perpétuel !
    Secteur : Industrie

    Informations forums :
    Inscription : Octobre 2006
    Messages : 10 497
    Billets dans le blog
    1
    Par défaut
    Je n'ai pas compris que ça fonctionnait comme ça, mathieu. J'ai supposé qu'un autre script appelait le script dont RowanMayfair nous a donné le code, du genre :

    index.php :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    <?php
    global $idVisiteur, $leMois;
    ?>
    <a href="test.php?action=validerEtatFrais">validerEtatFrais</a><br/>
    <a href="test.php?action=validerFraisForfait">validerFraisForfait</a>
    test.php :
    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
    <?php
    global $idVisiteur, $leMois;
    $action=$_GET['action'];
    switch ($action) {
           case 'validerEtatFrais':
     
             $idVisiteur= "idVisiteur";
              $leMois = "leMois";
        break;
     
        case 'validerFraisForfait' :
            echo "idVisiteur=". $idVisiteur."<br/>";
            echo "leMois=".$leMois;
        break;
    }
    (j'ai simplifié le code pour pouvoir tester).
    Pas capable de le faire marcher en rendant les variables globales, mais par contre faisable avec des variables de session (testé).

  4. #4
    Membre éclairé Avatar de RowanMayfair
    Femme Profil pro
    Développeuse Freelance
    Inscrit en
    Mars 2019
    Messages
    247
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 48
    Localisation : France, Haute Marne (Champagne Ardenne)

    Informations professionnelles :
    Activité : Développeuse Freelance

    Informations forums :
    Inscription : Mars 2019
    Messages : 247
    Par défaut
    OK. En effet j'ai du mal avec le modèle MVC, je suis perdue sur où je doit mettre quelle vue ...

    Je vais chercher et arrêter de mettre des global inutiles

    Merci

  5. #5
    Membre Expert
    Avatar de laurentSc
    Homme Profil pro
    Webmaster débutant perpétuel !
    Inscrit en
    Octobre 2006
    Messages
    10 497
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Webmaster débutant perpétuel !
    Secteur : Industrie

    Informations forums :
    Inscription : Octobre 2006
    Messages : 10 497
    Billets dans le blog
    1
    Par défaut
    En faisant de la POO (et du MVC), ça serait simple, mais là, je sais pas...

Discussions similaires

  1. portée des variables global
    Par nouilletonne dans le forum Langage
    Réponses: 9
    Dernier message: 29/09/2017, 15h02
  2. la portée des variables globales en XSLT
    Par onh890 dans le forum XML/XSL et SOAP
    Réponses: 5
    Dernier message: 01/06/2012, 17h57
  3. Réponses: 7
    Dernier message: 15/04/2011, 18h41
  4. portée des variables globales dans un fichier js
    Par crakazoid dans le forum Général JavaScript
    Réponses: 19
    Dernier message: 14/04/2006, 16h49

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