Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1369 connectés 

  FORUM HardWare.fr
  Programmation
  PHP

  [PHP/MYSQL]Planning

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

[PHP/MYSQL]Planning

n°1694817
cakay
Posté le 29-02-2008 à 00:17:17  profilanswer
 

bonsoir,
 
j'essaye de mettre au point un script PHP permettant d'afficher un planning dont les données proviennent de MySQL
 
Le planning est un tableau ayant comme en-tête les jours de la semaine :
 

Code :
  1. LUNDI   MARDI  MERCREDI   JEUDI VENDREDI
  2. MATIN                x             x                   
  3. MATIN                               x           
  4. MIDI        x          x
  5. MIDI         x


 
mon problème est le suivant, je n'arrive pas à créer les lignes qui permettront de dessiner le planning.
j'ai réussi pour la première ligne, mais pas pour les autre.
 
comment isoler les événements superposés, créer les nouvelles ligne et les intégrer
 
exemple :

Code :
  1. $rq2 = mysql_query("select * from  planning  WHERE plagehoraire = 1  ORDER BY jour " );
  2. //plagehoraire = 1 : matin ; jour : jour de la semaine
  3. //résultat :  
  4. 1 1
  5. 1 3
  6. 1 3
  7. 1 5
  8. 1 5
  9. 1 5

mood
Publicité
Posté le 29-02-2008 à 00:17:17  profilanswer
 

n°1694842
leflos5
On est ou on est pas :)
Posté le 29-02-2008 à 01:31:00  profilanswer
 

Je comprends pas la deuxième partie.
 
J'ai il y a pas mal d'années essayé un truc dans le genre. Je me suis heurté à des grands maux. Surtout pour une raison avec le recul: je suis borné et parfois la vérité est ailleurs :D
 
Grande difficulté aussi d'arriver à pondre un code accessible et ayant du sens. C'est là que ça a bloqué en fait en essayant d'utiliser un tableau, la logique de formation d'un tableau ne colle pas aux besoins. Faut-il donc se borner à chercher dans cette direction? Ou alors est ce le stockage et la récupération qui n'est pas adaptée au tableau html?
 
Voilà, je fais pas avancer le smilblick mais des pistes ;)
 
 
Et surtout une interrogation: comment peut-on avoir 2 évènements superposés? On est dans le supra conceptuel, là y'a un hic ;)

n°1694928
cakay
Posté le 29-02-2008 à 10:28:59  profilanswer
 

je m'arrache également les cheveux... j'ai passé toute la nuit dessus, et je me dis même que je dois être une grosse m... bref !

 

je vais essayer d'expliquer au mieux :

 

la première colonne est la plage horaire
la deuxième colonne jusqu'à la sixième sont les jours de la semaine

 

les plages horaires se découpent en matin et après-midi

 

je fais une première requête pour déterminer le nombre maximum de ligne nécessaire dans chaque tranche

Code :
  1. // pour le matin
  2. $reqMatin = mysql_query( "select COUNT(id) as tot from  planning  WHERE plagehoraire = 1 GROUP BY jour ORDER BY tot DESC LIMIT 1  " );
  3. $count1 = mysql_result($reqMatin,0,0);
  4. //résultat de mon précédent exemple : 3
  5. //je sais  qu'il me faudre 3 <tr> , donc 3 lignes
 


une fois ceci fait, j'effectue donc ma requête principale

 
Code :
  1. $rq2 = mysql_query("select * from  planning  WHERE plagehoraire = 1  ORDER BY jour " );
  2. //plagehoraire = 1 : matin ;
  3. //jour = 1 ou 2 ou 3 ou 4 ou 5 : jour de la semaine
  4. //résultat :
  5. 1 1
  6. 1 3
  7. 1 3
  8. 1 5
  9. 1 5
  10. 1 5
 

Explications :

 

la première colonne est la tranche horaire, ici c'est le matin
la deuxième colonne représente les jours dans lesquels il y a une info à afficher

 

l'affichage que je souhaite avoir est le suivant :

 
Code :
  1. <table>
  2. <tr><td></td><td>lundi</td><td>mardi</td><td>mercredi</td><td>jeudi</td><td>vendredi</td></tr>
  3. <tr><td>matin</td><td>1</td><td></td><td>3</td><td></td><td>5</td></tr>
  4. <tr><td>matin</td><td></td><td></td><td>3</td><td></td><td>5</td></tr>
  5. <tr><td>matin</td><td>1</td><td></td><td></td><td></td><td>5</td></tr>
  6. </table>
  7. //dans une version plus visuelle :
  8. | | lundi | mardi | mercredi | jeudi | vendredi |
  9. |m|   1   |       |     3    |       |     5    |
  10. |m|       |       |     3    |       |     5    |
  11. |m|       |       |          |       |     5    |
 


Message édité par cakay le 29-02-2008 à 10:30:08
n°1695046
babasss
Posté le 29-02-2008 à 13:30:59  profilanswer
 

Comme par chance les jours de la semaine sont toujours les mêmes et qu'ils ne varient pas, on peux faire un peu de dur...

