Message de base dans menu déroulant

Résolu/Fermé
Ninja_En_Short Messages postés 133 Date d'inscription mercredi 19 septembre 2007 Statut Membre Dernière intervention 27 juin 2014 - 29 juil. 2008 à 12:08
Flohti Messages postés 162 Date d'inscription mercredi 25 juillet 2007 Statut Membre Dernière intervention 7 février 2010 - 29 juil. 2008 à 14:34
Bonjour,

Voilà mon problème : je veux que la date courante (format mois/annee) s'affiche dans une liste déroulante qui contient une liste de tous les mois et annee au format plus haut. Ces mois et ces annes sont récupérés dans un base ODBC.

Voilà le code :

<form action="index.php" method="post">
<label for="annee">Choisissez l'année et le mois
</label>
<select name="choixMoisAn" id="choixMoisAn" align="right">
<?php
while($dataAn = odbc_fetch_array($res_annee))
{
$query_mois = "SELECT DISTINCT MOIS FROM MLB.CHMDPTPF WHERE AN = ".$dataAn['AN'] . " ORDER BY CHMMOI";
$res_mois = odbc_exec($cnx,$query_mois);

while($dataMois = odbc_fetch_array($res_mois))
{
?>
<option value="<?php echo $dataMois['MOIS']; ?>/<?php echo $dataAn['AN']; ?>">
<?php echo $dataMois['MOIS']; ?> /
<?php echo $dataAn['AN']; ?>
</option>
<?php
}
}
?>
</select>
<input type="submit" name="submitDate" value="Soumettre" />
</form>

Merci

6 réponses

Eldar57 Messages postés 46 Date d'inscription mardi 29 juillet 2008 Statut Membre Dernière intervention 12 août 2008 7
29 juil. 2008 à 13:29
si je comrpend bien, tu veux ajouter en plus des dates de ta base, la date du jour même... c'est ça ?

si oui, il te faut créer une date par le biais de new Date()
ensuite de récupérer le jour et le mois et de les intégrer dans tes choix.

je vois un truc comme ça:

maDate = new Date();
<option value=maDate.getMonth()+"/"+maDate.getFullYear()>maDate.getMonth()+"/"+maDate.getFullYear()</option>

tu peux insérer ce choix avant ou après ton while ...
0
Ninja_En_Short Messages postés 133 Date d'inscription mercredi 19 septembre 2007 Statut Membre Dernière intervention 27 juin 2014 9
29 juil. 2008 à 14:20
Nein : j'ai une fonction affichage qui me montre un tableau avec des infos du type chiffre d'affaire de tel antenne sur tel mois de tel année, par défaut c'est le mois en cours, sinon c'est la date qu'on a choisit dans le menu déroulant.

Ce que je veux c'est que dans le menu déroulant s'affiche le mois et l'annee courant.

Par exemple là on est (encore un moment) le 07/2008, je veux que s'affiche dans le menu 07/2008 sans que j'ai à l'ouvrir (actuellement il affiche 0/0).
0
Eldar57 Messages postés 46 Date d'inscription mardi 29 juillet 2008 Statut Membre Dernière intervention 12 août 2008 7
29 juil. 2008 à 14:26
je dois mal comprendre ...

maDate = new Date() affecte à la variable la date du jour, donc la date courant.
ensuite pour récupérer le mois tu fais maDate.getMonth() et de la même façon pour année avec maDate.getFullYear() ...

maDate contiendra alors 29/07/2008
maDate.getMonth() te donnera 7
maDate.getFullYear() te donnera 2008
0
Ninja_En_Short Messages postés 133 Date d'inscription mercredi 19 septembre 2007 Statut Membre Dernière intervention 27 juin 2014 9
29 juil. 2008 à 14:30
Le problème c'est que ce que tu montres permet d'avoir la valeur dans le menu, ça je le gère déjà avec la requête SQL. Le but du jeu c'est de faire en sorte que le menu déroulant reste caler sur la valeur du mois et de l'année affichés.
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Eldar57 Messages postés 46 Date d'inscription mardi 29 juillet 2008 Statut Membre Dernière intervention 12 août 2008 7
29 juil. 2008 à 14:33
ha oh ... j'avais pas compris alors ... désolé... en plus là, je vois pas ... encore plus désolé -_-'
0
Flohti Messages postés 162 Date d'inscription mercredi 25 juillet 2007 Statut Membre Dernière intervention 7 février 2010 15
29 juil. 2008 à 14:34
Salut,

