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 :

création d'un calendrier mensuel [MySQL]


Sujet :

PHP & Base de données

  1. #1
    Membre actif
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Février 2007
    Messages
    758
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Finance

    Informations forums :
    Inscription : Février 2007
    Messages : 758
    Points : 279
    Points
    279
    Par défaut création d'un calendrier mensuel
    Bonsoir, je suis en train de faire un calendrier mensuel pour prise de rendez vous, et je rencontre un problème sur la façon de faire !

    Voila je présente le calendrier du mois en cours avec une colonne date, horaire, et les lignes dates sont remplis automatiquement par les jours du mois.
    avec ce script :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
      </tr>
        <?php for ($i = 1; $i <= date('t'); $i++)
    { ?>
    <tr>
    		<td></td>
          <td><?php
    	$date = date("m-Y"); 
    	$lg_chaine = strlen($i);
    	if ($lg_chaine == 1){
    		$i = '0'.$i;
    	}
    	echo $i.'-'.$date.'<br/>';
    ?></td>
    ainsi j'ai la date de chaque jour, et à coté j'ai mis un bouton 'insérer un rdv' qui permet à l'utilisateur de rentrer le rdv pour le jour sélectionner, voici ainsi ma table sql nommé 'planning' :
    • id (auto-incrémenté dans la table)
    • date (champ date pour la date du rdv)
    • horaire_debut (heure du debut du rdv champ time)
    • horaire_fin (heure de fin du rdv)
    • nom (l'id de la personne issu d'une autre table)


    L'insertion fonctionne bien, mais le problème réside dans l'affichage du planning, en effet j'ai crée une fonction PHP qui m'affiche les données issu de ma table planning d’après la date passé en paramétre et le type de valeur souhaité en retour, 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
    function afficher($param1, $col){
    if ($col == 'PERSONNE'){
    				global $formation; // variable globale
    		$query_afficher = "SELECT CONCAT(personnels.pers_nom, ' ' ,personnels.pers_prenom) AS name FROM 
    			planning, personnels
    			WHERE planning.nom = personnels.id_pers
    			AND DATE_FORMAT(planning.date,'%d-%m-%Y')='$param1'"; 
    		$afficher = mysql_query($query_afficher, $formation) or die(mysql_error());
    		$row_afficher = mysql_fetch_assoc($afficher);
    		$resultat =  $row_afficher['name'];
    		return $resultat;
    	}elseif ($col == 'HEURE'){
    				global $formation; // variable globale
    		$query_afficher = "SELECT CONCAT(DATE_FORMAT(h_debut, '%H:%i'),' a ',DATE_FORMAT(h_fin, '%H:%i')) AS horaire
    			FROM planning
    			WHERE DATE_FORMAT(planning.date,'%d-%m-%Y')='$param1'"; 
    		$afficher = mysql_query($query_afficher, $formation) or die(mysql_error());
    		$row_afficher = mysql_fetch_assoc($afficher);
    		$resultat =  $row_afficher['horaire'];
    		return $resultat;
    	}
    }
    et ensuite dans le tableau j'appel les fonctions pour m'afficher les resultats (un peu lourd je sais)
    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
      <table id='liste'>
        <tr>
          <td><div align="center"><h9>Date</h9></div></td>
          <td><div align="center"><h9>Heure</h9></div></td>
          <td><div align="center"><h9>Nom et prenom</h9></div></td>
        </tr>
        <?php for ($i = 1; $i <= date('t'); $i++)
    { ?>
    <tr>
    		<td></td>
          <td><?php
    	$date = date("m-Y"); 
    	$lg_chaine = strlen($i);
    	if ($lg_chaine == 1){
    		$i = '0'.$i;
    	}
    	echo $i.'-'.$date.'<br/>';
    ?></td>
          <td><center><?php echo afficher($i.'-'.$date, 'HEURE');?></center></td>
          <td><center><?php echo afficher($i.'-'.$date, 'PERSONNE');?></center></td>
          </tr>
          <?php } ?>
      </table>
    Le problème réside dans le fait que si par exemple j'ai deux rendez vous le même jour, je n'ai que le dernier qui s'affichera dans ma ligne du jour concerné !
    Il faudrait que j'ai crée une seconde ligne si un deuxième rdv le même jour !!
    (j'aurais pu afficher simplement ma requête sql planning avec les rdv saisis mais le soucis est que je n'aurais pas eu tous les jours du mois, alors que l'utilisateur souhaite les avoirs !)
    comment faire pour bien faire ?

  2. #2
    Expert éminent sénior
    Avatar de rawsrc
    Homme Profil pro
    Dev indep
    Inscrit en
    Mars 2004
    Messages
    6 142
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Dev indep

    Informations forums :
    Inscription : Mars 2004
    Messages : 6 142
    Points : 16 545
    Points
    16 545
    Billets dans le blog
    12
    Par défaut
    Salut,

    j'ai repris ton 1er code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    $interval = new DateInterval('P1D');
        $date     = new DateTime("{$year}-{$month}-01");
        while($date->format('n') == $month) {
            echo
    <<<HTML
        <td></td>
        <td>{$date->format('d-m-Y')}<br /></td>
    HTML;
            $date->add($interval);
        }
    Ensuite pour ton problèmes de lignes, tu devras insérer autant de <tr></tr> que de rendez-vous et tu pourras les voir comme un seule avec la propriété rowspan.
    Tu peux aussi peut-être assimiler ta liste de rendez-vous à une liste <u|ol><li></li></u|ol>, je ne te garantit rien mais cela pourrait peut-être te simplifier le rendu.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Création d'un calendrier
    Par Arnich dans le forum Collection et Stream
    Réponses: 4
    Dernier message: 21/06/2008, 00h53
  2. création d'un calendrier
    Par sasuma dans le forum VB 6 et antérieur
    Réponses: 1
    Dernier message: 14/06/2008, 21h21
  3. Création d'un calendrier de type outlook
    Par borislenium dans le forum Modélisation
    Réponses: 8
    Dernier message: 13/05/2008, 10h24
  4. Création d'un calendrier
    Par cheva52 dans le forum C++Builder
    Réponses: 3
    Dernier message: 11/01/2008, 16h36
  5. Création d'un calendrier
    Par CleeM dans le forum Delphi
    Réponses: 10
    Dernier message: 05/06/2007, 16h31

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