Page 1 sur 1

à partir du numero de semaine et de l'année affichage des jo

Posté : 27 janv. 2009, 15:28
par Invité
Bonjour,

Voila dans un formulaire, je demande l'année souhaité, puis le numero de semaine, puis je souhaiterais que les personnes doivent choisir une date. J'aimerai que lorsque la personne a saisi le numero de semaine et l'année cela m'indique dans une liste deroulante les date correspondante.

j'ai trouvé cette fonction sur internet :
//########## get_semaine() ###########
// Fonction retournant les dates de la
// semaine en cours :
// tableau-de-retour[0] : date du lundi
// tableau-de-retour[1] : date du mardi
// ...
// Les dates sont au format
// AAAA-MM-JJ

function get_semaine($semaine,$annee)
{
// on sait que le 4 janvier est tout le temps en première semaine
// cf. fr.wikipedia.org/wiki/ISO...
// donc on part du 4 janvier et on avance de ($semaine-1) semaines
// et on teste si on est un lundi. Si ce n'est pas le cas on recule
// d'un jour jusqu'à trouver un lundi.
$date_depart = 4 ;
while (date("w",mktime(0,0,0,01,($date_depart+($semaine-1)*7),$annee)) != 1)
$date_depart-- ;

for ($a=0;$a<7;$a++)
$dateSemaine[$a] = date("Y-m-d",mktime(0,0,0,01,($date_depart+$a+($semaine-1)*7),$annee));

return $dateSemaine;
}
mais je n'arrive pas a l'exploiter. Auriez vous une idée ? merci d'avance

Posté : 27 janv. 2009, 15:54
par Ryle
Une idée pour exploiter cette fonction ?

Bah suffit de faire appel à la fonction avec php (donc côté serveur), lui passer les paramètres dans le format attendu (voir commentaires) et récupérer le résultat retourné (voir commentaires) que tu n'as plus qu'à utiliser pour générer ta liste déroulante en html... :)

Posté : 27 janv. 2009, 16:06
par Invité
<select name="select" onChange="javascript:get_semaine($sem, $an)">
          <option value="1"><?php echo $dateSemaine[0]; ?></option>
          <option value="2"><?php echo $dateSemaine[1]; ?></option>
          <option value="1"><?php echo $dateSemaine[2]; ?></option>
          <option value="2"><?php echo $dateSemaine[3]; ?></option>
          <option value="1"><?php echo $dateSemaine[4]; ?></option>
          <option value="2"><?php echo $dateSemaine[5]; ?></option>
          <option value="1"><?php echo $dateSemaine[6]; ?></option>
        </select>

il ne rentre pas du tout dans la fonction j'ai mis un alert et il ne s'affiche pas.
merci

Posté : 27 janv. 2009, 17:46
par Ryle
Alors petit rappel de base... du javascript, c'est géré par le navigateur chez l'utilisateur (le client) une fois que la page est chargée. Du php en revanche, c'est un script qui doit être exécuter par le serveur php (le serveur) avant que la page ne se charge

PHP te permet donc de générer du javascript, mais c'est là la seule interraction que tu puisses avoir entre les deux langages :)

Maintenant, tu peux demander a un script javascript de faire appel au serveur (via Ajax) pour que ce dernier exécuter un script php et renvoi le résultat à ta fonction javascript (voir la FAQ pour plus d'information sur ajax).

L'autre solution consiste simplement à soumettre le formulaire lorsque l'utilisateur change de semaine et regénerer ta page html (et donc ton formulaire) avec les données qui vont bien en fonction de ce qu'aura saisi l'utilisateur :)

Tu trouveras également dans la FAQ un topic détaillant le principe de fonctionnement des listes déroulantes liées (où la valeur spécifiée dans un champ de formulaire permet de mettre à jour un autre champ). Tu peux aisément t'en inspirer pour ce que tu veux faire, les deux modes (ajax et soumission) y sont détaillés :)