[php] fonction while

Signaler
Messages postés
23
Date d'inscription
samedi 6 août 2005
Statut
Membre
Dernière intervention
9 janvier 2008
-
Messages postés
2483
Date d'inscription
jeudi 30 novembre 2006
Statut
Membre
Dernière intervention
14 janvier 2011
-
Bonjour la communauté!

 
Voila, je code un calendrier en php/mysql, et j'ai un petit problème.

Enfait, j'ai fais une boucle permettant de prendre toutes les dates

enregistrées dans ma base de données,et ensuite de les inscrire dans

le calendrier. Mais j'ai aussi un champ text dans cette table de ma

base de donnée, et j'aimerais prendre le titre de chaque date. Pour le

moment, mon code me prend le même titre pour toutes les dates! Il faut

que je prenne le titre de chacune des dates...mais je ne sais pas

comment faire!

 
Voici le code :

 $requete mysql_query("SELECT * FROM calendrier WHERE YEAR(jour)

$an     AND MONTH(jour) = $mois" );

$i=0;

while ($ligne = mysql_fetch_array($requete)){

        $titre = $ligne["titre"];

        $i++;

        // recupartion du jour ou il y a la reservation

        $jours = $ligne["jour"];

        // transforme aaaa/mm/jj en jj

        $jour_reserve = (int)substr($jours, 8, 2);

        // insertion des jours reservé dans le tableau

        $tab_jours[$jour_reserve] = (bool)true;

 
        $titre = (bool)true;

 
}

 
Merci d'avance,

6 réponses

Messages postés
2483
Date d'inscription
jeudi 30 novembre 2006
Statut
Membre
Dernière intervention
14 janvier 2011
18
Salut,

Peut-être incrémenter $i avant de récupérer le titre... ?

$titre = $ligne["titre"];
$i++;

=>

$i++;
$titre = $ligne["titre"];

Sinon, une boucle for ce serait un peu plus joli, ne serait-ce que pout ton compteur qui ne pourrait pas se trouver au mauvais endroit...
Messages postés
10839
Date d'inscription
lundi 24 février 2003
Statut
Modérateur
Dernière intervention
2 mars 2010
25
Hello,

moi je n'ai rien compris. Il sert où le $i ??
Au passage, (bool) true ne sert absolument à rien. Tu convertis un booléen en booléen. "true" est déjà un booléen.
Si tu fais (bool) 1
là ok, je comprends.
mais (bool) true
non.
Messages postés
23
Date d'inscription
samedi 6 août 2005
Statut
Membre
Dernière intervention
9 janvier 2008

En fait c'est un code qui vient du site et que j'essaye de changer à ma façon, c'est pour cela que pour le booléen, je ne savais pas.

J'ai enlever le true et j'ai mis $i++; avant la variable titre, mais cela ne fonctionne toujours pas.

Qu'entend-tu par faire une boucle for?
Messages postés
2483
Date d'inscription
jeudi 30 novembre 2006
Statut
Membre
Dernière intervention
14 janvier 2011
18
Mmm... Ouais, le $i++ sert à rien dans cette boucle. Il sert peut-être à compter le nombre d'enregistrement retournés par la requête...? Auquel cas, c'est vraiment inutile.

Sinon, il faudrait peut-être que tu en fasses quelque chose de ton $titre, sinon, forcément, tu n'en obtiens rien... Une fois que tu récupères le titre, tu fais plein de choses avec la date, puis tu écrases le titre en mettant true dans la variable...
Messages postés
23
Date d'inscription
samedi 6 août 2005
Statut
Membre
Dernière intervention
9 janvier 2008

Salut,

Enfait mon $titre va après dans mon calendrier, mais je ne vois pas comment coder pour avoir le bon titre à la bonne date.
Messages postés
2483
Date d'inscription
jeudi 30 novembre 2006
Statut
Membre
Dernière intervention
14 janvier 2011
18
Salut,

Utilise un tableau indexé numériquement.

$result mysql_query("SELECT * FROM calendrier WHERE YEAR(jour)
$an AND MONTH(jour) = $mois" );

$nb_results = mysql_num_rows($result);
for ($i=0 ; $i < $nb_results ; $i++) {
$resa[$i][] = mysql_fetch_assoc($result);
$jours[] = $resa[$i]['jour']
}

Tu as un tableau qui contient tous les jours ayant une date ($jours). Et un autres ($resa) qui contient les information pour chaque jour.

Pour le 23ème jour, le titre tu l'as comme ça en récupérant la bonne entrée du tableau $resa : $resa[$jour[23]]['titre']

Bon c'est fait vite fait, et sans voir le reste de ton code, donc désolé si c'est un peu crade... Et puis j'ai pas testé non plus, c'est surtout pour que tu voies un peu la piste à suivre.