creation de tableau (array)

Invité
Invité n'ayant pas de compte PHPfrance

28 janv. 2008, 14:22

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

Invité
Invité n'ayant pas de compte PHPfrance

28 janv. 2008, 14:32

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 ????

Avatar du membre
Administrateur PHPfrance
Administrateur PHPfrance | 13231 Messages

28 janv. 2008, 15:03

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
Connaître son ignorance est la meilleure part de la connaissance
Pour un code lisible : n'hésitez pas à sauter des lignes et indenter

twitter - site perso - Github - Zend Certified Engineer

d0m
Mammouth du PHP | 1141 Messages

28 janv. 2008, 15:08

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.

Invité
Invité n'ayant pas de compte PHPfrance

28 janv. 2008, 16:59

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)!=""){
....
...
}

d0m
Mammouth du PHP | 1141 Messages

28 janv. 2008, 17:01

voilà

Invité
Invité n'ayant pas de compte PHPfrance

29 janv. 2008, 10:22

merci dOm ça a l'air ok :lol: