J'ai un projet (sous slim) ou je doit à un moment donnée, si la personne click sur le lien, rafraichir la page et incrémenter une variable en get.
Mon projet suis le modèle MVC.


Voici le controlleur :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
$app->get('/user_account', function () use ($app) {
	$app->render(
		'user_account.php',
		array(
			//$add_map = Map::print_map()
			$year = "2015"
		)		
	);
})->name('user_account');

Voici la vue :

La page principale ou se trouve le lien.
user_account.php
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
 
<?php 
  $date = new Date();
  $year = $this->data['year'];
  $events = $date->getEvents($year);
  $dates = $date->getAll($year);
?>
 
<a href="<?php echo $app->urlFor('user_account', array('year', $year+1)); ?>">
 <?php echo "<"; ?>
</a>

Le modele :

La class date qui se sert de la variable que j'incrémente quand je click sur le lien.
date.php
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
<?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){
            $bdd = DB::connect();
            $req = $bdd->query('SELECT id, name, date FROM event WHERE YEAR(date)='.$year);
            $r = array();
            while($d = $req->fetch(PDO::FETCH_OBJ)){
                $r[strtotime($d->date)][$d->id] = $d->name;
            }
            return $r;
        }
 
        function getAll($year){
            $r = array();
 
            $date = new DateTime($year.'-01-01');
 
            while($date->format('Y') <= $year){
                $y = $date->format('Y');
                $m = $date->format('n');// n pour ne pas avoir les 0 initiaux
                $d = $date->format('j');// j pareil mais pour les jours
                $w = str_replace('0','7',$date->format('w')); // pour avoir le dimanche a la fin de la semaine et non comme premier jour
                $r[$y][$m][$d] = $w;
                $date->add(new DateInterval('P1D')); // P1D pour une journée durée de une journée comme intervalle
            }
 
            return $r;
        }
    }
?>

L'erreur semble être lié à la classe date :

Type: PDOException
Code: 42000
Message: SQLSTATE[42000]: Syntax error or access violation: 1064 You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '' at line 1
File: C:\wamp\www\ingesup-master\models\date.php
Line: 9