Bonjour à toutes et à tous,
Dans le but de tirer 10 personnes au sort, j'ai crée 2 classes Eleve avec les attributs (nom, prénom et frequence) et EleveManager avec l'attribut (database) et deux méthodes (getList et updateFrequence).
et la page tirage.php permettant de réaliser le tirage au sort en question :
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
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109 <?php class Eleve { private $_nom; private $_prenom; private $_frequence; public function __construct(array $data) { foreach($data as $key =>$value) { $method = 'set'.ucfirst($key); if(method_exists($this, $method)) { $this->$method($value); } } } /* SETTERS */ public function setNom($nom) { if(is_string($nom)) { $this->_nom = $nom; } } public function setPrenom($prenom) { if(is_string($prenom)) { $this->_prenom = $prenom; } } public function setFrequence($frequence) { if(is_int($frequence) and $frequence >= 0) { $this->_frequence = $frequence; } } /* GETTERS */ public function getNom() { return $this->_nom; } public function getPrenom() { return $this->_prenom; } public function getFrequence() { return $this->_frequence; } /* METHODES*/ public function gagnerFrequence() { return $this->_frequence ++; } } class ElevesManager { private $_db; public function __construct($db) { $this->setDb($db); } public function setDb($db) { $this->_db = $db; } public function getList() { $sql = 'SELECT nom, prenom, frequence FROM premiere_quatre ORDER BY nom'; $stmt = $this->_db->prepare($sql); $stmt->execute(); while($donnees = $stmt->fetch(PDO::FETCH_ASSOC)) { $eleves[] = new Eleve($donnees); } return $eleves; } public function updateFrequence(Eleve $eleve) { $sql = 'UPDATE premiere_quatre SET frequence = :frequence WHERE nom = :nom'; $stmt = $this->_db->prepare($sql); $stmt->bindParam(':frequence', $eleve->getFrequence(), PDO::PARAM_INT); $stmt->bindParam(':nom', $eleve->getNom(), PDO::PARAM_STR); $stmt->execute(); } } ?>
J'ai actuellement 2 problèmes :
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
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120 <?php ini_set('display_errors', 1); require('Eleve_premiere_quatre.php'); ?> <!DOCTYPE html> <html lang="en"> <head> <meta charset="utf-8"> <meta http-equiv="X-UA-Compatible" content="IE=edge"> <meta name="viewport" content="width=device-width, initial-scale=1"> <!-- The above 3 meta tags *must* come first in the head; any other head content must come *after* these tags --> <meta name="description" content=""> <meta name="author" content=""> <link rel="icon" href="../../favicon.ico"> <title>Exercices PHYSIQUE-CHIMIE</title> <!-- Bootstrap core CSS --> <link href="../css/bootstrap.min.css" rel="stylesheet"> <!-- IE10 viewport hack for Surface/desktop Windows 8 bug --> <link href="../../assets/css/ie10-viewport-bug-workaround.css" rel="stylesheet"> <!-- Just for debugging purposes. Don't actually copy these 2 lines! --> <!--[if lt IE 9]><script src="../../assets/js/ie8-responsive-file-warning.js"></script><![endif]--> <script src="../../assets/js/ie-emulation-modes-warning.js"></script> <!-- HTML5 shim and Respond.js for IE8 support of HTML5 elements and media queries --> <!--[if lt IE 9]> <script src="https://oss.maxcdn.com/html5shiv/3.7.2/html5shiv.min.js"></script> <script src="https://oss.maxcdn.com/respond/1.4.2/respond.min.js"></script> <![endif]--> <!-- Custom styles for this template --> <link href="../css/carousel.css" rel="stylesheet"> </head> <!-- NAVBAR ================================================== --> <body> <div class="container"> <?php $dbh = new PDO('mysql:host=localhost;dbname=lacroix' , 'root', 'root'); $manager = new ElevesManager($dbh); $eleves = $manager->getList(); echo '<pre>'; var_dump($eleves); $rand_keys = array_rand($eleves, 10); ?> <h1 class="text-center"> Liste d'élèves concernés par les exercices</h1> <div class="col-lg-6"> <h2 class="text-center">Générer la liste d'élèves concernés</h2> <form method="post" class="form-group"> <input class="form-control" name="envoyer" type="submit" /> </form> <?php if(isset($_POST['envoyer'])) : ?> <table class="table table-striped"> <thead> <tr> <th class="text-center">Nom</th> <th class="text-center">Prénom</th> </tr> </thead> <?php foreach($rand_keys as $id): ?> <tr> <td class="text-center"><?php echo strtoupper($eleves[$id]->getNom()); ?></td> <td class="text-center"><?php echo $eleves[$id]->getPrenom(); ?></td> </tr> <?php $eleves[$id]->gagnerFrequence(); ?> <?php $manager->updateFrequence($eleves[$id]); ?> <?php endforeach; ?> </table> <?php endif; ?> </div> <div class="col-lg-6"> <h2 class="text-center"> BILAN</h2> <table class="table table-striped"> <thead> <tr> <th class="text-center">Nom</th> <th class="text-center">Prénom</th> <th class="text-center">Fréquence</th> </tr> </thead> <?php foreach($eleves as $id => $value): ?> <tr> <td class="text-center"><?php echo strtoupper($eleves[$id]->getNom()); ?></td> <td class="text-center"><?php echo $eleves[$id]->getPrenom(); ?></td> <td class="text-center"><?php echo $eleves[$id]->getFrequence(); ?></td> </tr> <?php endforeach; ?> </table> </div> </div><!-- /.container --> <!-- Bootstrap core JavaScript ================================================== --> <!-- Placed at the end of the document so the pages load faster --> <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.3/jquery.min.js"></script> <script>window.jQuery || document.write('<script src="../../assets/js/vendor/jquery.min.js"><\/script>')</script> <script src="../js/bootstrap.min.js"></script> <!-- Just to make our placeholder images work. Don't actually copy the next line! --> <script src="../js/vendor/holder.min.js"></script> <!-- IE10 viewport hack for Surface/desktop Windows 8 bug --> <script src="../js/ie10-viewport-bug-workaround.js"></script> </body> </html>
1- Je ne comprends pas pourquoi ma base de donnée ne se remplit pas dans le champ fréquence lors de l'appel de la méthode updateFrequence
2- De plus lorsque je génère ma liste d'élèves, pourquoi le champ fréquence est désespérément nul alors qu'il y a initialement des valeurs dans ma base de données :
Merci d'avance pour vos pistes et bonne journée à tous.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 $eleves = $manager->getList(); echo '<pre>'; var_dump($eleves);
Partager