Accueil > Forum > > > > Problème de boucle / accès BDD
Problème de boucle / accès BDD
vendredi 11 mars 2011 à 03:37:19 |
Problème de boucle / accès BDD

satreix
|
Bonsoir  ,
Je viens vers vous ce soir pour un problème de syntaxe selon moi mais ce pourrait être autre chose.
La fonction suivante est censée afficher un calendrier sous forme de table (le code de base viens de CodeSource). J'ai modifier une parti du code avec une connection SQL pour que le classe 'booked' soit ajouter aux jours entre deux date (des réservations que l'on affiche sous forme de calendrier en fait).
Mon problème et le suivant:
sans mon bout de code le calendrier est montré en entier
avec mon bout de code le calendrier est montré tronqué, on ne voit plus que les jours booked
Est-il possible d'avoir un peu d'aide, Merci!
Code PHP :
<?php
//fonction d'affichage du mois suivant
function mois_suivant($m,$a){
//mois suivant, donc on incrémente de 1
$m++;
//si le mois est 13 il faut augmenter l'année de 1 et repasser le mois à 1
if($m==13){
$a++;
$m=1;
}
return '<a href="'.$_SERVER['PHP_SELF']."?m=$m&a=$a\"> » </a>";
}
//fonction d'affichage du mois précédent
function mois_precedent($m,$mois,$a){
$m--;
if($m==0){
$a--;
$m=12;
}
return '<a href="'.$_SERVER['PHP_SELF']."?m=$m&a=$a\"> « </a>";
}
function calendrier($m_donne,$a_donne){
// Tableau pour le noms des mois
$mois = array();
$mois[1] = "Janvier";$mois[2] = "Février";$mois[3] = "Mars";
$mois[4] = "Avril";$mois[5] = "Mai";$mois[6] = "Juin";
$mois[7] = "Juillet";$mois[8] = "Août";$mois[9] = "Septembre";
$mois[10] = "Octobre";$mois[11] = "Novembre";$mois[12] = "Décembre";
// Tableau pour le noms des jours
$jours = array();
$jours[1] = "Lu";$jours[2] = "Ma";$jours[3] = "Me";$jours[4] = "Je";
$jours[5] = "Ve";$jours[6] = "Sa";$jours[7] = "Di";
// On récupère le mois et l'année dans la barre de navigation
// Si rien n'est spécifié, il faut afficher le mois et l'année donnés par la fonction
if(isset($_GET['m'])){$m = $_GET['m'];}else{$m = $m_donne;}
if(isset($_GET['a'])){$a = $_GET['a'];}else{$a = $a_donne;}
// Calcul du nb de jours dans chaque mois, avec les années bisextiles
// les tableaux PHP commençant à 0, le premier mois est un mois "factice"
if (($a % 4) == 0){$nbrjour = array(0, 31, 29, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31);}
else{$nbrjour = array(0, 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31);}
// On cherche grâce à cette fonction à quel jour de la semaine correspond le 1er du mois
$CAL_FRENCH = 0;
$premierdumois = jddayofweek(cal_to_jd($CAL_FRENCH, $m, 1, $a), 0);
if($premierdumois == 0){$premierdumois = 7;}
//Préparation du tableau avec le nom du mois et la liste des jours de la semaine
echo "<table class=\"cal\"><tr><td class=\"fleches\">";
if($m > date("n")){echo mois_precedent($m,$mois[$m],$a);}
echo "</td><td class=\"nom_mois\" colspan=\"5\">$mois[$m] $a</td><td class=\"fleches\">"
.mois_suivant($m,$a)
."</td></tr><tr class=\"noms_jours\">
<td>$jours[1]</td><td>$jours[2]</td><td>$jours[3]</td><td>$jours[4]</td><td>$jours[5]</td><td>$jours[6]</td><td>$jours[7]</td></tr><tr>";
$jour=1; //Cette variable est celle qui va afficher les jours de la semaine
$joursmoisavant = $nbrjour[$m-1] - $premierdumois+2; //Celle-ci sert à afficher les jours du mois précédent qui apparaissent
$jourmoissuivant = 1; //Et celle-ci les jours du mois suivant
if($m == 1){$joursmoisavant = $nbrjour[$m+11] - $premierdumois+2;} //Si c'est janvier, le mois d'avant n'est pas à 0 mais 31 jours!
//Et c'est parti pour la boucle for qui va créer l'affichage de notre calendrier !
for($i=1;$i<40;$i++){
$classed = 0;
if($i < $premierdumois){ // Tant que la variable i ne correspond pas au premier jour du mois, on fait des cellules de tableau avec les derniers jours du mois précédent
echo "<td class=\"cases_vides\">$joursmoisavant</td>";
$joursmoisavant++;
}
else
{
//Dans ce else ou veut savoir si le jour appartien à une resa de la table dispo
$db = mysql_connect('localhost', 'root', '');
mysql_query("SET NAMES UTF8");
mysql_select_db('locationparisonline',$db);
$sql = 'SELECT * FROM dispo';
$req = mysql_query($sql)or die('Erreur SQL !<br />'.$sql.'<br />'.mysql_error());
while($data = mysql_fetch_assoc($req))
{
$id = $data['id'];
}
if($jour == date("d") && $m == date("n")) //Si la variable $jour correspond à aujourd'hui, la case est d'une couleur différente
{echo "<td class=\"aujourdhui\">$jour</td>";}
elseif($id > 0){
//----------[DEBUT BOUCLE]------------
$whileRound = 0;
while($whileRound <= $id)
{
while($data = mysql_fetch_assoc($req))
{
// on affiche les informations de l'enregistrement en cours
list($ad, $md, $jd) = explode("-", $data['begin_date']);
list($af, $mf, $jf) = explode("-", $data['end_date']);
if($a >= $ad && $a <= $af && $m >= $md && $m <= $mf && $jour >= $jd && $jour <= $jf)
{echo "<td class=\"booked\">$jour</td>";}
else{$whileRound++;}
}
//------------[FIN BOUCLE]------------
mysql_close();
}
}
// C'est un jour libre et comme les autres
else{echo "<td class=\"jour\">$jour</td>";}
//On passe au lendemain
$jour++;
/*Si $jour est plus élevée que le nombre de jours du mois, c'est que c'est la fin du mois!
On remplit les cases vides avec les premiers jours des mois suivants, on ferme le tableau,
et on met la variable $i à 41 pour sortir de la boucle */
if($jour > ($nbrjour[$m])){
while($i % 7 != 0){
echo "<td class=\"cases_vides\">$jourmoissuivant</td>";
$i++;
$jourmoissuivant++;
}
echo "</tr></table>".$id;
$i=41;
}
}
// Si i correspond à un multiple de 7, on passe à la ligne suivante dans le tableau
if($i % 7 == 0){echo "</tr><tr>";}
}
}
?>
|
|
vendredi 11 mars 2011 à 09:52:55 |
Re : Problème de boucle / accès BDD