Code :
  1. print '<table>
  2. <tr><td></td><td>lundi</td><td>mardi</td><td>mercredi</td><td>jeudi</td><td>vendredi</td></tr>';
  3. $rq2 = mysql_blabla;
  4. while ($row = mysql_blabla2($rq2))
  5. {
  6. print '<tr>';
  7. switch ($row['jour'])
  8. {
  9.  case 1:
  10.   print '<td>X</td>'; break;
  11.  case 2:
  12.   print '<td>X</td>'; break;
  13.  ....
  14.  default:
  15.   print '<td></td>'; break;
  16. print '</tr>';
  17. }


Le code est un peu fait à l'arrache, tu comprends mon idée ?

 

Edit : En fait, je me rends compte que mon truc est un peu bancal car il me manque une info. Pourquoi dans ton exemple y-a-t'il plusieurs chiffres pour une même plage horaire ? la semaine ?

 


Message édité par babasss le 29-02-2008 à 13:36:28

---------------
Feedback : http://forum.hardware.fr/hfr/Achat [...] 2666_1.htm
n°1695105
cakay
Posté le 29-02-2008 à 14:34:52  profilanswer
 

parce que la plage horaire dans ce cas là est matin ou après-midi. 1 indique que c'est le matin. la même chose se produit en suite pour l'après-midi, à ce moment la réf est 2

 

les chiffres 1,3,5 sont les numéros des jours où il y a une info à afficher dans la case du jour, à la place viens par exemple un nom...


Message édité par cakay le 29-02-2008 à 14:36:27
n°1695115
babasss
Posté le 29-02-2008 à 14:50:20  profilanswer
 

Si je comprends ton explication, cela veut dire que plusieurs personnes ont un creneau sur la matinée ?


---------------
Feedback : http://forum.hardware.fr/hfr/Achat [...] 2666_1.htm
n°1695213
cakay
Posté le 29-02-2008 à 17:03:24  profilanswer
 

oui c'est ça

n°1695223
babasss
Posté le 29-02-2008 à 17:12:36  profilanswer
 

cakay a écrit :

oui c'est ça


Donc la solution ci-dessous doit fonctionner, en remplacant les X par le nom de la personne.

Code :
  1. print '<table>
  2. <tr><td></td><td>lundi</td><td>mardi</td><td>mercredi</td><td>jeudi</td><td>vendredi</td></tr>';
  3. $rq2 = mysql_blabla;
  4. while ($row = mysql_blabla2($rq2))
  5.  {
  6.   print '<tr>';
  7.   switch ($row['jour'])
  8.   {
  9.    case 1:
  10.     print '<td>X</td><td></td><td></td><td></td><td></td>'; break;
  11.    case 2:
  12.     print '<td></td><td>X</td><td></td><td></td><td></td>'; break;
  13.    ....
  14.    default:
  15.     print '<td></td><td></td><td></td><td></td><td></td>'; break;
  16.    }
  17.    print '</tr>';
  18. }


Message édité par babasss le 29-02-2008 à 17:15:14

---------------
Feedback : http://forum.hardware.fr/hfr/Achat [...] 2666_1.htm
n°1695299
cakay
Posté le 29-02-2008 à 18:47:20  profilanswer
 

je te remercie pour tes recherches et ton aide...
 
je vais tester cette solution, je te tiens au courant.
 
pour juste détailler un peu plus, sur la première ligne, j'ai trois personnes. ensuite sur la deuxième, j'en ai deux. et enfin sur la troisième, une
 
mais évidemment cela n'est pas fixé à l'avance, ni figé. il peut y avoir sur une colonne 4, 5 ou plus de lignes. c'est la colonne ayant le plus de ligne qui va définir le tableau pour le matin lorsque c'est le matin. la chose se répète pour l'autre tranche horaire
 
merci de ton aide, je vais tester ça

n°1695867
cakay
Posté le 02-03-2008 à 19:06:39  profilanswer
 

hello !
je me suis débrouillé autrement.
 
je me suis dit qu'il fallait mieux afficher les infos du jour et de la période, jour par jour.
le module ressemble donc à ça :
 

Code :
  1. $jourTexte=array('','lundi', 'mardi', 'mercredi', 'jeudi', 'vendredi');
  2. $plageH=array(1=>'Matin','Apr&egrave; midi');
  3. print('<table>');
  4. // en tête de colonne
  5. print('<tr>');
  6. for($k = 0; $k < 6; $k++)
  7. {
  8.  print('<th>'.$jourTexte[$k].'</th>');
  9. }
  10. print('</tr>');
  11. // les 2 plages horaires : matin - midi
  12. for($h = 1; $h < 3; $h++)
  13. {
  14. print('<tr><th>'.$plageH[$h].'</th>');
  15. // les infos pour chaque jour
  16. for($j = 1; $j < 6; $j++)
  17. {
  18.  print('<td>');
  19.  $rq = mysql_query("select * from  matable  WHERE plagehoraire = '$h'  AND jour = '$j' " );
  20.  print('<table>');
  21.  while ($r = @mysql_fetch_array($rq)) {
  22.    print('<tr><td >'.$r[nom].'</td></tr>');
  23.  }
  24.  print('</table></td>');
  25. }
  26. print('</td></tr>');
  27. }
  28. print('</table>');


merci pour votre aide


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  PHP

  [PHP/MYSQL]Planning

 

Sujets relatifs
Driver PDO pour MySQL, necessaire ?Problème d'import mysql ?
[MySQL] Héritage ?[MySQL] Requète aléatoire en fonction du jour
[MYSQL] Volume des enregistrements NULL ?Script PHP / upload
[MySql] problème de décimalesglisser/déposer et MySQL
[Travail de Style] Planning en PHP et MysqlAgenda ou planning en PHP/Mysql qui a déja fait ??
Plus de sujets relatifs à : [PHP/MYSQL]Planning


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR