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 :

Tester et modifier une variable


Sujet :

Langage PHP

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Novembre 2008
    Messages
    55
    Détails du profil
    Informations personnelles :
    Âge : 51
    Localisation : France

    Informations forums :
    Inscription : Novembre 2008
    Messages : 55
    Points : 22
    Points
    22
    Par défaut Tester et modifier une variable
    Bonjour à tous :-)

    Tout d'abord je tiens à préciser que je n'y connais RIEN en PHP. Mais j'ai dû mettre les doigts dedans pour réaliser un formulaire qui doit ensuite être envoyé par email.

    J'ai juste un tout petit souci, qui à mon avis sera assez simple à résoudre pour les connaisseurs.

    Dans mon formulaire (page XHTML), j'ai (entre autres) un champ de texte dans lequel on peut indiquer son âge (mais pas obligatoire).
    Voici le code :
    Code html : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    <p>
    <label for="age">votre &acirc;ge</label><br />
    <input type="text" name="age" id="age" value="exemple : 46" onfocus="if (this.value=='exemple : 46') this.value=''" size="62" tabindex="50" />
    </p>

    Comme vous pouvez le constater, ce champ est pré-rempli (exemple).

    Maintenant, sur la page PHP chargée d'envoyer les données par email, il y a une partie que "teste" la valeur des données saisies. Ce qui permet de déclencher des messages d'erreur, lorsque les champs obligatoires n'ont pas été remplis.
    Mais actuellement, si l'internaute n'a rien rentré dans ce champ "age", le mail envoyé mentionne (fort logiquement) : age : exemple : 46.
    Je voudrais effectuer un test qui dit que si la valeur est égale à "exemple : 46" alors cette même valeur devient "Sans réponse", avant d'être envoyée par mail.

    Je rappelle (pour ceux qui ont une petite mémoire) que je ne suis PAS informaticien… J'ai donc essayé des choses du genre :

    if($Age == "exemple : 46")
    {
    $Age=='Sans réponse';
    }

    Mais bon, ça ne semble rien changer.

    Quelqu'un a une idée ?



    Question subsidiaire :
    Dans ma page XHTML, au sein d'un menu déroulant, puis-je remplacer sans problème la ligne suivante :
    <option value="Retraite">Retrait&eacute;</option>
    par :
    <option value="Retraité">Retrait&eacute;</option>
    ???
    (rajout d'un accent sur le contenu de value).



    Désolé pour le côté sans doute basique de mes questions…
    À votre bon cœur msieurs dames… :-)
    Et surtout merci d'avance…

  2. #2
    Membre habitué
    Profil pro
    Inscrit en
    Juin 2005
    Messages
    138
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Juin 2005
    Messages : 138
    Points : 173
    Points
    173
    Par défaut
    Pour ton premier problème, tu veux mettre sans réponse avant que le formulaire soit poster par l'utilisateur ou le centraliser dans le code qui gère le submit de ton formulaire ???
    Au fait c'est un POST ou un GET pour ton formulaire ??

    <option value="Retraite">Retrait&eacute;</option>

    Devient :

    <option value="Retrait&eacute;">Retrait&eacute;</option>

  3. #3
    Membre à l'essai
    Profil pro
    Inscrit en
    Novembre 2008
    Messages
    55
    Détails du profil
    Informations personnelles :
    Âge : 51
    Localisation : France

    Informations forums :
    Inscription : Novembre 2008
    Messages : 55
    Points : 22
    Points
    22
    Par défaut
    Je souhaite juste que le mail reçu indique "sans réponse". Donc ça se passe au niveau de ma page PHP j'imagine.

    Pour le reste, je suppose que la réponse à ta question est là :

    <form method="post" action="contact.php">

  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
    Bonjour et bienvenue dans le monde merveilleux du PHP

    Pour ta première question, tu es bien parti. A ceci près que les champs provenant d'un formulaire s'appellent $_POST['nom_du_champ'] (pour un formulaire en méthode post, ce qui est le cas du tien) Donc normalement ceci devrait fonctionner :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    if ($_POST['age'] == 'exemple : 46')
    $_POST['age'] = 'sans reponse';
    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 à l'essai
    Profil pro
    Inscrit en
    Novembre 2008
    Messages
    55
    Détails du profil
    Informations personnelles :
    Âge : 51
    Localisation : France

    Informations forums :
    Inscription : Novembre 2008
    Messages : 55
    Points : 22
    Points
    22
    Par défaut
    Merci Claire pour ton aide :-)

    À vrai dire, la partie de mon fichier PHP qui "teste" les valeurs rentrées commence par une série de lignes de ce type :
    $Age = $_POST['age'];
    (je vais appeler ça étape 1)

    Et ENSUITE des tests sont effectués (principalement pour les champs obligatoires).(je vais appeler ça étape 2)

    Voilà à quoi ça ressemble :

    if(empty($Nom))
    {$Nada.="<span>Vous n'avez pas indiqué VOTRE NOM.</span><br />";}

    if($Nom == "exemple : Dupont")
    {$Nada.="<span>Vous n'avez pas indiqué VOTRE NOM.</span><br />";}

    Et pour ces tests un peu draconiens, ça semble marcher (bien que ne ressemblant pas exactement à ta ligne de code).

    Là je viens d'introduire la ligne suivante (d'après ton modèle) :

    if ($_POST['age'] == 'exemple : 46') $_POST['age'] = 'Sans Réponse';

    et ça semble marcher, merci :-)

    En revanche, les mails sont extrêmement longs à arriver, peut-être est-ce dû aux hasards du serveur ?
    Ou devrais-je mettre cette ligne entre l'étape 1 et l'étape 2 ? Ou au sein de l'étape 2 ? Ou ça n'a aucune importance ?

  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
    Une ligne comme celle-là prend un pouillème de seconde à s'exécuter donc ce n'est pas ça qui va ralentir ton envoi de mail.

    Tu peux optimiser ton script pur qu'il prenne le moins de temps possible à s'exécuter, mais une fois que ton script est terminé (en d'autres termes que ta page web a fini de se charger) le mail est parti quelque part dans le serveur et là tu ne peux plus faire grand chose. A part attendre
    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 à l'essai
    Profil pro
    Inscrit en
    Novembre 2008
    Messages
    55
    Détails du profil
    Informations personnelles :
    Âge : 51
    Localisation : France

    Informations forums :
    Inscription : Novembre 2008
    Messages : 55
    Points : 22
    Points
    22
    Par défaut
    Merci encore pour ta réponse et ton accueil :-)

    Oui j'imagine que le serveur doit avoir un coup de fatique…

    Et sinon, concernant l'emplacement de cette ligne dans mon code, aucune solution n'est préférable ?

  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
    Avant l'envoi du mail

    Sérieusement, la logique veut que tu la places après le test qui vérifie si il ya quelque chose dans le champ. Si il n'y a rien, il ne peut pas y avoir 'exemple : 46'
    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
    Membre à l'essai
    Profil pro
    Inscrit en
    Novembre 2008
    Messages
    55
    Détails du profil
    Informations personnelles :
    Âge : 51
    Localisation : France

    Informations forums :
    Inscription : Novembre 2008
    Messages : 55
    Points : 22
    Points
    22
    Par défaut
    Autrement dit, ça me donnerait :

    $Age = $_POST['age'];

    if ($_POST['age'] == 'exemple : 46') $_POST['age'] = 'Sans réponse';

    C'est bien ça ?

    NGa'

  10. #10
    Membre habitué
    Profil pro
    Inscrit en
    Juin 2005
    Messages
    138
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Juin 2005
    Messages : 138
    Points : 173
    Points
    173
    Par défaut
    Citation Envoyé par Harlock999 Voir le message
    Autrement dit, ça me donnerait :

    $Age = $_POST['age'];

    if ($_POST['age'] == 'exemple : 46') $_POST['age'] = 'Sans réponse';

    C'est bien ça ?

    NGa'
    Surtout pas attention !!!
    Tu fais un copie dans la variable $Age et après tu réaffecte à la variable $_POST sauf que derrière tu va utilisé $Age.

    Pose toi la question suivante pour faire de l'optimisation de performance !

    Puis je supprimer des structures conditionnelles où les regrouper ? ...
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    $Age = (($_POST['age'] == 'exemple : 46') ? 'Sans réponse' : $_POST['age'] );
    Avec cette dernière, tu economises une affectation ! Soit moins d'un tiers d'un milli pouillem

Discussions similaires

  1. [Tableaux] Modifier une variable passée en get
    Par akito dans le forum Langage
    Réponses: 10
    Dernier message: 20/08/2006, 18h58
  2. Réponses: 9
    Dernier message: 03/07/2006, 18h32
  3. Modifier une variable globale
    Par bahet dans le forum XSL/XSLT/XPATH
    Réponses: 2
    Dernier message: 19/04/2006, 18h04
  4. modifier une variable dans un fichier
    Par Guismay dans le forum Langage
    Réponses: 7
    Dernier message: 11/09/2005, 19h46
  5. [C#] Tester existence d'une variable de session
    Par IDNoires dans le forum ASP.NET
    Réponses: 2
    Dernier message: 31/12/2004, 12h30

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