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 :

[SQL] Réalisation d'un planning en PHP et Sql


Sujet :

PHP & Base de données

  1. #1
    Candidat au Club
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    9
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2007
    Messages : 9
    Points : 4
    Points
    4
    Par défaut [SQL] Réalisation d'un planning en PHP et Sql
    Bonjour, je débute en php et je dois réaliser une interface web simple de réservation de salles de réunion.

    J'ai pensé a organiser ca sous forme d'un emploi du temps, j'ai donc fait mon tableau vide en html et maintenant, je dois récupérer les données de la base de donnée MySQL puis les placer au bon endroit dans le tableau.

    J'ai essayé plusieurs choses sans obtenir le résultat que je souhait. Voici le début de mon code qui génère le tableau :

    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
     
    <?php
    require('_connect.php');
     
    /* communication avec la BDD */
     
    $rq = mysql_query("SELECT * FROM reservation ");
    while($r = mysql_fetch_array($rq))
    {
     
    <table width="750" cellpadding="0" cellspacing="0" border="1">
      <tr valign="middle" bgcolor="#cccccc" style="brd"> 
        <td>&nbsp;</td>
        <td> <div align="center"><font color="#3d3e42">Lundi</font></div></td>
        <td> <div align="center"><font color="#3d3e42">Mardi</font></div></td>
        <td> <div align="center"><font color="#3d3e42">Mercredi</font></div></td>
        <td> <div align="center"><font color="#3d3e42">Jeudi</font></div></td>
        <td> <div align="center"><font color="#3d3e42">Vendredi</font></div></td>
      </tr>
      <tr> 
        <td>8</td>
       <td onMouseOver="this.style.backgroundColor='white'" onMouseOut="this.style.backgroundColor='#d3dce3'";>&nbsp;</td>
     
      </tr>
    ... jusqu'a 18h

    j'ai crée une table contenant les champs suivant : id, jour, semaine, nom, description, duree, heure, salle.

    Je ne sais pas vraiment comment continuer... j'espère que vous pourrez me conseiller.

    Edit :

  2. #2
    Membre averti
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    254
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Avril 2007
    Messages : 254
    Points : 304
    Points
    304
    Par défaut
    Malheureusement, je ne peux pas t'aider, mais j'ai remarqué qu'il y avais un forum dédié aux calendriers en PHP. Peut-être, y aura-t-il là des sources d'inspirations. Il n'est pas nécessaire de réinventer chaque fois la roue.
    Bon courage.

  3. #3
    Candidat au Club
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    9
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2007
    Messages : 9
    Points : 4
    Points
    4
    Par défaut
    Merci beaucoup je ne connaissai pas cette partie du forum

  4. #4
    Candidat au Club
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    9
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2007
    Messages : 9
    Points : 4
    Points
    4
    Par défaut
    Rebonjour, j'ai donc avancé dans mon code, le voici :

    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
    function tableau($rq,$jour, $heure)
    {
     while($r = mysql_fetch_array($rq)) // ca pose probleme ca je ne sais pas ou le metre.
      {
     
     
        // S'il y a une réservation au jour et à l'heure
        if ($r['jour'] == $jour && $r['heure'] == $heure)
        {
    	// Alors on l'affiche en HTML :
     
    	echo '<td>'.$r['nom'].'</td>'; // on affiche le nom de celui qui réserve
        }
      else echo ' <td onMouseOver="this.style.backgroundColor=\'white\'" onMouseOut="this.style.backgroundColor=\'#d3dce3\'";>&nbsp;</td>';
      } // on rempli la case de vide.
     
    } // fin de la fonction
     
    // communication avec la BDD 
     
     
    require('_connect.php'); 
     
    $rq = mysql_query("SELECT * FROM reservation "); // Requête SQL
     
     
    // La boucle principale :
     
    echo ' <table width="750" cellpadding="0" cellspacing="0" border="1"> ';
     
    // Pour chaque jour (+ header)
    for ($i=0; $i < 11; $i++)
    {
      echo '<tr >';
     
      // La première case du header est vide, le reste contient les jours :
      if ($i != 0)
        echo '<td >'.$_heures[$i-1].'</td>'; 
        else
       echo'  <td></td>';
     
      // Puis pour chaque colonne :
     
      for ($j=0; $j < 5; $j++)
      {
        // sur la première ligne on affiche les heures :
        if ($i == 0)
         echo ' <td> <div align="center"><font color="#3d3e42">'.$_jours[$j].'</font></div></td>'; 
        else
          tableau($rq, $_heures[$i-1], $_jours[$j]);
      }
     
     
    }
    Voila le tableau que j'obtient


    Je précise que dans ma table je n'ai que deux entrée, ce doit être pour ca que la boucle ne boucle que deux fois mais je ne sais pas trop comment remédier à ce problème. Merci pour vos conseils

  5. #5
    Membre averti
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    254
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Avril 2007
    Messages : 254
    Points : 304
    Points
    304
    Par défaut
    Quelques remarques, questions, propositions:
    - Trier le query aidera.
    - Comment sont remplies les variables $_heures et $_jours
    - Avec la balise TH, il est possible d'associer un css pour mieux visualiser l'entête.
    - Restructurer le programme. Enlever la fonction tableau. Parcourir dans la boucle principale tout les jours et vérifier que la date à traiter n'est pas la date fetchée. Si ce n'est pas le cas remplir la case vide et passer au jour suivant. Si c'est le cas, remplir la case avec l'événement, faire un fetch et passer à la date suivante. Attention cela ne fonctionne pas s'il y a deux événements le même jour. (Mais modifier l'analyse pour tenir compte de ce point ne devrait pas poser de problème).
    Je reste persuadé que tu es en train de réinventer la roue.

  6. #6
    Candidat au Club
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    9
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2007
    Messages : 9
    Points : 4
    Points
    4
    Par défaut
    Alors tout d'abord je rempli mes variables de cette manière :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    $_jours=array('lundi', 'mardi', 'mercredi', 'jeudi', 'vendredi');
    $_heures=array(8, 9,10, 11, 12, 14, 15,16, 17, 18);
    Qu'entend tu par trier le query ?

    si on parle de la même chose, j'ai pensé a

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $rq = mysql_query("SELECT * FROM reservation WHERE semaine=$semaine AND salle=... ");
    Je vais essayer d'enlever la fonction, mais je ne vois pas pourquoi "faire un fetch". Peux tu m'expliquer ?

    Merci

  7. #7
    Membre averti
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    254
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Avril 2007
    Messages : 254
    Points : 304
    Points
    304
    Par défaut
    Plutôt quelque chose comme ça:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SELECT * FROM reservation ORDER BY heure, jour
    Donc le code ressemblerait à cela: (Attention, ce code ne fonctionnera pas sans quelques aménagements):
    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
    $_jours=array('','lundi', 'mardi', 'mercredi', 'jeudi', 'vendredi');
    $_heures=array(8, 9,10, 11, 12, 14, 15,16, 17, 18);
    <table width="750" cellpadding="0" cellspacing="0" border="1">
      <tr valign="middle" bgcolor="#cccccc" style="brd"> 
    for($i = 0; $i < 7; $i++)
    {
      print('<th align="center"><font color="#3d3e42">'.$_jours[$i].'</font></th>');
    }
    </tr>
    $rq = mysql_query("SELECT * FROM reservation WHERE semaine = "$semaine" ORDER BY heure, jour");
    $r = mysql_fetch_array($rq);
    for($heureCourante = 8; $heureCourant < 19, $heureCourante++)
    {
      print("<td>".$heureCourante"</td>\n");
      for($jourCourant = 1; $jourCourant < 6; $jourCourant++)
      {
        print("<td>");
        $nextRecord = true;
        while($nextRecord)
        {
          if($jourCourant == $r['jour_du_record'] && $heureCourant == $r['heure_du_record'])
          {
            //ici il faut faire un print du contenu du record
          }
          else
          {
            $nextRecord = false;
          }
          $r = mysql_fetch_array($rq);
          if(!$r)
          {
            $nextRecord = false;
          }
        }
        print("</td>");
      }
      print("</tr>");
    }
    print("</table>");
    Ne l'ayant pas testé, je ne garanti pas qu'il fonctionne.

Discussions similaires

  1. PHP -- PL/SQL -- ORACLE
    Par Torando59 dans le forum PL/SQL
    Réponses: 4
    Dernier message: 23/01/2006, 12h28
  2. bon plan pr creer un .sql
    Par molesqualeux dans le forum SQL Procédural
    Réponses: 1
    Dernier message: 22/01/2006, 10h25
  3. [SQL] des liens de présentations en php
    Par jack_1981 dans le forum PHP & Base de données
    Réponses: 2
    Dernier message: 15/01/2006, 23h47
  4. comment creer un plan de maintenance sur sql server 2000
    Par sorel dans le forum MS SQL Server
    Réponses: 1
    Dernier message: 27/12/2005, 15h03
  5. [debutant]Plan de maintenance sous sql serveur 2000
    Par christophebmx dans le forum MS SQL Server
    Réponses: 2
    Dernier message: 05/05/2005, 12h18

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