Page 1 sur 1

creation de tableau (array)

Posté : 28 janv. 2008, 14:22
par Invité
bonjour tlm

je veux creer un calendrier annuel automatiquement avec affichage des jours feries
j'ais un petit soucis dont voici le code mis avant la balise "<html>":
//la table 'feries' contient 4 champs: jour, mois, annee et intitule pour le nom du jour ferie (ex: fete nationale)
//
$CetteAnnee=date("Y");
//
// TABLEAU DES JOURS FERIES ///////////////////////
// lecture des jours feries dans la bdd
$requete="SELECT * FROM feries WHERE annee = ".$CetteAnnee." ORDER BY mois,jour ASC";
$resultat_feries = mysql_query($requete);
$nb_feries = mysql_num_rows($resultat_feries);
if ($nb_feries>0){
	$tbFeries=array();
	while ($row=mysql_fetch_array($resultat_feries)){
		$champ=$row['jour'].$row['mois'];
		$tbFeries["$champ"]=$row['intitule'];
	}
}
//

//ensuite a la creation du calendrier et de chaque jour, je veux verifier si c'est un jour ferie et donc //j'ais cette fonction qui doit lire dans le tableau $tbFeries voir si le jour a cree est ferie
//$jourdemande est le numero du jour desire

// fonction pour savoir si le jour est ferie
function EstJourFerie($JourDemande){
//comparaison du jour desire avec les jours dans le tableau des jours feries
// fonction pour savoir le saint du jour
$D=$CetteAnnee.date("dm",$JourDemande);
$FERIE="";
if (is_array($tbFeries)){
	if (array_key_exists('$D', $tbFeries)){
		$FERIE=$tbFeries['$D'];
	}
}
return $FERIE;
}
question: le soucis est que le tableau est indefini (j'ais bien des donnees dans la bdd puisque si je fais echo $nb_feries cy a quelque chose
ca me renvoye dans le source:

Code : Tout sélectionner

Undefined variable: tbFeries in <b>c:\program fi......etc.
ainsi que pour la variable $CetteAnnee

quoii qui se passe t'il donc ? merci de vos reponses

Posté : 28 janv. 2008, 14:32
par Invité
euh je me reponds a moi-meme ou du moins j'emts une reponse peut-etre:

comme dans le corps de la page je cree le calendrier sous forme de tableau donc chque jour je veux lire le tebleau $tbFeries mais peut etre dois-je lire la base de donnees a chque fois ????
moi je pensais lire la bdd une fois au depart et mettre donc les jours feries dans le tableau $tbFeries puis lire ce tableau a chauqe jour cree pour voir si c'est pas un jour ferie plutot que lire la bdd a chaque fois que je cree un jour du calendrier ????

Posté : 28 janv. 2008, 15:03
par zeus
Modération :
Anonymous, afin d'améliorer la lisibilité de ton message,
pense à utiliser les balises [code] ou [php] (selon le langage utilisé).

Elles sont disponibles au-dessus de la zone de saisie de ton message
lorsque tu postes un nouveau message.

Des indications sont disponibles sur la manière de mettre en forme vos messages dans la FAQ

Posté : 28 janv. 2008, 15:08
par d0m
Dans une fonction, toute variable utilisée doit être déclarée dans la fonction, passée en paramètre ou être une variable globale.

Tu défini ta fonction et à l'intérieur tu utilises la variable tableau $tbFeries.
Or cette variable est extérieure à la fonction et comme tu ne l'as ni passée en paramètre, ni défini comme variable globale, la fonction ne la connait pas.

Posté : 28 janv. 2008, 16:59
par Invité
ok dOm merci donc si j'ai bien compris faut que je fasse ainsi:
// fonction pour savoir si le jour est ferie 
function EstJourFerie($JourDemande,$tableau){ 
//comparaison du jour desire avec les jours dans le tableau des jours feries 
// fonction pour savoir le saint du jour 
$D=$CetteAnnee.date("dm",$JourDemande); 
$FERIE=""; 
if (is_array($tableau)){ 
    if (array_key_exists('$D', $tableau)){ 
        $FERIE=$tableau['$D']; 
    } 
} 
return $FERIE; 
}
$tableau correspond au $tbFeries qui est appele ainsi par exemple:
$jour=date("d/m/Y");
if (EstJourFerie($Jour,$tbFeries)!=""){
....
...
}

Posté : 28 janv. 2008, 17:01
par d0m
voilà

Posté : 29 janv. 2008, 10:22
par Invité
merci dOm ça a l'air ok :lol: