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 :

Si isset($variable) exsiste alors écrire son contenu : comment écrire ceci rapidement


Sujet :

Langage PHP

  1. #1
    Membre actif
    Homme Profil pro
    Ingénieur systèmes et réseaux
    Inscrit en
    Décembre 2006
    Messages
    1 080
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Activité : Ingénieur systèmes et réseaux

    Informations forums :
    Inscription : Décembre 2006
    Messages : 1 080
    Points : 287
    Points
    287
    Par défaut Si isset($variable) exsiste alors écrire son contenu : comment écrire ceci rapidement
    Bonjour,

    J'aimerai faire quelque chose de ce genre :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    isset(echo $_POST['modele']);
    Si Variable $_POST['modele'] valide, alors écrire son contenu.

    On peux écrire cette fonction :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    if(isset($_POST['modele'])
    {
        echo $_POST['modele']
    }
    else
    {
        $_POST['modele'] = '';
    }
    Je demande ca, car après je voudrai faire une requête SQL...

    et l'écrire avec des if/else, c'est un peu long...

    Merci d'avance

    Arnaud

  2. #2
    Membre averti Avatar de Asmodean
    Profil pro
    Inscrit en
    Février 2006
    Messages
    311
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 311
    Points : 378
    Points
    378
    Par défaut
    Tu peux utiliser une ternaire :

    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    echo isset($_POST['modele'])?$_POST['modele']:'';

    Le compilateur va le lire comme ca:

    j'affiche $_POST['modele'] si isset, sinon (représenter par les ':' ) j'affiche '' (rien)

  3. #3
    Membre actif
    Homme Profil pro
    Ingénieur systèmes et réseaux
    Inscrit en
    Décembre 2006
    Messages
    1 080
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Activité : Ingénieur systèmes et réseaux

    Informations forums :
    Inscription : Décembre 2006
    Messages : 1 080
    Points : 287
    Points
    287
    Par défaut
    ok, c'est l'idée que j'avais.

    Je fais faire une fonction pour éviter de devoir la recopier a chaque fois.

    Merci
    ++

  4. #4
    Membre actif
    Homme Profil pro
    Ingénieur systèmes et réseaux
    Inscrit en
    Décembre 2006
    Messages
    1 080
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Activité : Ingénieur systèmes et réseaux

    Informations forums :
    Inscription : Décembre 2006
    Messages : 1 080
    Points : 287
    Points
    287
    Par défaut
    Et sinon pour écrire ceci dans une fonction :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    function Presvar($variable_post)
    {
    	echo isset($variable_post)?$variable_post:'TOTO';
    }
    Je ne suis pas sur que cela fonctionne... car j'ai pas mis de return du a l'écho...

    J'ai bon ?

  5. #5
    Membre actif
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    216
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France, Isère (Rhône Alpes)

    Informations forums :
    Inscription : Janvier 2007
    Messages : 216
    Points : 232
    Points
    232
    Par défaut
    salut,

    si j'ai bien compris, tu veux vérifier l'existence $_POST['modele'] et si oui on affiche son contenu
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    <?
    if ( !isset($_POST['modele']))
    {
    echo "perdu !!";
    }
    else
    {
    echo $_POST['modele'];
    }
    ?>

  6. #6
    Membre averti Avatar de Asmodean
    Profil pro
    Inscrit en
    Février 2006
    Messages
    311
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 311
    Points : 378
    Points
    378
    Par défaut
    Citation Envoyé par arnaudperfect
    Et sinon pour écrire ceci dans une fonction :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    function Presvar($variable_post)
    {
    	echo isset($variable_post)?$variable_post:'TOTO';
    }
    Je ne suis pas sur que cela fonctionne... car j'ai pas mis de return du a l'écho...

    J'ai bon ?
    Si tu veux que ca retourne la valeur au lieu de l'afficher tu remplaces echo par return mais sinon oui c'est ca.

  7. #7
    Membre actif
    Homme Profil pro
    Ingénieur systèmes et réseaux
    Inscrit en
    Décembre 2006
    Messages
    1 080
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Activité : Ingénieur systèmes et réseaux

    Informations forums :
    Inscription : Décembre 2006
    Messages : 1 080
    Points : 287
    Points
    287
    Par défaut
    ok, c'est good alors,

    par contre c'est bizarre, quand je test des variables de type POST venant de liste déroulante, j'ai une erreur : "Undefined index"

    Je ne comprend pas trop pourquoi... vu que je fais un test isset()...

    Pourtant, lorsque je ne passe pas par la fonction, mais que j'execute le ternaire, aucun problème...

    Une idée ?

  8. #8
    Membre averti Avatar de Asmodean
    Profil pro
    Inscrit en
    Février 2006
    Messages
    311
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 311
    Points : 378
    Points
    378
    Par défaut
    Tu pourrais mettrez le code de ton select et comment tu appel ta fonction?

  9. #9
    Membre actif
    Homme Profil pro
    Ingénieur systèmes et réseaux
    Inscrit en
    Décembre 2006
    Messages
    1 080
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Activité : Ingénieur systèmes et réseaux

    Informations forums :
    Inscription : Décembre 2006
    Messages : 1 080
    Points : 287
    Points
    287
    Par défaut
    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
    <?php
    function Presvar($variable_post)
    {
    	echo isset($variable_post) && !empty($variable_post)?$variable_post:'';
    }
     
    Presvar($_POST['inventaire_server_id_os']);
    ?>
     
    < select name = "inventaire_server_id_os" id = "inventaire_server_id_os" style = "width:140px"> 
    <?php
    $select_inventaire_server_id_os_1a = mysql_query('SELECT * FROM os');
    while ($select_inventaire_server_id_os_1b = mysql_fetch_array($select_inventaire_server_id_os_1a))
    {
    	echo "<option value='" . $select_inventaire_server_id_os_1b['id_os'] . "'>" . $select_inventaire_server_id_os_1b['os_nom'] . "</option>";
    }
     
    ?> 
    < / select >
    Avec bien sur les balise <from> pour l'envoie du formulaire...

    En faite quand la liste déroulante à une valeur, pas de problème, mais quand elle a rien, soucie...

    P.S : pour écrire une liste déroulante dynamique en php, tu connais peut etre un code plus propre que le mien ?

  10. #10
    Membre averti Avatar de Asmodean
    Profil pro
    Inscrit en
    Février 2006
    Messages
    311
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 311
    Points : 378
    Points
    378
    Par défaut
    en mettant tes conditions entre () ca change quelque chose? :

    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    function Presvar($variable_post)
    {
    	echo (isset($variable_post) && !empty($variable_post))?$variable_post:'';
    }

  11. #11
    Membre expert
    Inscrit en
    Janvier 2005
    Messages
    2 291
    Détails du profil
    Informations forums :
    Inscription : Janvier 2005
    Messages : 2 291
    Points : 3 212
    Points
    3 212
    Par défaut
    Ca me parait logique

    t'as un tableau ($_POST) avec un ensemble de clés existantes. Le but du isset est justement de vérifier qu'une clé est définie avant d'utiliser sa valeur.
    Or, tu passes en paramètre d'une fonction, une valeur d'un tableau pour une clé non définie, donc il rale.
    La solution serait de passer deux paramètres : $_POST[] et le nom de la clé séparément pour éviter ca.

  12. #12
    Membre actif
    Homme Profil pro
    Ingénieur systèmes et réseaux
    Inscrit en
    Décembre 2006
    Messages
    1 080
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Activité : Ingénieur systèmes et réseaux

    Informations forums :
    Inscription : Décembre 2006
    Messages : 1 080
    Points : 287
    Points
    287
    Par défaut
    Citation Envoyé par koopajah
    Ca me parait logique

    t'as un tableau ($_POST) avec un ensemble de clés existantes. Le but du isset est justement de vérifier qu'une clé est définie avant d'utiliser sa valeur.
    Or, tu passes en paramètre d'une fonction, une valeur d'un tableau pour une clé non définie, donc il rale.
    La solution serait de passer deux paramètres : $_POST[] et le nom de la clé séparément pour éviter ca.

    C'est à dire ?

    En code ca donnerai quoi ?

  13. #13
    Membre actif
    Homme Profil pro
    Ingénieur systèmes et réseaux
    Inscrit en
    Décembre 2006
    Messages
    1 080
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Activité : Ingénieur systèmes et réseaux

    Informations forums :
    Inscription : Décembre 2006
    Messages : 1 080
    Points : 287
    Points
    287
    Par défaut
    Citation Envoyé par Asmodean
    en mettant tes conditions entre () ca change quelque chose? :

    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    function Presvar($variable_post)
    {
    	echo (isset($variable_post) && !empty($variable_post))?$variable_post:'';
    }
    Non aucun effet...

  14. #14
    Membre actif
    Homme Profil pro
    Ingénieur systèmes et réseaux
    Inscrit en
    Décembre 2006
    Messages
    1 080
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Activité : Ingénieur systèmes et réseaux

    Informations forums :
    Inscription : Décembre 2006
    Messages : 1 080
    Points : 287
    Points
    287
    Par défaut
    Citation Envoyé par koopajah
    Ca me parait logique

    t'as un tableau ($_POST) avec un ensemble de clés existantes. Le but du isset est justement de vérifier qu'une clé est définie avant d'utiliser sa valeur.
    Or, tu passes en paramètre d'une fonction, une valeur d'un tableau pour une clé non définie, donc il rale.
    La solution serait de passer deux paramètres : $_POST[] et le nom de la clé séparément pour éviter ca.
    pourtant ca marche très bien avec des $_POST venant de champs texte...

  15. #15
    Membre expert
    Inscrit en
    Janvier 2005
    Messages
    2 291
    Détails du profil
    Informations forums :
    Inscription : Janvier 2005
    Messages : 2 291
    Points : 3 212
    Points
    3 212
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    <?php
     
    function presVar($inPost, $inName)
    {
    echo (isset($inPost[$inName]) && !empty($inPost[$inName]))?$inPost[$inName]:'';
    }
     
     
    $a = array( 'aaa' => "aaa", 'bbb' => "bbb");
     
    presVar($a, "aaa");
    presVar($a, "faux");
     
    ?>
    EDIT : non, ca marche très bien quand la clé est définie. C'est normal, tu passes un paramètre a une fonction, ce paramètre est défini => ca marche, ce paramètre n'est pas défini => ca ne marche pas

  16. #16
    Membre actif
    Homme Profil pro
    Ingénieur systèmes et réseaux
    Inscrit en
    Décembre 2006
    Messages
    1 080
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Activité : Ingénieur systèmes et réseaux

    Informations forums :
    Inscription : Décembre 2006
    Messages : 1 080
    Points : 287
    Points
    287
    Par défaut
    mouais, bizzare comme truc...

    Je vais pas me faire chier, je vais utiliser ma fonction pour des variables qui provienne de champs traditionnels, et pour les variables provenant de liste déroulante, j'utiliserai le ternaire directement...

    Merci encore pour votre aide.

  17. #17
    Membre expert
    Inscrit en
    Janvier 2005
    Messages
    2 291
    Détails du profil
    Informations forums :
    Inscription : Janvier 2005
    Messages : 2 291
    Points : 3 212
    Points
    3 212
    Par défaut
    tu risques de te retrouver avec un cas où ta clé n'est pas définie et d'avoir des erreurs! Ca n'est pas lié aux listes déroulantes justement. L'erreur est un cas "normal" et le fait que ca marche tout le temps avec le texte c'est parce que tu n'es pas encore tombé dans un cas où tu n'as pas passé tous les champs dans ton formulaire.

    Dans tous les cas, faire des echo dans des fonctions n'est pas toujours une bonne idée, surtout quand tu te mets à utiliser des sessions ou les header parce que tu ne sais plus qui écrit dans la sortie et qui ne le fait pas.

  18. #18
    Membre actif
    Homme Profil pro
    Ingénieur systèmes et réseaux
    Inscrit en
    Décembre 2006
    Messages
    1 080
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Activité : Ingénieur systèmes et réseaux

    Informations forums :
    Inscription : Décembre 2006
    Messages : 1 080
    Points : 287
    Points
    287
    Par défaut
    Citation Envoyé par koopajah
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    <?php
     
    function presVar($inPost, $inName)
    {
    echo (isset($inPost[$inName]) && !empty($inPost[$inName]))?$inPost[$inName]:'';
    }
     
     
    $a = array( 'aaa' => "aaa", 'bbb' => "bbb");
     
    presVar($a, "aaa");
    presVar($a, "faux");
     
    ?>
    EDIT : non, ca marche très bien quand la clé est définie. C'est normal, tu passes un paramètre a une fonction, ce paramètre est défini => ca marche, ce paramètre n'est pas défini => ca ne marche pas
    Mais j'ai du mal a comprendre ton exemple...

    Pourquoi tu créer un tableau ?

    Tu peux me montré un exemple avec un champs texte tout simple ?

    Merci du tps passé...

  19. #19
    Membre expert
    Inscrit en
    Janvier 2005
    Messages
    2 291
    Détails du profil
    Informations forums :
    Inscription : Janvier 2005
    Messages : 2 291
    Points : 3 212
    Points
    3 212
    Par défaut
    je crée simplement un tableau pour faire l'équivalent de $_POST

    toi tu dois juste utiliser la fonction presVar()
    tu lui passeras en premier paramètre $_POST et en second paramètre le nom du champ texte dans ton formulaire.

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

Discussions similaires

  1. [JDOM] comment écrire dans un fichier xml sans écraser son contenu
    Par solawe dans le forum Format d'échange (XML, JSON...)
    Réponses: 3
    Dernier message: 25/03/2008, 14h11
  2. Réponses: 6
    Dernier message: 13/06/2007, 09h05
  3. Réponses: 18
    Dernier message: 02/03/2006, 10h32
  4. Réponses: 3
    Dernier message: 06/02/2006, 17h04

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