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 :

[Tableaux] code php dans une balise <select>


Sujet :

Langage PHP

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    7
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Avril 2007
    Messages : 7
    Par défaut [Tableaux] code php dans une balise <select>
    bonjour a tous.
    débutant en php ( et tout le reste y compris lol) j'aurais besoin d'un petit coup de pouce, je me casse les dents sur un morceau de php

    en résumé, je suis en train de construire une page d'inscription, rien de terrible me direz vous

    le formulaire de la page d'inscription, renvoie les données sur la page login.php?do=new

    pour ce qui est de l'utilisation des sessions, des superglobales etc etc, ça ça va, tout fonctionne ( et j'en ai passé des heures la dessus ... lol) y compris l'entrée des données dans une bdd mysql, tout fonctionne tres bien
    (easyPHP1.8 pour le support et SciTE pour l'éditeur)

    voici ce qui me pose probleme:
    pour ce qui est de la date de naissance, au lieu d'entrer les données manuellement au format jj-mm-aaaa et de reformater tout ça dans la page login pour pouvoir les insérer dans la table, je pensais me servir d'une balise HTML <select> pour créer un menu déroulant. le hic ... ça fait 31 <option> pour les jours, 12 <option> pour les mois et une petite centaine pour les années... ça fait bcp a encoder

    si je fais ma balise <select> en html, cela fonctionne parfaitement y compris avec les options

    situation de départ en html
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <html><select name="jour_naissance" value="<?php echo@$_POST['jour_naissance']?>"><option>01</option></select></html>
    par contre, si je veux y insérer une boucle FOR pour créer la liste d'options, la je coince

    ça donne ceci en PHP (qui ne fonctionne pas), c'est l'unique ligne qui me pose un probleme
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    <?php  
    echo "<select name='jour_naissance' value='<?php echo @$_POST['jour_naissance']?>'>"
    for ($ij=1; $ij<=31;$ij++)
        { if ($ij <10)
            { echo "0$ij";}    
          else
            { echo "$ij";}
        } ?>
    la boucle fonctionne bien par contre je sais que ma ligne ECHO
    n'est pas juste, mais je ne trouve pas comment la corriger
    ce qui me vaut évidement un beau message d'erreur:

    Parse error: parse error, expecting `T_STRING' or `T_VARIABLE' or `T_NUM_STRING' in ..\..\inscription.php on line 160 (<= 160 est la ligne en question, et si je la supprime pour faire un <select><option> en html pur, ça fonctionne)

    si quelqu'un avait une idée pour me sortir de la panade ....
    merci d'avance pour votre aide

  2. #2
    Membre éprouvé Avatar de julien.63
    Profil pro
    balayeur
    Inscrit en
    Décembre 2005
    Messages
    1 348
    Détails du profil
    Informations personnelles :
    Localisation : France, Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : balayeur

    Informations forums :
    Inscription : Décembre 2005
    Messages : 1 348
    Par défaut
    salut,
    je ne suis pas sûr d'avoir compris. Je pense qu'il y un souci au niveau de la syntaxe de ton select.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    <select name="jour_naissance">
    <?php
    for ($ij=1; $ij<=31;$ij++){
        if ($ij <10) $v = '0'.$ij;   
        else $v ij;
        echo '<option value="'.$v.'">'.$v.'</option>';
    }
    ?>
    </select>

  3. #3
    Membre du Club
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    7
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Avril 2007
    Messages : 7
    Par défaut
    Salut julien

    effectivement, je viens de vérifier, je me suis royalement planté...
    c'est dans <option> que je dois placer l'attribut value et pas dans <select>...

    donc ben me voila avec un prob sur les bras

    je reformule donc ma question ....

    ma page login.php reprend les infomations pour la date de naissance via $_POST comme ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    <?php
                $annee_naissance = $_POST['annee_naissance'];
                $mois_naissance = $_POST['mois_naissance'];
                $jour_naissance = $_POST['jour_naissance'];
     
                $naissance= "$jour_naissance\-$mois_naissance\-$annee_naissance"
    ?>
    est-ce je ne pourrais pas changer ma page inscription.php comme ceci?
    ( je me sers d'un bout de code que j'ai croisé je ne sais plus ou pour la forme, <select> inclus dans le 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
     echo "<select name='jour_naissance'>";
     for ($ij=1; $ij<=31;$ij++)
     {
       if ($ij <10) 
        {echo "<option value='0$ij'>0$ij</option>";
          $_SESSION['jour_naissance']="0$ij";
        }
        else 
         {echo "<option value='$ij'>$ij</option>";
           $_SESSION['jour_naissance']="$ij";}
     }
     echo "</select>";
    ?>
    ça pourrait marcher ça non?
    il me suffit alors de changer ma page login.php comme ceci:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    <?php
        $annee_naissance = $_SESSION['annee_naissance'];
        $mois_naissance = $_SESSION['mois_naissance'];
        $jour_naissance = $_SESSION['jour_naissance'];
     
        $naissance= "$jour_naissance\-$mois_naissance\-$annee_naissance"
    ?>
    Merci pour ton aide (n'hesite pas a me corriger si je me suis planté)
    je vais tester ça des que j'ai le temps.

  4. #4
    Membre du Club
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    7
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Avril 2007
    Messages : 7
    Par défaut
    je viens d'essayer ceci ... ça fonctionne sauf que, dans ma bdd, j'obtienscomme date 31-12-2007 au lieu de la date réelle ... grrr

    voila le code de la page inscription:
    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
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    jour
     <?php
      echo "<select name='jour_naissance'>";
      for ($ij=1; $ij<=31;$ij++)
       {
         if ($ij <10) 
          {
            echo "<option value='0$ij'>0$ij</option>";
            $_SESSION['jour_naissance']="0$ij";
          }
         else 
          {
            echo "<option value='$ij'>$ij</option>";
            $_SESSION['jour_naissance']="$ij";
          }
      }
     echo "</select>";
    ?>
     
    Mois
    <?php
     echo "<select name='mois_naissance'>";
     for ($im=1; $im<=12;$im++)
      {
        if ($im <10) 
         {
           echo "<option value='0$im'>0$im</option>";
           $_SESSION['mois_naissance']="0$im";
         }
       else 
        {
          echo "<option value='$im'>$im</option>";
          $_SESSION['mois_naissance']="$im";
        }
      }
     echo "</select>";
    ?>
     
    Année
    <?php
     echo "<select name='annee_naissance'>";
     for ($ia=1907; $ia<=2007;$ia++)
      {
        echo "<option value='$ia'>$ia</option>";
        $_SESSION['annee_naissance']="$ia";
      }
     echo "</select>";
    ?>
    j'aimerais savoir pourquoi ma variable $_SESSION prend la plus grande valeur au lieu de la valeur choisie .... ( mauvaise écriture qque part? lol )

    l'affichage dans le menu déroulant est ok, il est bien écrit 01->12 01->31 et 1907->2007

    merci d'avance pour votre aide

  5. #5
    Membre éprouvé Avatar de julien.63
    Profil pro
    balayeur
    Inscrit en
    Décembre 2005
    Messages
    1 348
    Détails du profil
    Informations personnelles :
    Localisation : France, Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : balayeur

    Informations forums :
    Inscription : Décembre 2005
    Messages : 1 348
    Par défaut
    j'aimerais savoir pourquoi ma variable $_SESSION prend la plus grande valeur au lieu de la valeur choisie
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     for ($ij=1; $ij<=31;$ij++)
       {
         if ($ij <10) 
          {
            echo "<option value='0$ij'>0$ij</option>";
            $_SESSION['jour_naissance']="0$ij";
          }
         else 
          {
            echo "<option value='$ij'>$ij</option>";
            $_SESSION['jour_naissance']="$ij";
          }
      }
    quand tu exécutes la boucle ci-dessus, à chaque itération tu donnes à la variable $_SESSION['jour_naissance'] la valeur courante.
    - itération 1 : $ij=1 et $_SESSION['jour_naissance'] = $ij
    - itération 2 : $ij=2 et $_SESSION['jour_naissance'] = $ij
    ...
    - itération 31 : $ij=31, et $_SESSION['jour_naissance'] = $ij
    donc normal que $_SESSION['jour_naissance'] garde ta plus grande valeur. Le souci c'est que tu utilises toujours la même variable. Donc à chaque fois tu écrases la valeur précédente.

    Mais je ne comprends pas bien pourquoi stocker toutes les valeurs de ton select. Ce qui compte c'est de stocker celle que choisira ton utilisateur et que tu connaitras seulement après que le formulaire ait été posté (à moins d'utiliser AJAX mais c'est pas le cas ici).

  6. #6
    Membre du Club
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    7
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Avril 2007
    Messages : 7
    Par défaut
    Salut Julien,

    en fait, je ne cherche pas a stocker toutes les valeurs de mon select, mais c'est bien celle choisie par la personne qui s'incrit qui m'intéresse ( ce qui est logique me diras tu )

    si la personne est née le 5-04 -1922 c'est bien $ij=05 $im=02 $ia=1922 que je souhaite stocker

    .... et c'est celles la que je n'arrive pas a récupérer. pas aussi simple que je ne l'aurais cru ...

    Ce qui compte c'est de stocker celle que choisira ton utilisateur et que tu connaitras seulement après que le formulaire ait été posté (à moins d'utiliser AJAX mais c'est pas le cas ici).
    donc il me manque bien un $_POST qque part ?

    en attendant de voir ce que tu en penses ( ou quelqu'un d'autre lol ), je vais me pencher la dessus ...

    merci

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

Discussions similaires

  1. Insertion de code PHP dans une balise IFRAME
    Par debie1108 dans le forum Langage
    Réponses: 2
    Dernier message: 22/07/2009, 21h17
  2. Réponses: 1
    Dernier message: 19/06/2009, 17h43
  3. Mettre un code php dans une variable...
    Par kedare dans le forum Langage
    Réponses: 6
    Dernier message: 19/09/2005, 12h55
  4. [Conception] Code php dans une base de donnée
    Par krfa1 dans le forum PHP & Base de données
    Réponses: 8
    Dernier message: 13/09/2005, 10h58
  5. pb eval pour le code php dans une feuille xslt
    Par nipepsi dans le forum XSL/XSLT/XPATH
    Réponses: 8
    Dernier message: 10/09/2004, 11h23

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