Bonjour,
Aprés plusieurs essais je me résoue à demander de l'aide
Je voudrais afficher que la liste des articles à la connexion à la page et sur cette même page un article quand je veux le modifié avec la liste des articles.
code la page:
Le modèle:
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 if (isset($message)) { echo $message, '<br />'; } ?> <?php if(isset($erreurs) && in_array(Billets::TITRE_INVALIDE, $erreurs)) echo 'Le titre est invalide.<br />'; ?> Titre : <input type="text" name="titre" value="<?php if (isset($billets)) echo $billets->titre(); ?>" /><br /> <?php if (isset($erreurs) && in_array(Billets::CONTENU_INVALIDE, $erreurs)) echo 'Le contenu est invalide.<br />'; ?> Contenu :<br /><textarea id="formulaire" type="text" name="contenu"><?php if (isset($billet)) echo $billets->contenu(); ?></textarea><br /> <?php if(isset($billet) && !$billet->isNew()) { ?> <input type="hidden" name="id" value="<?= $billet->id() ?>" /> <input type="submit" value="Modifier" name="modifier" /> <?php } else { ?> <input type="submit" value="Ajouter" /> <?php } ?> </p> </form> <p style="text-align: center">Il y a actuellement <?= $billetCount ?> billets. En voici la liste :</p> <table> <tr><th>Titre</th><th>Date d'ajout</th><th>Dernière modification</th><th>Action</th></tr> <?php foreach($billetList as $billets){ $date1 = date('d/m/y à H:i:s', strtotime($billets->dateAjout())); $date2 = date('d/m/y à H:i:s', strtotime($billets->dateModif())); echo '<tr><td>',$billets->titre(), '</td><td>', $date1, '</td><td>', ($date1 == $date2 ? '-' : $date2), '</td><td><a href="index.php?modifier='. $billets->id(), '">Modifier</a> | <a href="index.php?supprimer='. $billets->id(), '">Supprimer</a></td></tr>', "\n"; } ?> </table> </body> </html>
Le contrôleur:
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 class BilletsManager { private $db; public function __construct(PDO $db) { $this->db = $db; } public function add(Billets $billets) { $q = $this->db->prepare('INSERT INTO billets(titre, contenu, dateAjout, dateModif) VALUES(:titre, :contenu, NOW(), NOW())'); $q->bindValue(':titre', $billets->titre()); $q->bindValue(':contenu', $billets->contenu()); $q->execute(); } public function delete($id) { $this->db->exec('DELETE FROM news WHERE id = '.(int) $id); } public function count() { return $this->db->query('SELECT COUNT(*) FROM billets')->fetchColumn(); } public function getList($debut = -1, $limite = -1) { $sql = 'SELECT id, titre, contenu, dateAjout, dateModif FROM billets ORDER BY id DESC'; if ($debut != -1 || $limite != -1) { $sql .= ' LIMIT '.(int) $limite.' OFFSET '.(int) $debut; } $q = $this->db->query($sql); $listeBillets = $q->fetchAll(PDO::FETCH_CLASS | PDO::FETCH_PROPS_LATE, 'App\Objet\Billets'); $q->closeCursor(); return $listeBillets; } public function getUnique($id) { $q = $this->db->prepare('SELECT id, titre, contenu, dateAjout, dateModif FROM billets WHERE id =:id'); $q->bindValue(':id', (int) $id, PDO::PARAM_INT); $q->execute(); $billets = $q->fetchAll(PDO::FETCH_CLASS | PDO::FETCH_PROPS_LATE, 'App\Objet\Billets'); return $billets; } protected function update(Billets $billets) { $q = $this->db->prepare('UPDATE billets SET titre = :titre, contenu = :contenu, dateModif = NOW() WHERE id = :id'); $q->bindValue(':titre', $billets->titre()); $q->bindValue(':contenu', $billets->contenu()); $q->bindValue(':id', $billets->id(), PDO::PARAM_INT); $q->execute(); } public function save(Billets $billets) { if ($billets->isValid()) { $billets->isNew() ? $this->add($billets) : $this->update($billets); } else { throw new RuntimeException('Le billet doit être valide pour être enregistré'); } } } ?>
Avec les tests que j'ai fais, soit j'ai une liste qui ce met sur l'article à modifié et la liste en plus. Soit le billet que je veux modifier + l'affiche du même billet à la place de la liste. Soit variable non défini pour le billet que je veux modifier. Soit variable non défini pour la liste.
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 <?php namespace App\Controller; use PDO; use App\Objet\Billets; use App\Objet\Connect; use App\Model\BilletsManager; require 'Librairies/Objet/Connect.php'; class BilletController{ public function list(){ $db = Connect::getPDO(); $manager = new BilletsManager($db); $billetList = $manager->getList(0, 5); chdir('Librairies/View'); include('HomeView.php'); } public function unique(){ $db = Connect::getPDO(); $manager = new BilletsManager($db); $billetId = $manager->getUnique((int)$_GET['id']); chdir('Librairies/View'); include('BilletView.php'); } public function adminList(){ $db = Connect::getPDO(); $manager = new BilletsManager($db); $billetList = $manager->getList(); ; $billetCount = $manager->count(); chdir('Librairies/View'); include('AdminView.php'); } public function adminChange($billets){ $db = Connect::getPDO(); $manager = new BilletsManager($db); $billetUnique = $manager->getUnique($billets); $billetCount = $manager->count(); chdir('Librairies/View'); include('AdminView.php'); } public function save($billets){ $db = Connect::getPDO(); $manager = new BilletsManager($db); $manager->save($billets); chdir('Librairies/View'); include('AdminView.php'); } public function delete($id){ $db = Connect::getPDO(); $manager = new BilletsManager($db); $manager->delete($id); chdir('Librairies/View'); include('AdminView.php'); } }
Merci pour votre aide.![]()
Partager