J'ai 4 messages d'erreurs :
Notice: Undefined index: id in C:\wamp64\www\php-mysql-avance-projet-images\process\process-image.php
Notice: Undefined index: title in C:\wamp64\www\php-mysql-avance-projet-images\process\process-image.php
Notice: Undefined index: descr in C:\wamp64\www\php-mysql-avance-projet-images\process\process-image.php
Notice: Undefined index: filename in C:\wamp64\www\php-mysql-avance-projet-images\class\Image.php
Fatal error: Uncaught Exception: FILENAME doit être une chaîne de caractères.L'objet ne peut pas être créé. in C:\wamp64\www\php-mysql-avance-projet-images\class\Image.php
Besoin d'aide, merci d'avance.
Merci d'avance.
class/Image.php
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
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
));
$count = $stmnt->rowCount();
if($count > 0) {
return $stmnt->fetch();
}
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();
}
}
public function updateImage(Image $image) {
try {
$sql = 'UPDATE image SET title = :title, descr = :descr WHERE filename = :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();
}
}
}
process/process-image.php
if(!isset($_POST['submit_form'])) {
$message = '<p class="error">Aucune donnée n\'est fournie. <a href="admin.php">retour</a></p>';
}
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)) {
$message = '<p class="error">Une des informations est manquante. <a href="admin.php">retour</a></p>';
}
else {
$image_data = array(
'id' => 1,
'title' => $title_form,
'descr' => $descr_form,
'filename' => $filename_form
);
$image = new Image($image_data);
$manager = new imageManager($db);
$current_image = $manager->getImages(IMAGE_DIR_PATH);
$new_content = array('id' => (int) $current_image['id'], 'title' => $current_image['title'],
'descr' => $current_image['descr'], 'filename' => $current_image['filename']);
$image_to_update = new Image($new_content);
$image_to_update->setTitle($title_form);
$image_to_update->setDescr($descr_form);
$image_to_update->setFilename($filename_form);
if(isset($_POST['update'])) {
$addImage = $manager->updateImage($image_to_update);
}
else {
$addImage = $manager->addImage($image);
if(true === $addImage) {
$message = '<p class="success">Les informations ont bien été enregistrées dans la base de données.</p>';
}
else {
$message = '<p class="error">Une erreur est survenue lors de l\'insertion
ou de la mise à jour des données dans la base.<br>
Aucune information n\'a été enregistrée ou modifiée.</p>';
}
}
}
}
config.php
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 . '/');
admin.php
require('includes/inc-connexion.php');
require('config.php');
require('class/Image.php');
require('class/imageManager.php');
require('process/process-image.php');
$manager = new imageManager($db);
$images = $manager->getImages(IMAGE_DIR_PATH);
?>
<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']; ?>">
<?php if(!empty($image['title'])) : ?>
<input type="hidden" name="update" value="1">
<?php endif; ?>
<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="valider"></p>
</form>
</li>
<?php endforeach; ?>
</ul>
<?php if(isset($message)) echo $message; ?>