<?php
while($dataAn = odbc_fetch_array($res_annee))
{
$query_mois = "SELECT DISTINCT MOIS FROM MLB.CHMDPTPF WHERE AN = ".$dataAn['AN'] . " ORDER BY CHMMOI";
$res_mois = odbc_exec($cnx,$query_mois);

while($dataMois = odbc_fetch_array($res_mois))
{
?>
<option value="<?php echo $dataMois['MOIS']; ?>/<?php echo $dataAn['AN']; ?>">
<?php echo $dataMois['MOIS']; ?> /
<?php echo $dataAn['AN']; ?>
</option>
<?php
}
}
?> 


D'abord, je comprends pas pourquoi tu ouvres et fermes autant de fois tes balises php,

Ensuite, comme dit Eldar57, tu peux placer la date courante avant ou après ton while(le grand bien sûr, sinon tu le verras plusieurs fois), après j'ai moyennement compris ce qu'il faisait. Moi je fais comme ça :

<?php

$dateNow = date("m/Y"); // pour l'année petit "y" sur 2chiffres, grand "Y" sur 4;
echo '<option value="'. $dateNow .'">'. $dateNow .'</option>';

while($dataAn = odbc_fetch_array($res_annee))
{
$query_mois = "SELECT DISTINCT MOIS FROM MLB.CHMDPTPF WHERE AN = ".$dataAn['AN'] . " ORDER BY CHMMOI";
$res_mois = odbc_exec($cnx,$query_mois);

while($dataMois = odbc_fetch_array($res_mois))
{
echo '<option value="'. $dataMois['MOIS']; .'/'. $dataAn['AN']; .'">'. $dataMois['MOIS'];  .'/'. $dataAn['AN']; .'</option>';
}
}

// ou tu peux mettre ta date courante ici;

?> 


Après je ne sais pas si tes dates récupérées seront antérieurs ou postérieurs, dans le cas où tu ais les deux, il faut mettre la partie en gras dans ta boucle après une condition dont tu seras sûr qu'elle n'est valable qu'une fois :

<?php

$datePrevMonth = 0; // initialisation d'une variable pour notre condition;
$dateNowMonth = date("m"); // celui là, tu le laisse avant;
$dateNowYear = date("Y"); // avec son p'tit frère, pour pouvoir tester;

while($dataAn = odbc_fetch_array($res_annee))
{
$query_mois = "SELECT DISTINCT MOIS FROM MLB.CHMDPTPF WHERE AN = ".$dataAn['AN'] . " ORDER BY CHMMOI";
$res_mois = odbc_exec($cnx,$query_mois);

while($dataMois = odbc_fetch_array($res_mois))
{

if ($dataAn['AN'] == $dateNowYear and $dateNowMonth < $dataMois['MOIS'])
{ // si on est dans la même année et si notre date se trouve avant celle de la base;
if ($dateNowMonth > $datePrevMonth['MOIS'])
{ // cette condition pour être sûr qu'on ne redise pas ce qu'il y avait dans la base;
echo '<option value="'. $dateNowMonth .'/'. $dateNowYear .'">'. $dateNowMonth .'/'. $dateNowYear .'</option>';
}
$dateOk = true; // pour se rappeler qu'on est passé par là;
}

echo '<option value="'. $dataMois['MOIS']; .'/'. $dataAn['AN']; .'">'. $dataMois['MOIS'];  .'/'. $dataAn['AN']; .'</option>';
$datePrevMonth = $dataMois['MOIS']; // sauvegarde du dernière
}
}
if (!$dateOk)
{ // si on est pas passé par la condition, normalement toutes les dates sont antérieurs;
echo '<option value="'. $dateNowMonth .'/'. $dateNowYear .'">'. $dateNowMonth .'/'. $dateNowYear .'</option>';
}
?> 


Normalement là, il n'y a même plus besoin de se soucier des dates de la bases.
Je n'ai pas testé ! Adapte si tu as besoin...

Pour ce qui est de l'ouverture et fermeture des balises php, moi je ne les ouvre et ferme qu'une fois en début et fin de script, je place ce que je vais afficher dans une variable que j'appelle souvent $html.

EDIT : il s'en est passé des choses^^, ben laisse ce que je t'ai dis, pour avoir la date courante "sélectionné" (en gros), un petit selected="selected" dans l'option ou tu as la date courante, ou alors un value="+la valeur de l'option de late courante+" au select, ou encore dernière solution, placer l'option de la date courante en premier (simplement).
0