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

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

    Informations forums :
    Inscription : Avril 2007
    Messages : 7
    Points : 3
    Points
    3
    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 expérimenté 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
    Points : 1 311
    Points
    1 311
    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
    Candidat au Club
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    7
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Avril 2007
    Messages : 7
    Points : 3
    Points
    3
    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
    Candidat au Club
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    7
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Avril 2007
    Messages : 7
    Points : 3
    Points
    3
    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 expérimenté 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
    Points : 1 311
    Points
    1 311
    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
    Candidat au Club
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    7
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Avril 2007
    Messages : 7
    Points : 3
    Points
    3
    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

  7. #7
    Membre expérimenté 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
    Points : 1 311
    Points
    1 311
    Par défaut
    Dans un formulaire il y a différentes étapes :
    1 - affichage du formulaire dans un page (html ou php).
    2 - remplissage par l'utilisateur
    3 - envoie du formulaire
    4 - reception et traitement par un page (php) renseigné dans l'attribut action de la balise Form(cette page peut éventuellement être la même que celle qui affiche le formulaire. Pour clarifier les choses je te conseille dans un premier temps d'en utiliser deux.)

    En fait, le boucle "for" sur laquelle nous discutons sert à la première étape (afficher le formulaire). Donc la récupération de la date de naissance se fera après. A l'étape 4.
    Dans ta page php tu auras quelque chose du genre :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    $ij = $_POST['ij'];
    $im = $_POST['im'];
    $ia = $_POST['ia'];
    echo 'date de naissance :'.$ij.'-'.$im.'-'.$ia;

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

    Informations forums :
    Inscription : Avril 2007
    Messages : 7
    Points : 3
    Points
    3
    Par défaut
    salut,
    avec bcp d'aide, la tienne comprise, j'ai fini par trouver la solution !

    voici ce que donne le code qui nous intéresse dans ma page inscription.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
    16
    17
    18
    19
    20
    21
    22
     
    <form action="login.php?do=new" method="POST">
    ...
    jour
     <select name="jour_naissance">
       <?php
          for ($ij=1; $ij<=31;$ij++)
           {
             if ($ij <10) 
              {
                $vj="0".$ij;
                echo "<option>".$vj."</option>";
              }
            else 
             {
               echo "<option>".$ij."</option>";
             }
           }
      ?>
     </select>
    ...
    </form>
    bref, a force je me suis rendu compte que je cherchais la petite bête la ou il n'y en avait pas. je tenais absolument a ajouter un @$_POST dans ce foutu formulaire alors que... je l'avais déja défini dans le formulaire.. bref du n'importe quoi
    ça m'a aussi permis d'apprendre que j'avais fait des bourdes dans mes balises <input> ou j'avais rajouté inutilement value="<?php $_POST['prenom']?>" ... pourquoi, j'en sais trop rien a vrai dire. j'était bloqué sur l'idée qu'il fallait que je passe mes variables manuellement, mais vu que j'utilise les sessions, ça se fait automatiquement.

    petit problème en soi qui m'a permis d'apprendre pas mal de chose depuis deux jours

    merci pour ton aide

    EDIT: je suis repassé sur mon code ce matin pour refaire une concaténation correcte et non pas comme les semi-bêtises que j'ai écrites plus haut.

+ 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