Images sur serveur et MySQL
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
Code:
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;
}
} |
class/imageManager.php
Code:
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();
}
}
} |
admin.php
Code:
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; ?> |
config.php
Code:
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 . '/'); |
process/process-image.php
Code:
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>';
}
}
} |
includes/inc-connexion.php
Code:
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();
} |