cod57
|
bonjour
c'est ton css que tu devrais posté
et l'adresse de l'original
a++
|
|
samedi 12 mars 2011 à 07:14:29 |
Re : Problème de boucle / accès BDD

satreix
|
Je poste le tout ce soir. Merci de cette réponse rapide. 
|
|
samedi 12 mars 2011 à 20:29:19 |
Re : Problème de boucle / accès BDD

satreix
|
Pour le css:
Code css : /* Règles pour le calendrier de dispoonibilité */
/* TABLEAU */
.cal td{font-family:Verdana;text-align:center;vertical-align:middle}
/* NOM DU MOIS */
td.nom_mois{font-size:8pt;font-style:normal;font-weight:400}
/* FLECHES */
td.fleches{font-size:14pt;font-style:normal;font-weight:400}
/* NOMS DES JOURS*/
tr.noms_jours{width:15px;height:15px;font-size:8pt}
/*DATES*/
td.jours{width:15px;height:15px;border:1px solid #3CC;font-size:8pt;background:#cff}
/* AUJOURD'HUI */
td.today{width:15px;height:15px;border:1px solid #000;font-size:8pt;background:#ffc020}
/* CASES DES MOIS PRECEDENTS ET SUIVANTS*/
td.cases_vides{width:15px;height:15px;border:1px solid #F5F5F5;font-size:8pt;color:#C0C0C0}
/* Cases des mois réservés */
td.booked{width:15px;height:15px;border:1px solid #ca33cc;font-size:8pt;background:#ffccfc}
.cal a:link,.cal a:active,.cal a:visited {text-decoration:none;}
Pour la page originale du script j'ai pris : http://www.phpcs.com/codes/CALENDRIER-ULTRA-SIMPLE-PERSONNALISABLE_44133.aspx
Un gros merci
|
|
lundi 14 mars 2011 à 01:03:42 |
Re : Problème de boucle / accès BDD

satreix
|
Bonsoir je me permet d'apporter mes avancées à mon sujet.
D'abord et comme je m'en doutais le bout de code qui casse tout est le code commenté ici.
Code PHP : <?php //Si $jour correspond à aujourd'hui, la class est "today"
if($jour == date("d") && $m == date("n") && $a == date("Y"))
{echo "<td class=\"today\">$jour</td>";}
/* else{
//On veut savoir si le jour appartien à une resa de la table dispo
$db = mysql_connect('localhost', 'root', '');
mysql_query("SET NAMES UTF8");
mysql_select_db('locationparisonline',$db);
$sql = 'SELECT * FROM dispo';
$req = mysql_query($sql)or die('Erreur SQL !<br />'.$sql.'<br />'.mysql_error());
//----------[DEBUT BOUCLE]------------
while($data = mysql_fetch_assoc($req))
{
// on affiche les informations de l'enregistrement en cours
list($ad, $md, $jd) = explode("-", $data['begin_date']);
list($af, $mf, $jf) = explode("-", $data['end_date']);
if($a >= $ad && $a <= $af && $m >= $md && $m <= $mf && $jour >= $jd && $jour <= $jf)
{echo "<td class=\"booked\">$jour</td>";}
}
//------------[FIN BOUCLE]------------
mysql_close();
} */
// C'est un jour non réservé
else{echo "<td class=\"jour\">$jour</td>";}?>
Ce que je veut faire dans cette parti du code:
si on affiche aujourd'hui >> class="today"
si le jour est réservé >> class="booked"
si le jour n'est pas réservé >> class="jour"
Ce que le code fait:
-sans la partie commentée il y a bien affichage du calendrier mais sans la clss booked; tous les jours sauf today sont en class jour
-avec la partie commentée le calendrier n'affiche plus que les jours des autres mois, today et booked, mais plus de jours class jour; à la place il y a du vide.
J'espère que sa peut aider à résoudre mon problème. 
|
|
Cette discussion est classée dans : jour, echo, mois, jours, if
Répondre à ce message
Sujets en rapport avec ce message
Calendrier [ par faabulous ]
Bonsoir ! J'ai, à l'aide d'un livre acheté, essayé de coder un calendrier. J'avais plusieurs erreurs, donc j'ai recopié à la lettre le code du livre
CALENDRIER-RESERVATION SQL [ par xxiv ]
Bonjourj'ai repris ce code ---> http://www.phpcs.com/codes/CALENDRIER-RESERVATION-PHP-MYSQL_40895.aspxet j'aimerais pouvoir appliquer plusieurs style
SUJET POUR QUELQU' UN QUI CONNAIT LE PHP AVEC BASE SQL [ par philou4212 ]
je remercie la personne qui peut me donner un coup de mains sur le sujet je coince un peuVoilà j'ai un calendrier qui fonctionne avec une base sql il
affichage calendrier de gestion des congés [ par babouche12 ]
Bonjour à tous, Je suis en stage en entreprise et je dois refaire certaines fonctionnalités de l'Intranet. La partie Gestion des congés étant trop co
petite erreur dans calendrier dynamique javascript!!! [ par joduak ]
Salut à vous, j'ai un gros problème sur mon calendrier. copier coller le dans un fichier php et lancez le, vous verrez qu'il y a 2 ptites erreurs. J'a
Calendrier [ par kitgraphic ]
Voilà j'ai un calendrier avec des évènement, tout marche bien , mais je voudrais que le jour actuel (la cellule ou il se trouve soit d'une autre coule
Calendrier / Agenda [ par kitgraphic ]
Voilà j'ai un calendrier avec des évènement, tout marche bien , mais je voudrais que le jour actuel (la cellule ou il se trouve soit d'une autre coule
PHP probleme de boucle avec dates [ par infosub ]
Bonjour, je suis confronté à un petit problème de boucle pour ajouter plusieurs jour à une date.. le script ci-dessous calcule le nombre de jours entr
Afficher les jours de la semaine... [ par stevethx27 ]
Bonjour,je tente (en vain) d'afficher sur une ligne les jours de la semaine. J'ai utilisé un script trouvé sur le site que j'ai modifié et ça donne ma
Calendrier - probleme ! [ par xavier1707 ]
bonjour, je souhaite créer un calendrier sur une page en php... pour afficher le mois en cours, pas de problème, tout se passe bien... par contre, la
Livres en rapport
|
Derniers Blogs
ROSLYN FLUENT APIS: ROSLYNHELPER NUGET PACKAGEROSLYN FLUENT APIS: ROSLYNHELPER NUGET PACKAGE par Matthieu MEZIL
Si vous utilisez Roslyn et que vous vous voulez vous simplifier le code du code rewriter, je vous conseille d'installer mon NuGet package RoslynHelper ....(read more) ...
Cliquez pour lire la suite de l'article par Matthieu MEZIL POUR RAPPEL ! LES SPéCIFICATIONS DES PROTOCOLES OFFICE ET SHAREPOINT SONT DISPONIBLES SUR MSDNPOUR RAPPEL ! LES SPéCIFICATIONS DES PROTOCOLES OFFICE ET SHAREPOINT SONT DISPONIBLES SUR MSDN par neodante
Quelle est le point commun entre : Microsoft il y a 10 ans et Apple aujourd'hui ? Réponse: avoir une politique de protocoles propriétaires et fermés :) Car pour rappel (si si je vous assure c'est important de le rappeler), la majorité des spécifications e...
Cliquez pour lire la suite de l'article par neodante JOYEUX ANNIVERSAIRE NIXJOYEUX ANNIVERSAIRE NIX par ebartsoft
Souhaitons un bon et joyeux anniversaire à notre hôte à tous, Nix.
Je ne le répéterais jamais assez mais sans lui rien ne serait possible. Il défit en permanence les lois de la gravité et comme il le dit si bien, si tu lui fais confiance ça devra...
Cliquez pour lire la suite de l'article par ebartsoft IMAGINE CUP 2012, MAKE A SIGN EN FINALEIMAGINE CUP 2012, MAKE A SIGN EN FINALE par junarnoalg
Voilà qui est fait, la nouvelle est officielle ! L'équipe belge "Make a Sign" va au pays des kangourous défendre son projet dans la catégorie Software Design. http://www.imaginecup.com/CompetitionsContent/Competition/WorldwideFinalists.aspx V...
Cliquez pour lire la suite de l'article par junarnoalg KINECT 1.5 IS OUT !KINECT 1.5 IS OUT ! par Vko
La version 1.5 du Kinect For Microsoft vient tout juste de sortir ! Plein de nouveautés: Tracking de squelette en Near Mode Détection en position assise Détection faciale avec un SDK dédié Documentation et des guideline (enfin) Un out...
Cliquez pour lire la suite de l'article par Vko
Logiciels
sDEVIS-FACTURES vlPRO (8.1.0.3)SDEVIS-FACTURES VLPRO (8.1.0.3)sDEVIS-FACTURES vlPRO a été mis au point pour les particuliers, créateurs, entrepreneurs, artisa... Cliquez pour télécharger sDEVIS-FACTURES vlPRO 974 Application Server (12.2.4.6)974 APPLICATION SERVER (12.2.4.6)Développez de puissantes applications dans un environnement de 'cloud computing', clusterisé, séc... Cliquez pour télécharger 974 Application Server vPicture (1.4.2.1)VPICTURE (1.4.2.1)Avec vPicture, hébergez vos images facilement et rapidement.
vPicture est un utilitaire simple, ... Cliquez pour télécharger vPicture Easy-Planning (2.2.1.6)EASY-PLANNING (2.2.1.6)Easy-Planning permet de créer des plannings sous la représentation de diagrammes et est adapté au... Cliquez pour télécharger Easy-Planning COM-BACKUP (2.0)COM-BACKUP (2.0)
COM-BACKUP est un logiciel de sauvegarde qui permet de planifier les sauvegardes de vos dossiers ...
Cliquez pour télécharger COM-BACKUP
|