IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

PHP & Base de données Discussion :

Calendrier en PHP avec fonction de réservation


Sujet :

PHP & Base de données

  1. #1
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Février 2005
    Messages
    48
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Février 2005
    Messages : 48
    Points : 30
    Points
    30
    Par défaut Calendrier en PHP avec fonction de réservation
    Bonjour tout le monde.

    J'ai un petit problème avec une fonction PHP. J'ai fait un calendrier en php qui fonctionne très bien. Je cherche maintenant à colorier d'une certaine couleur les cases de mon calendrier, correspondant a des valeurs venant d'une base de données. Ce système me permettrait d'afficher un jour réservé ou non en fonction de la couleur...

    Voici donc mon code :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    <?
    include("../include/mysql_connect.php");
    extract($_GET,EXTR_PREFIX_ALL,'g');
    $req = mysql_query("SELECT jour FROM c_calendrier WHERE id_cat='$g_id' AND mois='$g_m' AND annee='$g_a'");
    //fonction pour le calendrier
    function DaysInMonth($mois,$an){
       if($mois==2)
          if($an%4) return 28;
          elseif($an%100) return 29;
          elseif($an%1000) return 28;
          else return 29;
       elseif(($mois==4)||($mois==6)
          ||($mois==9)||($mois==11)) return 30;
       return 31; }
    //fonction pour colorier les cases réservées
    function color($courant){
    while($data = mysql_fetch_array($req)){
    				  if($data['jour'] == $courant){return "bgcolor='#D6D6D6'";}
    }
    return "bgcolor='#FF0000'";
    } ?>
    <?
    if($m=="") $m = date("n");
    if($a=="") $a = date("Y");
    $mnom = Array("","Janvier","Février","Mars","Avril","Mai","Juin","Juillet","Août","Septembre","Octobre","Novembre","Décembre");
    $dayone = date("w",mktime(0,0,0,$m,1,$a));
    if($dayone==0) $dayone=7;
    ?>
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml">
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
    <title>Document sans titre</title>
    </head>
    <body>
    <div id="base">
    <div id="Titre"><img src="images/titres/annonces_cp.jpg" width="775" height="42" /></div><br /><br /><br /><br /><br /><br /><br />
    	<div align="center" class="normal">
    		<? for($i=$a-5;$i<=$a+5;$i++) {?>
    		   <a href="<? echo "index.php?page=hotels_cp_c&id=$g_id&m=".$m."&a=".$i; ?>">
    			  <? echo $i; ?></a>
    		<? } ?>
    		<br><br>
    		<font size=4><? echo $mnom[$m]." ".$a; ?></font>
    		<br><br>
    		<table width="50%">
    		   <tr bgcolor="#0033FF" class="blanc">
    			  <th>Lun</th><th>Mar</th><th>Mer</th><th>Jeu</th><th>Ven</th><th>Sam</th><th>Dim</th>
    		  <tr><th></th></tr>
    		   <? for($i=1;$i<=42;$i++){
    				  if($i%7 == 1) { ?></tr><tr><? }
    				  if(($i<daysInMonth($m,$a)+$dayone) && ($i>=$dayone)){ ?>
    					 <th <? color($i-$dayone+1) ?>><? echo $i-$dayone+1; ?></th>
    				  <? } else { ?>
    					 <th bgcolor="#F2F2F2">&nbsp;</th>
    				  <? }
    		   	} ?>
    		</table><br />
    		<? for($i=1;$i<=12;$i++) { ?>
    		   <a href="<? echo "index.php?page=hotels_cp_c&id=$g_id&m=".$i."&a=".$a; ?>">
    			  <? echo substr($mnom[$i],0,4); ?></a>
    		<? } ?>	
    	</div>
    </div>
    </body>
    </html>
    J'ai une erreur php style : Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in /home/www/fcaa1e88f1b09bc2eae2b0158058dc27/web/membres/annonces/compl/hotels_cp_c.php on line 17, correspondant à la ligne ou je fait le "while dans ma fonction color"

    Je ne comprends cependant pas cette erreur, car j'ai refait le même while pour afficher les valeurs de ma DB en dessous du calendrier, et elles s'affichent correctement...

    Si vous avez des problèmes pour accéder faites moi signe, mais ça devrait jouer...

    Merci d'avance pour votre aide !

  2. #2
    Membre du Club
    Inscrit en
    Juin 2002
    Messages
    44
    Détails du profil
    Informations forums :
    Inscription : Juin 2002
    Messages : 44
    Points : 55
    Points
    55
    Par défaut
    Votre requête est vide. en effet, $req est décarée en dehors de la variable, du coup qd vous exécutez votre requête, $req est vide.

    Deux solutions: utiisation de global ou mettre $req comme praramètre de la fonction color

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    <?
    include("../include/mysql_connect.php");
    extract($_GET,EXTR_PREFIX_ALL,'g');
    $req = mysql_query("SELECT jour FROM c_calendrier WHERE id_cat='$g_id' AND mois='$g_m' AND annee='$g_a'");
    //fonction pour le calendrier
    function DaysInMonth($mois,$an){
       if($mois==2)
          if($an%4) return 28;
          elseif($an%100) return 29;
          elseif($an%1000) return 28;
          else return 29;
       elseif(($mois==4)||($mois==6)
          ||($mois==9)||($mois==11)) return 30;
       return 31; }
    //fonction pour colorier les cases réservées
    function color($courant){
    global $req;
       
    while($data = mysql_fetch_array($req)){
    				  if($data['jour'] == $courant){return "bgcolor='#D6D6D6'";}
    }
    return "bgcolor='#FF0000'";
    } ?>
    <?
    if($m=="") $m = date("n");
    if($a=="") $a = date("Y");
    $mnom = Array("","Janvier","Février","Mars","Avril","Mai","Juin","Juillet","Août","Septembre","Octobre","Novembre","Décembre");
    $dayone = date("w",mktime(0,0,0,$m,1,$a));
    if($dayone==0) $dayone=7;
    ?>
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml">
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
    <title>Document sans titre</title>
    </head>
    <body>
    <div id="base">
    <div id="Titre"><img src="images/titres/annonces_cp.jpg" width="775" height="42" /></div><br /><br /><br /><br /><br /><br /><br />
    	<div align="center" class="normal">
    		<? for($i=$a-5;$i<=$a+5;$i++) {?>
    		   <a href="<? echo "index.php?page=hotels_cp_c&id=$g_id&m=".$m."&a=".$i; ?>">
    			  <? echo $i; ?></a>
    		<? } ?>
    		<br><br>
    		<font size=4><? echo $mnom[$m]." ".$a; ?></font>
    		<br><br>
    		<table width="50%">
    		   <tr bgcolor="#0033FF" class="blanc">
    			  <th>Lun</th><th>Mar</th><th>Mer</th><th>Jeu</th><th>Ven</th><th>Sam</th><th>Dim</th>
    		  <tr><th></th></tr>
    		   <? for($i=1;$i<=42;$i++){
    				  if($i%7 == 1) { ?></tr><tr><? }
    				  if(($i<daysInMonth($m,$a)+$dayone) && ($i>=$dayone)){ ?>
    					 <th <? color($i-$dayone+1) ?>><? echo $i-$dayone+1; ?></th>
    				  <? } else { ?>
    					 <th bgcolor="#F2F2F2">&nbsp;</th>
    				  <? }
    		   	} ?>
    		</table><br />
    		<? for($i=1;$i<=12;$i++) { ?>
    		   <a href="<? echo "index.php?page=hotels_cp_c&id=$g_id&m=".$i."&a=".$a; ?>">
    			  <? echo substr($mnom[$i],0,4); ?></a>
    		<? } ?>	
    	</div>
    </div>
    </body>
    </html>

  3. #3
    Membre expert
    Homme Profil pro
    Architecte de système d'information
    Inscrit en
    Juillet 2004
    Messages
    2 725
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Sarthe (Pays de la Loire)

    Informations professionnelles :
    Activité : Architecte de système d'information

    Informations forums :
    Inscription : Juillet 2004
    Messages : 2 725
    Points : 3 338
    Points
    3 338
    Par défaut
    Je sait ca a pas de rapport mais tu a mit le logo XHTML hors:
    http://validator.w3.org/check?verbos...%3Dt%26lg%3Dfr
    104 erreurs, tu n'as donc pas le droit de le mettre...
    Le validateur CSS merde en ce moment mais bon a mon avis meme topo...

  4. #4
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Février 2005
    Messages
    48
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Février 2005
    Messages : 48
    Points : 30
    Points
    30
    Par défaut
    Eh ben..Faut que je revoie mes bases du PHP moi... Je pensais que $req était accessible depuis n'importe ou.. Apparemment pas...

    J'ai donc mis $req dans ma fonction color, et je n'ai plus d'erreurs.. Mais mes les couelurs c'est encore pas trop ça... Je laisse le theard ouvert au cas ou j'aurais encore 1-2 questions...

    Pour le XHTML oui j'ai vu que mon code est encore truffé d'erreurs... Je vais soit enlever les logos en fin de projet, soit corriger toutes les erreurs...

    Merci pour vos réponses en tout cas !

  5. #5
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Février 2005
    Messages
    48
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Février 2005
    Messages : 48
    Points : 30
    Points
    30
    Par défaut Calendrier
    Eh bien en fait j'ai encore une question concernant mon calendrier :

    J'ai dans ma base de données des dates, par exemple :

    id | id_cat | jour | mois | annee
    -------------------------------
    1.....12.........13......5.......2007
    2.....12.........20......5.......2007

    Mon calendrier affiche les jours avec la boucle for. Et dans cette boucle je lance ma fonction "color(jourcourant)", qui va passer tous les enregistrements de ma table (d'après ma requête), et qui regarde si le jour courant et un des enregistrements de ma table sont égaux. Si c'est le cas les cases sont coloriées en rouge, sinon en noir.

    Je n'ai plus d'erreurs, mais j'ai par contre tous mes jours qui sont en rouge, comme si tout correspondait.. Je ne vois pas trop ce que je fait de faux..

    Pouvez-vous m'aider ?

    Merci beaucoup

  6. #6
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Février 2005
    Messages
    48
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Février 2005
    Messages : 48
    Points : 30
    Points
    30
    Par défaut
    Quelque'un aurait une idée ? Autre que de changer le mot de passe de mon compte ??

    Je pense pas que le problème soit trop compliqué, c'est peut être moi qui pense pas bien mon truc.... Pour l'identification merci de regarder au premier post..

    Merci d'avance !

Discussions similaires

  1. [MySQL] problème fonction php avec LAST_INSERT_ID()
    Par carmen256 dans le forum PHP & Base de données
    Réponses: 5
    Dernier message: 07/12/2006, 10h51
  2. Problème mise en page sous IE avec fonction Php
    Par Yekhen dans le forum Balisage (X)HTML et validation W3C
    Réponses: 6
    Dernier message: 17/05/2006, 01h49
  3. [PHP-JS] Problème exécution fonction php avec js
    Par cokilulu dans le forum Général JavaScript
    Réponses: 4
    Dernier message: 15/03/2006, 22h34
  4. [PHP-JS] une fonction php avec parametres javascript
    Par kagura dans le forum Langage
    Réponses: 1
    Dernier message: 02/03/2006, 19h10
  5. [Calendrier] Multi-utilisateurs en php avec les ACL
    Par moabomotal dans le forum EDI, CMS, Outils, Scripts et API
    Réponses: 5
    Dernier message: 06/12/2005, 18h51

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo