calendrier et base de données !! complex ... [résolu]

calendrier et base de données !! complex ... [résolu] - PHP - Programmation

Marsh Posté le 12-06-2005 à 23:47:22    

bonjours !
voila je veux faire un calendrier pour ma classe !
un seul compte pour tous !
quand il se connecte il peuvent ajouter des trucs dans l'agenda !
je veux quand je crée mon agenda que lorsqu'il y a un evenement il mette en fond la case du jour en rouge
donc je stocke depuis la table des membres dans un tableau array les differentes dates du mois que l'on affiche
et je lui dit in_array( jour_en_cretion , tableau)  
il me dit non !!
voir code
 
 
voila la structure de la table :

Code :
  1. CREATE TABLE `agenda` (
  2.   `id_a` int(10) NOT NULL auto_increment,
  3.   `ag_msg` varchar(250) NOT NULL default '', // message sur la date
  4.   `ag_m` int(3) NOT NULL default '0',  // mois  
  5.   `ag_a` int(4) NOT NULL default '0',  // année  
  6.   `ag_j` int(3) NOT NULL default '0', // jour  
  7.   `ag_heure` int(3) NOT NULL default '0', // heure  
  8.   `ag_duree` int(3) NOT NULL default '0',  // duree  
  9.   `a_type` int(2) NOT NULL default '0',
  10.   PRIMARY KEY  (`id_a`)
  11. ) TYPE=MyISAM AUTO_INCREMENT=48 ;


 

