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 :

Liste déroulante avec trimestre


Sujet :

Langage PHP

  1. #1
    Membre actif Avatar de Meloooo
    Femme Profil pro
    Inscrit en
    Novembre 2008
    Messages
    324
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 35
    Localisation : France

    Informations professionnelles :
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Novembre 2008
    Messages : 324
    Points : 288
    Points
    288
    Par défaut Liste déroulante avec trimestre
    Bonjour,
    Dans ma base de données j'ai une table qui me répertorie de nombreuses dates (2010-04-07)
    Je voudrais trier ses dates par trimestre dans une liste déroulante.
    Du genre :
    Premier trimestre 2010
    Deuxieme trimestre 2010
    ---
    Premier trimestre 2009

    Pour l'instant mon code ressemble à sa :
    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
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
     
    $query2 = "SELECT DISTINCT month(SUIVRE_date) , year(SUIVRE_date) FROM suivre_rep WHERE SUIVRE_client_id = '".$id."' ORDER BY year(SUIVRE_date)";
    $result2 = mysql_query($query2);
    $nb_result = mysql_num_rows($result2);
    $mes_mois = array();
    echo '<br /><div id="periode_tot">';
    			echo "Trimestre : <br>";
    			echo '</div><br>';
    			echo '<div id="texte">';
     
     
    			echo "</div>";	
     
    $mon_tablo = array();
    $mon_annee = array();
    echo '<select name="trimestre">';
     
    while($row = mysql_fetch_array($result2))
    {
    	$mes_mois = $row[0];
    	if($mes_mois == 1 or $mes_mois == 2 or $mes_mois == 3)
    	{
    		$mon_annee[0] = $row[1];
    		$mon_tablo[0] = "Premier trimestre '".$row[1]."'";	
    	}
    	else if($mes_mois == 4 or $mes_mois == 5 or $mes_mois == 6)
    	{
    		$mon_annee[1] = $row[1];
    		$mon_tablo[1] = "Deuxieme trimestre '".$row[1]."'";
    	}
    	else if($mes_mois == 7 or $mes_mois == 8 or $mes_mois == 9)
    	{
    		$mon_annee[2] = $row[1];
    		$mon_tablo[2] = "Troisieme trimestre '".$row[1]."'";
    	}
    	else if($mes_mois == 10 or $mes_mois == 11 or $mes_mois == 12)
    	{
    		$mon_annee[3] = $row[1];
    		$mon_tablo[3] = "Quatrieme trimestre '".$row[1]."'";
    	}	
     
    }
    print_r($mon_annee);
    if(in_array("Premier trimestre '".$mon_annee[0]."'", $mon_tablo))
    {	
    	echo '<option>Premier trimestre '.$mon_annee[0].'</option>';	
    }
    if(in_array("Deuxieme trimestre '".$mon_annee[1]."'", $mon_tablo))
    {
    	echo '<option>Deuxieme trimestre '.$mon_annee[1].'</option>';	
    }
    if(in_array("Troisieme trimestre '".$mon_annee[2]."'", $mon_tablo))
    {
    	echo '<option>Troisieme trimestre '.$mon_annee[2].'</option>';	
    }
    if(in_array("Quatrieme trimestre '".$mon_annee[3]."'", $mon_tablo))
    {
    	echo '<option>Quatrieme trimestre '.$mon_annee[3].'</option>';	
     
    }
    echo '</select>';
    Le seul problème c'est qu'il me prends en compte que quatre valeurs.
    L'erreur vient du faire que si j'ai un trimestre en 2009 et 2010 il m'affichera qu'un seul des deux. Dois-je ajouter une condition dans mes if dans le tant que ?
    Je vous remercie pour votre aide.

  2. #2
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Points : 44 155
    Points
    44 155
    Par défaut
    Est-ce que ca vaut vraiment le coup de consulter la base pour voir s'il existe des lignes correspondant a chaque trimestre ?

  3. #3
    Membre actif Avatar de Meloooo
    Femme Profil pro
    Inscrit en
    Novembre 2008
    Messages
    324
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 35
    Localisation : France

    Informations professionnelles :
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Novembre 2008
    Messages : 324
    Points : 288
    Points
    288
    Par défaut
    Oui je pense que c'est nécessaire car après je voudrais afficher un graphe avec le nombre de visites correspondant aux dates choisies.

  4. #4
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Points : 44 155
    Points
    44 155
    Par défaut
    Je veux dire que si tu as des centaines de valeur chaque trimestre, ca ne sert a rien de lire les trimestres dans la base.
    De plus même si tu avais un trimestre sans données, ca te ferrait juste un résultat vide.

    Je trouve cela plus logique d'un point de vue utilisateur d'avoir un choix de trimestre qui ne renvoit pas de valeurs plutôt que d'avoir un trou dans liste de choix.

  5. #5
    Membre actif Avatar de Meloooo
    Femme Profil pro
    Inscrit en
    Novembre 2008
    Messages
    324
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 35
    Localisation : France

    Informations professionnelles :
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Novembre 2008
    Messages : 324
    Points : 288
    Points
    288
    Par défaut
    Oui mais dans tout les cas je dois récupérer les années et les trimestres directement dans la base de données ?
    Parce que en faite il y a une fiche client qui enregistre les clics des internautes sur certains liens positionnés sur la page et cela enregistre la date du jour.
    Donc j'ai trouvé que cette solution.
    Comment pourrais-je faire autrement ?

  6. #6
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Points : 44 155
    Points
    44 155
    Par défaut
    Oui mais dans tout les cas je dois récupérer les années et les trimestres directement dans la base de données ?
    Non ca c'est ce que tu fais actuellement.
    L'idée ca serait justement de constuire aveuglement la liste avec 4 trimestres pour chaque année.

    Sinon ton code simplifié ca donnerait ça :
    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
    while($row = mysql_fetch_array($result2))
    {
    	$mes_mois = $row[0];
     
    switch ($row[0]) {
       case 1 :
       case 2 :
       case 3 :
           $liste['T1'.$row[1]] = "Premier trimestre '".$row[1];
       break;
     
       case 4 :
       case 5 :
       case 6 :
           $liste['T2'.$row[1]] = "Deuxième trimestre '".$row[1];
       break;
     
    }
     
    foreach ($liste as $key=>$label) {
       echo '<option value="' . $key . '">' . $label. '</option>';	
    }
     
    echo '</select>';

  7. #7
    Membre actif Avatar de Meloooo
    Femme Profil pro
    Inscrit en
    Novembre 2008
    Messages
    324
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 35
    Localisation : France

    Informations professionnelles :
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Novembre 2008
    Messages : 324
    Points : 288
    Points
    288
    Par défaut
    Merci beaucoup ca fonctionne toujours la pour me sauver Sabotage :p
    Voici mon code :
    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
     
    echo '<select name="trimestre">';
     
    while($row = mysql_fetch_array($result2))
    {
    switch ($row[0]) {
       case 1 :
       case 2 :
       case 3 :
           $liste['T1'.$row[1]] = "Premier trimestre ".$row[1];
       break;
     
       case 4 :
       case 5 :
       case 6 :
           $liste['T2'.$row[1]] = "Deuxième trimestre ".$row[1];
       break;
     
       case 7 :
       case 8 :
       case 9 :
           $liste['T3'.$row[1]] = "Troisieme trimestre ".$row[1];
       break;
     
       case 10 :
       case 11 :
       case 12 :
           $liste['T4'.$row[1]] = "Quatrieme trimestre ".$row[1];
       break;
     
    }
    }
    foreach ($liste as $key=>$label) {
       echo '<option value="' . $key . '">' . $label. '</option>';	
    }
     
     
    echo '</select>';

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

Discussions similaires

  1. Liste déroulante avec identifiant "caché"
    Par critok dans le forum Composants
    Réponses: 9
    Dernier message: 05/12/2005, 22h04
  2. Réponses: 5
    Dernier message: 13/10/2005, 10h19
  3. liste déroulante avec ajout possible
    Par bachilbouzouk dans le forum ASP
    Réponses: 5
    Dernier message: 19/04/2005, 11h48
  4. liste déroulante avec données mysql
    Par fab44 dans le forum Balisage (X)HTML et validation W3C
    Réponses: 2
    Dernier message: 24/02/2005, 19h45
  5. liste déroulante avec session
    Par leeloo076 dans le forum ASP
    Réponses: 3
    Dernier message: 19/03/2004, 11h01

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