Bonjour, en remplissant un formulaire concernant une image, un titre et une description et jusqu'à là tout va bien.
Les informations sont bien enregistrées dans la table image.
Mais quand je fais un var_dump, titre et description affichent NULL
Besoin d'aide, merci d'avance.
Voici mon code :
class/Image.php
class/imageManager.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
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106 class Image { private $_id; private $_title; private $_descr; private $_filename; private static $error; const MSG_ERROR_ID = 'ID doit être un entier.'; const MSG_ERROR_TITLE = 'TITRE doit être une chaîne de caractères.'; const MSG_ERROR_DESCR = 'DESCR doit être une chaîne de caractères.'; const MSG_ERROR_FILENAME = 'FILENAME doit être une chaîne de caractères.'; const MSG_ERROR_END = 'L\'objet ne peut pas être créé.'; public function __construct(array $data) { $this->setId($data['id']); $this->setTitle($data['title']); $this->setDescr($data['descr']); $this->setFilename($data['filename']); 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 setId($id) { if((is_int($id)) AND ($id > 0)) { $this->_id = $id; } else { $this->setError(self::MSG_ERROR_ID); } } public function setTitle($title) { if(is_string($title)) { $this->_title = $title; } else { $this->setError(self::MSG_ERROR_TITLE); } } public function setDescr($descr) { if(is_string($descr)) { $this->_descr = $descr; } else { $this->setError(self::MSG_ERROR_DESCR); } } public function setFilename($filename) { if(is_string($filename)) { $this->_filename = $filename; } else { $this->setError(self::MSG_ERROR_FILENAME); } } public function getId() { return $this->_id; } public function getTitle() { return $this->_title; } public function getDescr() { return $this->_descr; } public function getFilename() { return $this->_filename; } }
admin.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
89
90
91
92 class imageManager { private $_db; public function __construct($db) { $this->setDb($db); } public function setDb(PDO $dbh) { $this->_db = $dbh; } public function getImages($image_dir) { $i = 0; if($handle = opendir($image_dir)) { while(false !== ($entry = readdir($handle))) { if($entry != "." && $entry != "..") { $i++; $images[$i]['filename'] = $entry; $image_data = $this->getImage($entry); $images[$i]['title'] = $image_data['title']; $images[$i]['descr'] = $image_data['descr']; } } } closedir($handle); return $images; public function getImage($filename) { try { $sql = 'SELECT id, title, descr, filename FROM image WHERE filename = :filename'; $stmnt = $this->_db->prepare($sql); $stmnt->execute(array( ':filename' => $filename )); if($stmnt->fetch()) { return true; } else { return false; } } catch(PDOException $e) { echo 'Erreur au niveau de la requête ' . $e->getMessage(); } } public function addImage(Image $image) { try { $sql = 'INSERT INTO image (title, descr, filename) VALUES(:title, :descr, :filename)'; $title = strip_tags($image->getTitle()); $descr = strip_tags($image->getDescr()); $filename = strip_tags($image->getFilename()); $stmnt = $this->_db->prepare($sql); $stmnt->bindParam(':title', $title); $stmnt->bindParam(':descr', $descr); $stmnt->bindParam(':filename', $filename); $stmnt->execute(); } catch(PDOException $e) { echo 'Erreur au niveau de la requête ' . $e->getMessage(); } } }
config.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 require('process/process-image.php'); $manager = new imageManager($db); $images = $manager->getImages(IMAGE_DIR_PATH); echo '<pre>'; var_dump($images); echo '</pre>'; ?> <h1><?php echo WEB_TITLE; ?></h1> <ul> <?php foreach($images as $image) : ?> <li> <img src="<?php echo IMAGE_DIR_URL . $image['filename']; ?>" width="400" height="400"> <form method="post" action=""> <p>Titre : <input type="text" name="title_form" value="<?php echo $image['title']; ?>"></p> <input type="hidden" name="filename_form" value="<?php echo $image['filename']; ?>"> <p>Description<br> <textarea name="descr_form" cols="50" rows="5"><?php echo $image['descr']; ?></textarea> </p> <p><input type="submit" name="submit_form" value="validez"></p> </form> </li> <?php endforeach; ?> </ul> <?php if(isset($error_msg)) echo $error_msg; ?>
process/process-image.php
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13 define('WEB_TITLE', 'Projet Images'); define('WEB_DIR_NAME', 'php-mysql-avance-projet-images'); define('WEB_DIR_URL', 'http://' . $_SERVER['HTTP_HOST'] . '/' . WEB_DIR_NAME . '/'); define('IMAGE_DIR_NAME', 'images'); define('IMAGE_THUMB_NAME', 'thumbnails'); define('IMAGE_DIR_PATH', $_SERVER['DOCUMENT_ROOT'] . '/' . WEB_DIR_NAME . '/' . IMAGE_DIR_NAME . '/'); define('IMAGE_DIR_URL', 'http://' . $_SERVER['HTTP_HOST'] . '/' . WEB_DIR_NAME . '/' . IMAGE_DIR_NAME . '/'); define ('THUMB_DIR_PATH', $_SERVER['DOCUMENT_ROOT'] . '/' . WEB_DIR_NAME . '/' . IMAGE_DIR_NAME . '/' .IMAGE_THUMB_NAME . '/'); define ('THUMB_DIR_URL', 'http://' . $_SERVER['HTTP_HOST'] . '/' . WEB_DIR_NAME . '/' . IMAGE_DIR_NAME . '/ ' .IMAGE_THUMB_NAME . '/');
includes/inc-connexion.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 require('includes/inc-connexion.php'); require('config.php'); require('class/Image.php'); require('class/imageManager.php'); if(!isset($_POST['submit_form'])) { $error_msg = 'Aucune donnée n\'est fournie. <a href="' . WEB_DIR_URL . 'admin.php">retour</a>'; } if(isset($_POST['submit_form'])) { $title_form = trim($_POST['title_form']); $descr_form = trim($_POST['descr_form']); $filename_form = trim($_POST['filename_form']); if((empty($title_form)) OR (empty($descr_form)) OR (empty($filename_form))) { $error_msg = 'Une des informations est manquante. <a href="' . WEB_DIR_URL . 'admin.php">retour</a>'; } else { $image_data = array( 'id' => 1, 'title' => $title_form, 'descr' => $descr_form, 'filename' => $filename_form ); $image = new Image($image_data); $manager = new imageManager($db); $addImage = $manager->addImage($image); if(true == $addImage) { header('location:' . WEB_DIR_URL . 'admin.php?addImage=ok'); } else { $error_msg = '<br><a href="' . WEB_DIR_URL . 'admin.php">retour</a>'; } } }
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13 $dsn = 'mysql:host=localhost; charset=utf8; dbname=projet_image'; $user = 'root'; $pass = ''; try { $db = new PDO($dsn, $user, $pass); $db->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); } catch(PDOException $e) { echo 'Erreur de connexion ' . $e->getMessage(); }
Partager