Bonjour, lorsque je veut mettre à jour les données dans la base, cela se fait, mais j'ai comme même 3 messages d'erreurs qui s'affiche.
Warning: Illegal string offset 'ville_id' in C:\wamp64\www\villes-site\process\process-edition.php
Warning: Illegal string offset 'ville_nom' in C:\wamp64\www\villes-site\process\process-edition.php
Warning: Illegal string offset 'ville_texte' in C:\wamp64\www\villes-site\process\process-edition.php
Merci d'avance pour votre aide & bonne journée.
edition.php
class/Ville.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
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57 <?php require('includes/inc-connexion.php'); require('class/villeManager.php'); require('process/process-edition.php'); $manager = new villeManager($db); $city = $manager->getVille(); $ville_nom = $city['ville_nom']; $ville_texte = $city['ville_texte']; $ville_id = $city['ville_id']; ?> <!DOCTYPE html> <html lang="fr"> <head> <meta charset="utf-8"> <title>Mettre à jour la ville</title> <link rel="stylesheet" href="css/style.css"> </head> <body> <div id="wrapper"> <main> <header> <h1>Mettre à jour la ville</h1> </header> <div id="bloc_form"> <form action="" method="post" id="update_form"> <fieldset> <legend>Mettre à jour la ville</legend> <p><label for="city_name">Nom de ville</label></p> <p><input type="text" id="city_name" name="city_name_form" autofocus="autofocus" value="<?php echo $ville_nom; ?>"></p> <p><label for="city_text">Texte de ville</label></p> <p><textarea cols="64" rows="32" id="city_text" name="city_text_form"><?php echo $ville_texte; ?></textarea></p> <p><input type="hidden" name="city_id_form" value="<?php echo $ville_id; ?>"></p> <p> <input type="reset" id="reset_form" value="Effacer le formulaire"> <input type="submit" id="submit_form" name="submit_form" value="Valider"> </p> </fieldset> </form> <?php if(isset($message)) echo $message ?> </div> </main> <?php require('includes/inc-footer.php'); ?>
class/villeManager.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
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 class Ville { private $_ville_id; private $_ville_nom; private $_ville_texte; private static $_error; const MSG_ERROR_VILLE_ID = 'VILLE_ID doît être un entier'; const MSG_ERROR_VILLE_NOM = 'VILLE_NOM doît être une chaîne de caractères'; const MSG_ERROR_VILLE_TEXTE = 'VILLE_TEXTE doît être une chaîne de caractères'; const MSG_ERROR_END = 'L\'objet ne peut pas être crée'; public function __construct(array $data) { $this->setVilleId($data['ville_id']); $this->setVilleNom($data['ville_nom']); $this->setVilleTexte($data['ville_texte']); if(!empty(self::$_error)) { throw new Exception(self::$_error . self::MSG_ERROR_END); } } public function setError($msg) { self::$_error = $msg; } public function getError() { return self::$_error; } public function setVilleId($_ville_id) { if((is_int($_ville_id)) AND ($_ville_id > 0)) { $this->_ville_id = $_ville_id; } else { $this->setError(self::MSG_ERROR_VILLE_ID); } } public function setVilleNom($_ville_nom) { if(is_string($_ville_nom)) { $this->_ville_nom = $_ville_nom; } else { $this->setError(self::MSG_ERROR_VILLE_NOM); } } public function setVilleTexte($_ville_texte) { if(is_string($_ville_texte)) { $this->_ville_texte = $_ville_texte; } else { $this->setError(self::MSG_ERROR_VILLE_TEXTE); } } public function getVilleId() { return $this->_ville_id; } public function getVilleNom() { return $this->_ville_nom; } public function getVilleTexte() { return $this->_ville_texte; } }
process/process-edition.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
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 class villeManager { private $_db; public function __construct($db) { $this->setDb($db); } public function setDb(PDO $dbh) { $this->_db = $dbh; } public function getVille($ville_id = '') { $ville_id = $_GET['ville_id']; if(empty($ville_id)) { $sql = 'SELECT ville_id, ville_nom, ville_texte FROM villes'; $stmt = $this->_db->prepare($sql); } elseif(is_numeric($ville_id)) { $sql = 'SELECT ville_id, ville_nom, ville_texte FROM villes WHERE ville_id = :ville_id'; $stmt = $this->_db->prepare($sql); $stmt->bindParam(':ville_id', $ville_id); } $stmt->execute(); $city = $stmt->fetch(); return $city; } public function updateVille(Ville $ville) { $sql = 'UPDATE villes SET ville_nom = :ville_nom, ville_texte = :ville_texte WHERE ville_id = :ville_id'; $ville_id = $ville->getVilleId(); $ville_nom = htmlspecialchars($ville->getVilleNom()); $ville_texte = htmlspecialchars($ville->getVilleTexte()); $stmt = $this->_db->prepare($sql); $stmt->bindParam(':ville_id', $ville_id); $stmt->bindParam(':ville_nom', $ville_nom); $stmt->bindParam(':ville_texte', $ville_texte); $stmt->execute(); } }
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 require('includes/inc-connexion.php'); require('class/Ville.php'); if(isset($_POST['submit_form'])) { $ville_nom = trim($_POST['city_name_form']); $ville_texte = trim($_POST['city_text_form']); $ville_id = trim($_POST['city_id_form']); if((empty($ville_nom)) OR empty($ville_texte)) { $message = '<p class="error">Tous les champs doivent être remplis !</p>'; } else { $manager = new villeManager($db); $current_ville = $manager->getVille(); $new_content = array('ville_id' => (int) $current_ville[0]['ville_id'], 'ville_nom' => $current_ville[0]['ville_nom'], 'ville_texte' => $current_ville[0]['ville_texte']); $ville_to_update = new Ville($new_content); $ville_to_update->setVilleNom($ville_nom); $ville_to_update->setVilleTexte($ville_texte); $ville_to_update->setVilleId($ville_id); if($manager->updateVille($ville_to_update)) { $message = '<p class="message">La mise à jour de la ville ' . $ville_nom . ' est effectuée.</p>'; } else { $message = '<p class="error">La mise à jour de la ville ' . $ville_nom . ' n\'est pas effectuée.</p>'; } } }
Partager