Code :
  1. <?php
  2.     if(!isset($_GET['mois'],$_GET['an']))
  3. {
  4. $ts = mktime();
  5. $tab = getdate($ts);
  6. $_GET['mois'] = $tab['mon'];
  7. $_GET['an'] = $tab['year'];
  8. }
  9. $id_m=$_SESSION['id_m'];
  10. $recherche1=$_GET['mois'];
  11. $recherche2=$_GET['an'];
  12. include('connexion.php');
  13. mysql_connect($serveur, $identifiant, $mdp);
  14. mysql_select_db($bdd) or die($erreur1);
  15. $sql0="SELECT * FROM $table_agenda WHERE ag_m='$recherche1' and (ag_a='$recherche2' or ag_a='3000') and ag_idm='$id_m' order by ag_heure asc";
  16. echo $sql0;
  17. $sql = mysql_query("$sql0" );
  18. echo mysql_error();
  19. $numsite = mysql_num_rows($sql);
  20. $i=0;
  21. $contenu="''";
  22. WHILE($numsite!=$i)
  23.   {
  24.   $contenu .= ",'";
  25.    $contenu .= mysql_result($sql,$i,"ag_j" );
  26.    $contenu .="'";
  27. //;
  28.    $i++;
  29.    }
  30.    $j_agenda = array ($contenu);
  31.    mysql_close(); :hello:
  32.  
  33. function calendrier($jour,$mois,$annee) //renvoi un calendrier
  34. {
  35. //variables
  36. $font_jour_couleur="#003366";
  37. $font_jour="#ffffff";
  38. $bg_jour="#003366";
  39. $bg_reste="#ffaa00";
  40. $bg_occ="000000";
  41. $font="family='Verdana, Arial, Helvetica' size='10Px'  ";
  42. $ts = mktime(1,1,1,$mois,1,$annee); //Recuperation du timestamp du numero du jour de base cad le numero du jour du premier jour du mois ouf !
  43. $tab = getdate($ts); //Recuperation du numero du jour de base, le numero du jour du premier jour du mois
  44. $j = 1 ; //premier jour  
  45. $nbjour = date('t',$ts) ;//nombre de jour dans le mois
  46. $nom_mois = array('Janvier','F&eacute;vrier','Mars','Avril','Mai','Juin','Juillet','Août','Septembre','Octobtre','Novembre','D&eacute;cembre');//Nom des moins in French
  47. //cette sequence corrige le numero du dimanche. PHP donne 0, dans notre cas 7 est préférable, donc..
  48. if($tab['wday'] == 0)
  49.  {
  50.  $dp = 7 ;
  51.  }
  52.  else
  53.  {
  54.  $dp = $tab['wday'] ;
  55.  }
  56. //Affichage de l'entête du calendrier  
  57. echo "<table cellpadding='2' cellspacing='1' border='0' width='450'><tr align='center'><td colspan='7'><center>$jour ".$nom_mois[$mois-1]." $annee</center></td></tr><tr align='center'><td><strong>Lundi</strong></td><td><strong>Mardi</strong></td><td><strong>Mercredi</strong></td><td><strong>Jeudi</strong></td><td><strong>Vendredi</strong></td><td><strong>Samedi</strong></td><td><strong>Dimanche</strong></td></tr>";
  58. //Affichage du calendrier
  59. for($i=1;$i<=42;$i++)
  60.  {
  61.  if($i % 7 == 1 ) //si il reste un, on commence forcement une nouvelle ligne  
  62.   {
  63.   echo "<tr align='center'>";
  64.   }
  65.  if(($dp <= $i)&&($j <= $nbjour))//si nous sommes apres le numero du premier jour et que nous n avons pas
  66.   { //passé le 30 ou 31  
  67.   if($j==$jour) { echo "<td bgcolor='$bg_jour'><center><a href=\"?jour=$j&mois=$mois&an=$annee\"><font color='$font_jour'><span class='Style2'>$j</span></font></a></center></td>"; }
  68. -----
  69. ici la fonction mettre en rouge s'il y a un événement
  70. -----
  71. elseif(in_array($j, $j_agenda)) { echo "<td bgcolor='$bg_occ'><center><a href=\"?jour=$j&mois=$mois&an=$annee\"><font color='$font_jour_couleur'><span class='Style2'>$j</span></font></a></td></center>" ; }
  72. ----
  73. reponse :
  74. Warning: in_array(): Wrong datatype for second argument in calend.php
  75. -----
  76. else { echo "<td bgcolor='$bg_reste'><center><a href=\"?jour=$j&mois=$mois&an=$annee\"><font color='$font_jour_couleur'><span class='Style2'>$j</span></font></a></td></center>" ; }
  77.    //on affiche
  78.   $j++;
  79.   }
  80.   else
  81.   {
  82.   echo "<td></td>"; //sinon case vide
  83.   }
  84. suite du code du calendrier ...
  85. ?>


 
je comprends pas pourquoi ca ne marche pas !!!


Message édité par - janfy - le 13-06-2005 à 01:05:04
Reply

Marsh Posté le 12-06-2005 à 23:47:22   

Reply

Marsh Posté le 13-06-2005 à 00:05:36    

si quelqu'un ne comprends pas le pb n'hesitez pas envoyer un mail ou repondez au topic

Reply

Marsh Posté le 13-06-2005 à 00:23:55    

Difficile de répondre... "il me dit non !! ", c'est pas un problème valide :D Un logiciel ça ne dit pas non, ça indique soit rien, soit un message, un avertissement ou une erreur :D Et c'est exactement ce qu'ils nous faut, sinon on ne pourra rien faire :(

Reply

Marsh Posté le 13-06-2005 à 00:35:09    

FlorentG a écrit :

Difficile de répondre... "il me dit non !! ", c'est pas un problème valide :D Un logiciel ça ne dit pas non, ça indique soit rien, soit un message, un avertissement ou une erreur :D Et c'est exactement ce qu'ils nous faut, sinon on ne pourra rien faire :(


 
 
je l'ai mis dans le code du calendrier
Warning: in_array(): Wrong datatype for second argument in calend.php  in line 83

Reply

Marsh Posté le 13-06-2005 à 00:38:34    

Ah oups :jap: T'es bien dans la fonction calendrier() ? et j_agenda et bien déclaré en dehors ? Si oui, il faut faire comme ça :

in_array($j, $GLOBALS['j_agenda'])


Ou mettre au début de la fonction (à faire si tu l'utilise plusieurs fois) :

global $j_agenda;

Reply

Marsh Posté le 13-06-2005 à 00:42:07    

FlorentG a écrit :

Ah oups :jap: T'es bien dans la fonction calendrier() ? et j_agenda et bien déclaré en dehors ? Si oui, il faut faire comme ça :

in_array($j, $GLOBALS['j_agenda'])


Ou mettre au début de la fonction (à faire si tu l'utilise plusieurs fois) :

global $j_agenda;



 
oui je suis bien dans la fonction !!
ca doit etre ca !!
merci  
( enfin ca ne marche pas mais ya plus l'erreur déjà !!! )  
merci

Reply

Marsh Posté le 13-06-2005 à 00:48:17    

dezolé ya encore un pb et la je comprends pas !
$j_agenda est en global  

Code :
  1. $j_agenda = array ($contenu);  // contenu des jours ayant des evenements dans la table mysql
  2. // yen a un uniquement le 4 ( je le sais =) )
  3.    print_r($j_agenda);
  4. if(in_array('4', $j_agenda)) { echo "le 4 ya un truc"; } else { echo "ya rien"; }


 
retour  

Code :
  1. Array ( [0] => '','4' ) // ya bien le 4 dedans  
  2. ya rien // le in_array ne marche pas !!!


Message édité par - janfy - le 13-06-2005 à 00:48:57
Reply

Marsh Posté le 13-06-2005 à 00:50:09    

Bizarre le contenu de ton array tout de même, y'a pas de clé pour '4'. Essaye avec :

var_dump($j_agenda);


Pour voir si c'est différent

Reply

Marsh Posté le 13-06-2005 à 00:53:13    

FlorentG a écrit :

Bizarre le contenu de ton array tout de même, y'a pas de clé pour '4'. Essaye avec :

var_dump($j_agenda);


Pour voir si c'est différent


 
comment je peux faire pour mettre une clé ?
 
 

Code :
  1. array(1) { [0]=> string(6) "'','4'" }
  2. ya rien


marche po :'(

Reply

Marsh Posté le 13-06-2005 à 00:55:09    

Ok, en fait, là y'a bien une clé. Sauf que dans la valeur, y'a :

'','4'

, et non pas '4' tout court :heink:
 
Il faudrait que le var_dump donne :

array(1) { [0]=> string(6) "4" }


Et là, ça fonctionnerait. Donc il y'a peut-être un problème lors du remplissage de $j_agenda


Message édité par FlorentG le 13-06-2005 à 00:55:18
Reply

Marsh Posté le 13-06-2005 à 00:55:09   

Reply

Marsh Posté le 13-06-2005 à 00:58:12    

en fait comme peut yavoir plusieurs evenement dans ma table agenda
j'ai fait lors de la requete :
 

Code :
  1. mysql_connect($serveur, $identifiant, $mdp);
  2. mysql_select_db($bdd) or die($erreur1);
  3. $sql0="SELECT * FROM $table_agenda WHERE ag_m='$recherche1' and (ag_a='$recherche2' or ag_a='3000') order by ag_heure asc";
  4. $sql = mysql_query("$sql0" );
  5. $numsite = mysql_num_rows($sql);
  6. $i=0;
  7. $contenu="''";
  8. WHILE($numsite!=$i)
  9.   {
  10.   $contenu .= ",'";
  11.    $contenu .= mysql_result($sql,$i,"ag_j" );
  12.    $contenu .="'";
  13. //;
  14.    $i++;
  15.    }
  16.    $j_agenda = array ($contenu);


donc le 1er $contenu="''";  fo le virer ?

Reply

Marsh Posté le 13-06-2005 à 01:00:17    

Je vois. En fait on peut pas faire comme ça. Là tu créer un tableau avec un seul élément dedans. si tu veux plusieurs éléments dedans, faut faire :

$j_agenda = array();
while($numsite!=$i) {
  $j_agenda[] = mysql_result($sql,$i,"ag_j" );
  $i++;
}


Là, à chaque passage de boucle, il te crééra un élément dans  $j_agenda avec pour valeur le résultat de mysql_result :)

Reply

Marsh Posté le 13-06-2005 à 01:03:13    

MERCIIIIIIIIIIIIIIIIIIIIIIIIi
t'es un ange !!
je vais pouvoir me coucher !!!
encore mille merciiiiiii!
Je t'adore !!!

Reply

Marsh Posté le 13-06-2005 à 08:40:56    

100top a écrit :

t'es un ange !!


Seulement un développeur :D

Reply

Marsh Posté le 29-01-2006 à 18:16:12    

C'est bien ce qu'il dit ... :D

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed