[RESOLU] Calendrier evenements

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : [RESOLU] Calendrier evenements

Re: Calendrier evenements

par blinz » 16 juin 2014, 21:06

Bon vu que c'est un peu complexe je pense, j'ai simplifié au maximum et je suis bloqué.
Je souhaite en gros que si la date_debut_sortie de l'événement correspond à la date de mon calendrier ( alors mettre la case en jaune par exemple et y afficher le titre de l'événement dans la case du calendrier)
Je récupére bien les infos voici ce que m'affiche le print:
stdClass Object ( [titre] => Le balsamique [date_debut_sortie] => 2014-06-14 06:00:00 ) stdClass Object ( [titre] => La bastille [date_debut_sortie] => 2014-06-06 08:00:00 ) stdClass Object ( [titre] => le savoyard [date_debut_sortie] => 2014-06-29 04:00:00 )

Voici le code ou je pense que ça merde:

mon_profil.php
<?php
        require('date.php');
        $date = new Date();
        $year = date('Y');
        $events = $date->getEvents($year);
        $dates = $date->getAll($year);
        ?>
        <div class="periods">
            <div class="year"><?php echo $year; ?></div>
            <div class="months">
                <ul>
                    <?php foreach ($date->months as $id=>$m): ?>
                         <li><a href="#" id="linkMonth<?php echo $id+1; ?>"><?php echo utf8_encode(substr(utf8_decode($m),0,3)); ?></a></li>
                    <?php endforeach; ?>
                </ul>
            </div>
            <div class="clear"></div>
            <?php $dates = current($dates); ?>
            <?php foreach ($dates as $m=>$days): ?>
               <div class="month relative" id="month<?php echo $m; ?>">
               <table>
                   <thead>
                       <tr>
                           <?php foreach ($date->days as $d): ?>
                                <th><?php echo substr($d,0,3); ?></th>
                           <?php endforeach; ?>
                       </tr>
                   </thead>
                   <tbody>
                       <tr>
                       
                       <!-- Ici faire le truc pour les dates -->
                       <?php $end = end($days); foreach($days as $d=>$w): ?>
                           <?php $time = strtotime("$year-$m-$d"); ?>
                           <?php if($d == 1 && $w != 1): ?>
                                <td colspan="<?php echo $w-1; ?>" class="padding"></td>
                           <?php endif; ?>
                           
                           
                           <td<?php if($time == strtotime(date('Y-m-d'))): ?> class="today" <?php endif; ?>>
                                <div class="relative">
                                    <div class="day"><?php echo $d; ?></div>
                                </div>
                               <div class="daytitle">
                                   <?php echo $date->days[$w-1]; ?> <?php echo $d; ?>  <?php echo $date->months[$m-1]; ?>
                               </div>
                               
                               <!-- Ici on affiche l'événement et la case du calendrier se met en surbrillance -->
                               <ul class="events">
                                   <?php if(isset($events[$time])): foreach($events[$time] as $e): ?>
                                        <li><?php echo $e; ?></li>
                                   <?php endforeach; endif;  ?>
                               </ul>
                               
                           </td>
                           <?php if($w == 7): ?>
                            </tr><tr>
                           <?php endif; ?>
                       <?php endforeach; ?>
                       <?php if($end != 7): ?>
                            <td colspan="<?php echo 7-$end; ?>" class="padding"></td>
                       <?php endif; ?>
                       </tr>
                   </tbody>
               </table>
               </div>
            <?php endforeach; ?>
        </div>
        <div class="clear"></div>
        <pre><?php print_r($events); ?></pre>

Page date.php
<?php
class Date{

    var $days       = array('Lundi', 'Mardi', 'Mercredi', 'Jeudi', 'Vendredi', 'Samedi','Dimanche');
    var $months     = array('Janvier', 'Février', 'Mars', 'Avril', 'Mai', 'Juin', 'Juillet', 'Août', 'Septembre', 'Octobre', 'Novembre', 'Décembre');

    function getEvents($year){
        global $bdd;
        $req = $bdd->query("SELECT titre,date_debut_sortie FROM favoris f LEFT JOIN simply_user su ON f.`id_simply_user` = su.`id_simply_user` LEFT JOIN loisirs l ON f.`id_loisir` = l.`id_loisirs` WHERE su.`id_simply_user` =".$_SESSION['userid']);
        $r = array();
        /**
         * Ce que je veux $r[TIMESTAMP][id] = title
         */
        while($d = $req->fetch(PDO::FETCH_OBJ)){
	    print_r($d);
		   $r[strtotime($d->date)][$d->id_type_loisirs] = $d->date_debut_sortie;
        }

        return $r;
	   
    }
	
    function getAll($year){
        $r = array();
        /**
         * Boucle version procédurale
         *
        $date = strtotime($year.'-01-01');
        while(date('Y',$date) <= $year){
            // Ce que je veux => $r[ANEEE][MOIS][JOUR] = JOUR DE LA SEMAINE
            $y = date('Y',$date);
            $m = date('n',$date);
            $d = date('j',$date);
            $w = str_replace('0','7',date('w',$date));
            $r[$y][$m][$d] = $w;
            $date = strtotime(date('Y-m-d',$date).' +1 DAY');
        }
        *
         *
         */
        $date = new DateTime($year.'-01-01');
        while($date->format('Y') <= $year){
            // Ce que je veux => $r[ANEEE][MOIS][JOUR] = JOUR DE LA SEMAINE
            $y = $date->format('Y');
            $m = $date->format('n');
            $d = $date->format('j');
            $w = str_replace('0','7',$date->format('w'));
            $r[$y][$m][$d] = $w;
            $date->add(new DateInterval('P1D'));
        }
        return $r; 
    }

}

Re: Calendrier evenements

par blinz » 16 juin 2014, 19:15

Bon j'ai encore avancé mais retrouve vraiment bloquer maintenant
J'aimerais donc afficher le titre de l'événement que l'utilisateur à rajouter dans ses favoris à cet endroit la , dans la page mon_profil.php
 <ul class="events">
<li>Evenement</li>
 </ul>
Au seins de cette page j'arrive à y intégrer les évenement de l'utilisateurs par ce code ( la requete est elle correct ... ou il y a encore un autre problème ) merci pour votre aide
 <?php 
			$resultat = mysql_query("SELECT * FROM favoris f LEFT JOIN simply_user su ON f.`id_simply_user` = su.`id_simply_user` LEFT JOIN loisirs l ON f.`id_loisir` = l.`id_loisirs` WHERE su.`id_simply_user` =".$_SESSION['userid']);
			while($loisirs=mysql_fetch_array($resultat)) {   ?>
			<?php $date_sortie = DateTime::createFromFormat('Y-m-d', $loisirs['date_debut_sortie']);?>
        	<?php $date = DateTime::createFromFormat('Y-m-d H:i:s', $loisirs['date_debut_sortie']);?>
        	<?php $datef = DateTime::createFromFormat('Y-m-d H:i:s', $loisirs['date_fin_sortie']);?>
				<!--Contenu d'une annonce-->
                
                <div class="col-md-4 col-sm-6 marg15">
                <div class="wrap">
                    <div class="corner">GRATUIT</div>
<?php if(!empty($loisirs['photo'])){?><img class="img-responsive" src="<?php echo $loisirs['photo'];?>" width="100px"><?php }?>					
		                <h3><?php echo $loisirs['titre']; ?></h3>
		                <p><?php echo $loisirs['sous_titre']; ?></p>
		                <p class="desc"><?php echo substr($loisirs['description'], 0, 100).'...'; ?></p>
                        
                		<a href="annonce_zoom.php?id=<?php echo $loisirs['id_loisirs'];?>" >  <input class="look pull-right" type="button" value="CONTINUER"></a> 
                        
                        <a href="sup_favoris.php?id=<?php echo $loisirs['id_loisirs']; ?>">Supprimer</a>
                        
            		</div>
        		</div>
        		<!--Fin Contenu d'une annonce-->
  		<?php }?>

Re: Calendrier evenements

par blinz » 16 juin 2014, 17:26

Bon voilà l'avancement, désormais j'arrive intégrer une annonce de la page (sortie.php) à la page (mon_profil.php)
J'aimerais maintenant que la date de l'annonce rajouté dans (mon_profil.php) mette en couleur la case de la date du calendrier de la page (date.php)

Le code: ( je sais une partie est faite à l'ancienne )
Page mon_profil.php
<div class="container">
 <?php
        require('date.php');
        $date = new Date();
        $year = date('Y');
        $events = $date->getEvents($year);
        $dates = $date->getAll($year);
        ?>
        <div class="periods">
            <div class="year"><?php echo $year; ?></div>
            <div class="months">
                <ul>
                    <?php foreach ($date->months as $id=>$m): ?>
                         <li><a href="#" id="linkMonth<?php echo $id+1; ?>"><?php echo utf8_encode(substr(utf8_decode($m),0,3)); ?></a></li>
                    <?php endforeach; ?>
                </ul>
            </div>
            <div class="clear"></div>
            <?php $dates = current($dates); ?>
            <?php foreach ($dates as $m=>$days): ?>
               <div class="month relative" id="month<?php echo $m; ?>">
               <table>
                   <thead>
                       <tr>
                           <?php foreach ($date->days as $d): ?>
                                <th><?php echo substr($d,0,3); ?></th>
                           <?php endforeach; ?>
                       </tr>
                   </thead>
                   <tbody>
                       <tr>
                       <?php $end = end($days); foreach($days as $d=>$w): ?>
                           <?php $time = strtotime("$year-$m-$d"); ?>
                           <?php if($d == 1 && $w != 1): ?>
                                <td colspan="<?php echo $w-1; ?>" class="padding"></td>
                           <?php endif; ?>
                           <td<?php if($time == strtotime(date('Y-m-d'))): ?> class="today" <?php endif; ?>>
                                <div class="relative">
                                    <div class="day"><?php echo $d; ?></div>
                                </div>
                               <div class="daytitle">
                                   <?php echo $date->days[$w-1]; ?> <?php echo $d; ?>  <?php echo $date->months[$m-1]; ?>
                               </div>
                               <ul class="events">
                                   <?php if(isset($events[$time])): foreach($events[$time] as $e): ?>
                                        <li><?php echo $e; ?></li>
                                   <?php endforeach; endif;  ?>
                               </ul>
                           </td>
                           <?php if($w == 7): ?>
                            </tr><tr>
                           <?php endif; ?>
                       <?php endforeach; ?>
                       <?php if($end != 7): ?>
                            <td colspan="<?php echo 7-$end; ?>" class="padding"></td>
                       <?php endif; ?>
                       </tr>
                   </tbody>
               </table>
               </div>
            <?php endforeach; ?>
        </div>
        <div class="clear"></div>
     
        
        <!-- REQUETE POUR INSERTION DES FAVORIS DE L'UTILISATEURS SUR LE CALENDRIER -->
        
        
        <?php 
			$resultat = mysql_query("SELECT * FROM favoris f LEFT JOIN simply_user su ON f.`id_simply_user` = su.`id_simply_user` LEFT JOIN loisirs l ON f.`id_loisir` = l.`id_loisirs` WHERE su.`id_simply_user` =".$_SESSION['userid']);
			while($loisirs=mysql_fetch_array($resultat)) {   ?>
			<?php $date_sortie = DateTime::createFromFormat('Y-m-d', $loisirs['date_debut_sortie']);?>
        	<?php $date = DateTime::createFromFormat('Y-m-d H:i:s', $loisirs['date_debut_sortie']);?>
        	<?php $datef = DateTime::createFromFormat('Y-m-d H:i:s', $loisirs['date_fin_sortie']);?>
				<!--Contenu d'une annonce-->
                
                <div class="col-md-4 col-sm-6 marg15">
                <div class="wrap">
                    <div class="corner">GRATUIT</div>
<?php if(!empty($loisirs['photo'])){?><img class="img-responsive" src="<?php echo $loisirs['photo'];?>" width="100px"><?php }?>					
		                <h3><?php echo $loisirs['titre']; ?></h3>
		                <p><?php echo $loisirs['sous_titre']; ?></p>
		                <p class="desc"><?php echo substr($loisirs['description'], 0, 100).'...'; ?></p>
                        
                		<a href="annonce_zoom.php?id=<?php echo $loisirs['id_loisirs'];?>" >  <input class="look pull-right" type="button" value="CONTINUER"></a> 
                        
                        <a href="sup_favoris.php?id=<?php echo $loisirs['id_loisirs']; ?>">Supprimer</a>
                        
            		</div>
        		</div>
        		<!--Fin Contenu d'une annonce-->
  		<?php }?>
    </div>
La partie de code qui me permet de rajouter l'annonce dans la page mon_profil (add_favoris.php)
<?php
session_start();
include("conndb.php");
if(isset($_SESSION['pseudo']) && !empty($_SESSION['pseudo']) && isset($_SESSION['userid']) && !empty($_SESSION['userid'])) {
mysql_query("INSERT INTO favoris (id_simply_user, id_loisir, date_added) VALUE (".$_SESSION['userid'].", ".$_GET['idfav'].", NOW())");
header("Location: mon_profil_utilisateur.php");
}else{
	header("Location: mon_compte.php");
}
?>
Je remet la page date.php en cas
<?php
class Date{

    var $days       = array('Lundi', 'Mardi', 'Mercredi', 'Jeudi', 'Vendredi', 'Samedi','Dimanche');
    var $months     = array('Janvier', 'Février', 'Mars', 'Avril', 'Mai', 'Juin', 'Juillet', 'Août', 'Septembre', 'Octobre', 'Novembre', 'Décembre');

    function getEvents($year){
        global $bdd;
        $req = $bdd->query('SELECT id,title,date FROM events WHERE YEAR(date)=');
        $r = array();
        /**
         * Ce que je veux $r[TIMESTAMP][id] = title
         */
        while($d = $req->fetch(PDO::FETCH_OBJ)){
            $r[strtotime($d->date)][$d->id] = $d->title;
        }
        return $r;
    }

    function getAll($year){
        $r = array();
        /**
         * Boucle version procédurale
         *
        $date = strtotime($year.'-01-01');
        while(date('Y',$date) <= $year){
            // Ce que je veux => $r[ANEEE][MOIS][JOUR] = JOUR DE LA SEMAINE
            $y = date('Y',$date);
            $m = date('n',$date);
            $d = date('j',$date);
            $w = str_replace('0','7',date('w',$date));
            $r[$y][$m][$d] = $w;
            $date = strtotime(date('Y-m-d',$date).' +1 DAY');
        }
        *
         *
         */
        $date = new DateTime($year.'-01-01');
        while($date->format('Y') <= $year){
            // Ce que je veux => $r[ANEEE][MOIS][JOUR] = JOUR DE LA SEMAINE
            $y = $date->format('Y');
            $m = $date->format('n');
            $d = $date->format('j');
            $w = str_replace('0','7',$date->format('w'));
            $r[$y][$m][$d] = $w;
            $date->add(new DateInterval('P1D'));
        }
        return $r; 
    }

}

Calendrier evenements

par blinz » 16 juin 2014, 12:35

Bonjour je suis entrain d''essayer de réaliser un calendrier d'événements qui est opérationnel,
maitenant j'aimerais que lorsque un visiteur clique sur le lien d'une annonce de ma page ( sortie.php ) à l'aide du lien suivant ( <a href="<?php echo $loisirs['id_loisirs'];?>"> + <div class="annonce_favoris" title="Ajouter à mes favoris"></div></a>) celle ci se rajoute un marqueur sur le calendrier de la page mon_profi et serait afficher sur le coté l'évenement en question.

Afin de vous rendre compte du résultat final ça doit ressembler à ca: http://www.grafikart.fr/demo/PHP/calendar/index.html
J'ai le calendrier mais je n'arrive pas a rajouter l'évenement sur la page mon_profil, merci de votre aide

Voiçi mon code:
page sortie.php:
 <div id="bloc_page">
									  <?php 
			while($loisirs=mysql_fetch_array($resultat)) {   ?>
			<?php $date_sortie = DateTime::createFromFormat('Y-m-d', $loisirs['date_debut_sortie']);?>
        	<?php $date = DateTime::createFromFormat('Y-m-d H:i:s', $loisirs['date_debut_sortie']);?>
        	<?php $datef = DateTime::createFromFormat('Y-m-d H:i:s', $loisirs['date_fin_sortie']);?>
        	<?php $diff = floor(($datef->getTimestamp() - $date->getTimestamp())/86400) ;?>
                             <!-- Annonce -->                
            <div class="col-md-4 col-sm-6 marg15">
                <div class="wrap">
              
                    
                    
                    
                    <a href="annonce_zoom.php?id=<?php echo $loisirs['id_loisirs'];?>" >
			<?php if(!empty($loisirs['photo'])){?><img class="img-responsive" src="img/annonce/<?php echo $loisirs['photo'];?>" ><?php }?></a>     
                    <h3><?php echo $loisirs['titre']; ?></h3>
                    <p class="desc"><?php echo substr($loisirs['description'], 0, 150).'...'; ?></p>
                    <hr>
                    <div class="utiles">
                                <p class="pull-right"><?php echo ucfirst($jour[$date->format('N')]); ?> <?php echo $date->format('d'); ?> <?php echo ucfirst($mois[$date->format('n')]); ?> - <?php echo $date->format('Y'); ?></p>
                                <p class="city">
                                 <i class="fa fa-map-marker"></i> Grenoble
                                </p>
                            </div>
                    <a href="<?php echo $loisirs['id_loisirs'];?>"> + <div class="annonce_favoris" title="Ajouter à mes favoris"></div></a>
                   <a href="annonce_zoom.php?id=<?php echo $loisirs['id_loisirs'];?>" >  <input class="look pull-right" type="button" value="CONTINUER"></a> 
                </div>  
            </div>
            <!-- End Annonce -->
                  <?php }?>
                  </div>
Page mon_profil:


<?php session_start();?>
<?php $page = "profil";?>

 <?php
        require('date.php');
        $date = new Date();
        $year = date('Y');
        $events = $date->getEvents($year);
        $dates = $date->getAll($year);
        ?>
        <div class="periods">
            <div class="year"><?php echo $year; ?></div>
            <div class="months">
                <ul>
                    <?php foreach ($date->months as $id=>$m): ?>
                         <li><a href="#" id="linkMonth<?php echo $id+1; ?>"><?php echo utf8_encode(substr(utf8_decode($m),0,3)); ?></a></li>
                    <?php endforeach; ?>
                </ul>
            </div>
            <div class="clear"></div>
            <?php $dates = current($dates); ?>
            <?php foreach ($dates as $m=>$days): ?>
               <div class="month relative" id="month<?php echo $m; ?>">
               <table>
                   <thead>
                       <tr>
                           <?php foreach ($date->days as $d): ?>
                                <th><?php echo substr($d,0,3); ?></th>
                           <?php endforeach; ?>
                       </tr>
                   </thead>
                   <tbody>
                       <tr>
                       <?php $end = end($days); foreach($days as $d=>$w): ?>
                           <?php $time = strtotime("$year-$m-$d"); ?>
                           <?php if($d == 1 && $w != 1): ?>
                                <td colspan="<?php echo $w-1; ?>" class="padding"></td>
                           <?php endif; ?>
                           <td<?php if($time == strtotime(date('Y-m-d'))): ?> class="today" <?php endif; ?>>
                                <div class="relative">
                                    <div class="day"><?php echo $d; ?></div>
                                </div>
                               <div class="daytitle">
                                   <?php echo $date->days[$w-1]; ?> <?php echo $d; ?>  <?php echo $date->months[$m-1]; ?>
                               </div>
                               <ul class="events">
                                   <?php if(isset($events[$time])): foreach($events[$time] as $e): ?>
                                        <li><?php echo $e; ?></li>
                                   <?php endforeach; endif;  ?>
                               </ul>
                           </td>
                           <?php if($w == 7): ?>
                            </tr><tr>
                           <?php endif; ?>
                       <?php endforeach; ?>
                       <?php if($end != 7): ?>
                            <td colspan="<?php echo 7-$end; ?>" class="padding"></td>
                       <?php endif; ?>
                       </tr>
                   </tbody>
               </table>
               </div>
            <?php endforeach; ?>
        </div>
        <div class="clear"></div>
        <pre><?php print_r($events); ?></pre>
Page date.php
<?php
class Date{

    var $days       = array('Lundi', 'Mardi', 'Mercredi', 'Jeudi', 'Vendredi', 'Samedi','Dimanche');
    var $months     = array('Janvier', 'Février', 'Mars', 'Avril', 'Mai', 'Juin', 'Juillet', 'Août', 'Septembre', 'Octobre', 'Novembre', 'Décembre');

    function getEvents($year){
        global $bdd;
       // ici mettre la bonne requete mais je ne vois pas comment faire .......................
        $req = $bdd->query(' La requête qui vas bien' );
        $r = array();
        
        while($d = $req->fetch(PDO::FETCH_OBJ)){
            $r[strtotime($d->date)][$d->id] = $d->title;
        }
        return $r;
    }

    function getAll($year){
        $r = array();
        /**
         * Boucle version procédurale
         *
        $date = strtotime($year.'-01-01');
        while(date('Y',$date) <= $year){
            // Ce que je veux => $r[ANEEE][MOIS][JOUR] = JOUR DE LA SEMAINE
            $y = date('Y',$date);
            $m = date('n',$date);
            $d = date('j',$date);
            $w = str_replace('0','7',date('w',$date));
            $r[$y][$m][$d] = $w;
            $date = strtotime(date('Y-m-d',$date).' +1 DAY');
        }
        *
         *
         */
        $date = new DateTime($year.'-01-01');
        while($date->format('Y') <= $year){
            // Ce que je veux => $r[ANEEE][MOIS][JOUR] = JOUR DE LA SEMAINE
            $y = $date->format('Y');
            $m = $date->format('n');
            $d = $date->format('j');
            $w = str_replace('0','7',$date->format('w'));
            $r[$y][$m][$d] = $w;
            $date->add(new DateInterval('P1D'));
        }
        return $r; 
    }

}