Insertion noms de fichiers images dans la base
Résolu
ameb2908
Messages postés
93
Date d'inscription
Statut
Membre
Dernière intervention
-
ameb2908 Messages postés 93 Date d'inscription Statut Membre Dernière intervention -
ameb2908 Messages postés 93 Date d'inscription Statut Membre Dernière intervention -
Bonjour, je m'explique, j'aimerais insérer dans la base le nom de mes fichiers concernant mes images après qu'il soit déplacer dans le répertoire images. Le problème c'est qu'il vont bien dans le dossier images sans les accents, les apostrophes et les espaces, mais pas dans la base.
Besoin d'aide, merci bien et bonne fin de journée.
class/imageManager.php
admin/create-image.php
process/process-create-image.php
Besoin d'aide, merci bien et bonne fin de journée.
class/imageManager.php
<?php class imageManager { private $db; public function __construct($db) { $this->setDb($db); } public function setDb(PDO $dbh) { return $this->db = $dbh; } public function upload($files) { $upload_dir = IMAGE_DIR_PATH; foreach($files['upload_form']['error'] as $key => $error) { $error = 0; if($error == UPLOAD_ERR_OK) { $type = $files['upload_form']['type'][$key]; $size = $files['upload_form']['size'][$key]; $tmp_name = $files['upload_form']['tmp_name'][$key]; $name = $files['upload_form']['name'][$key]; $filename = $this->cleanText($name); // Seules les fichiers jpg qui ont une taille inférieurs ou égal à 70 000 000 Octets sont autorisés. if(($type == 'image/jpeg') AND ($size <= 70000000)) { if(move_uploaded_file($tmp_name, $upload_dir . $filename) === false) { $error++; } else { // Appel avec $this de la méthode au sein d'une même classe $this->createThumbnail($filename); } } else { $error++; echo '<p class="msg_error">Seules les fichiers jpeg qui ont une taille inférieur ou égal 70000000 sont autorisés'; } } else { $error++; } } if($error == 0) { return true; } else { return false; } } }
admin/create-image.php
require('../include/inc-connexion.php'); require('../include/inc-config.php'); require('../class/Image.php'); require('../class/imageManager.php'); require('../process/process-create-image.php'); require('menu.php');
<h1>upload</h1> <?php if(isset($message)) echo $message ?> <form id="upload" method="post" action="" enctype="multipart/form-data"> <p><label for="title">Titre :</label></p> <p><input type="text" name="title_form" id="title"></p> <p><label for="descr">Description :</label></p> <p><textarea name="descr_form" id="descr" cols="50" rows="5"></textarea></p> <p>Ajoutez des images</p> <input type="file" name="upload_form[]" multiple="multiple" value=""> <input type="submit" id="submit" name="submit_form" value="Validez"> </form>
process/process-create-image.php
if(!empty($_FILES)) { $manager = new imageManager($db); $images = $manager->upload($_FILES); if($images === true) { $message = '<p class="msg_success">Le chargement a réussi</p>'; } else { $message = '<p class="msg_error">Le chargement a échoué</p>'; } } // Les valeurs sont-elles postées ? if(!isset($_POST['submit_form'])) { $message = '<p class="msg_error">Aucune donnée n\'est fournie. <a href="' . WEB_DIR_URL . 'admin/create-image.php">retour</a></p>'; } if(isset($_POST['submit_form'])) { $title_form = htmlspecialchars(trim($_POST['title_form'])); $descr_form = htmlspecialchars(trim($_POST['descr_form'])); // Cas où les valeurs sont postées. // Si une des valeurs est vide. if((empty($title_form)) OR (empty($descr_form))) { $message = '<p class="msg_error">Une des informations est manquante. <a href="' . WEB_DIR_URL . 'admin/create-image.php">retour</a></p>'; } else { $images_data = array( 'imgID' => 1, 'title' => $title_form, 'descr' => $descr_form, 'filename' => $_FILES['upload_form']['name'][0] ); $image_data = new Image($images_data); $manager = new imageManager($db); if(!$manager->readImageData($images)) { $image = $_FILES['upload_form']['name'][0]; $manager->cleanText($image); $manager->createImageData($image_data); echo '<p><a href="update-image.php">Mise à jour des données</a></p>'; print_r($_FILES); } else { $message = '<p class="msg_error">Une erreur est survenue lors de l\'enregistrement des données dans la base.<br> Aucune information n\'a été enregistrée.</p>'; } } }
A voir également:
- Insertion noms de fichiers images dans la base
- Comment réduire la taille d'un fichier - Guide
- Base de registre - Guide
- Touche insertion clavier - Guide
- Insertion sommaire word - Guide
- Explorateur de fichiers - Guide
6 réponses
ça y est ça marche enfin, merci bien & bon weekend.
<?php if(!empty($_FILES)) { $manager = new imageManager($db); $images = $manager->upload($_FILES); if($images === true) { $message = '<p class="msg_success">Le chargement a réussi</p>'; } else { $message = '<p class="msg_error">Le chargement a échoué</p>'; } } // Les valeurs sont-elles postées ? if(!isset($_POST['submit_form'])) { $message = '<p class="msg_error">Aucune donnée n\'est fournie. <a href="' . WEB_DIR_URL . 'admin/create-image.php">retour</a></p>'; } if(isset($_POST['submit_form'])) { $title_form = htmlspecialchars(trim($_POST['title_form'])); $descr_form = htmlspecialchars(trim($_POST['descr_form'])); // Cas où les valeurs sont postées. // Si une des valeurs est vide. if((empty($title_form)) OR (empty($descr_form))) { $message = '<p class="msg_error">Une des informations est manquante. <a href="' . WEB_DIR_URL . 'admin/create-image.php">retour</a></p>'; } else { $images_data = array( 'imgID' => 1, 'title' => $title_form, 'descr' => $descr_form, 'filename' => $manager->cleanText($_FILES['upload_form']['name'][0]) ); $image_data = new Image($images_data); $manager = new imageManager($db); if(!$manager->readImageData($images)) { $manager->createImageData($image_data); ?> <p><a href="update-image.php">Mise à jour des données</a></p> <?php print_r($_FILES); } else { $message = '<p class="msg_error">Une erreur est survenue lors de l\'enregistrement des données dans la base.<br> Aucune information n\'a été enregistrée.</p>'; } } }
Bonjour,
On peut supposer que le code pour faire l'insertion se trouve dans la fonction que tu appelles après le move...
Donc... dans :
Sauf que je ne vois cette fonction nul part dans ce que tu nous montres...
On peut supposer que le code pour faire l'insertion se trouve dans la fonction que tu appelles après le move...
Donc... dans :
createThumbnail
Sauf que je ne vois cette fonction nul part dans ce que tu nous montres...
/* METHODE QUI VA CREE LES IMAGES MINIATURES */ public function createThumbnail($filename) { // Définition des chemins des images et des vignettes. $image = IMAGE_DIR_PATH . $filename; $vignette = THUMB_DIR_PATH . $filename; // Récupération des dimensions de l'image source. $size = getimagesize($image); $largeur = $size[0]; $hauteur = $size[1]; // Définition des valeurs souhaitées pour les vignettes. // Ce sont des valeurs maximales. $largeur_max = 200; $hauteur_max = 200; // Création de l'image source avec imagecreatefromjpeg. $image_src = imagecreatefromjpeg($image); // On crée un ratio (une proportion). // et on verifie que l'image source ne soit pas // plus petite que l'image de destination. if($largeur > $largeur_max OR $hauteur > $hauteur_max) { // Si largeur plus grande que hauteur. if($hauteur <= $largeur) { $ratio = $largeur_max / $largeur; } else { $ratio = $hauteur_max / $hauteur; } } else { // l'image créee sera identique à l'originale. $ratio = 1; } // Création de l'image noire de destination avec imagecreatetruecolor. $image_destination = imagecreatetruecolor(round($largeur * $ratio), round($hauteur * $ratio)); // Fabrication de la vignette avec dimensions souhaitées. imagecopyresampled($image_destination, $image_src, 0, 0, 0, 0, round($largeur * $ratio), round($hauteur * $ratio), $largeur, $hauteur); // Envoi de la nouvelle image JPEG dans le fichier. if(!imagejpeg($image_destination, $vignette)) { $error_msg = 'la création de la vignette a echouée pour l\'image ' . $image; return $error_msg; exit; } else { return true; } } public function cleanText($filename) { $special = array(' ', '\'', 'á','à','â','ä','ã','å','ç','é','è','ê', 'ë','í','ì','î','ï','ñ','ó','ò','ô','ö','õ','ú','ù', 'û','ü','ý','ÿ','Á','À','Â','Ä','Ã','Å','Ç','É','È', 'Ê','Ë','Í','Ï','Î','Ì','Ñ','Ó','Ò','Ô','Ö','Õ','Ú', 'Ù','Û','Ü','Ý'); $normal = array('-', '', 'a','a','a','a','a','a','c','e','e','e','e', 'i','i','i','i','n','o','o','o','o','o','u','u','u', 'u','y','y','A','A','A','A','A','A','C','E','E','E', 'E','E','I','I','I','I','N','O','O','O','O','O','U', 'U','U','U','Y'); $result = str_replace($special, $normal, $filename); $results = strtolower($result); return $results; }
/* METHODE QUI INSERT LES DONNEES DANS LA BASE DONT LE NOM DU FICHIER DE L'IMAGE */ public function createImageData(Image $image) { try { $sql = 'INSERT INTO images(title, descr, filename) VALUES(:title, :descr, :filename)'; $stmnt = $this->db->prepare($sql); $title = $image->getTitle(); $descr = $image->getDescr(); $filename = $image->getFilename(); $stmnt->bindParam(':title', $title); $stmnt->bindParam(':descr', $descr); $stmnt->bindParam(':filename', $filename); $stmnt->execute(); } catch(PDOException $e) { echo 'Une erreur est survenue lors de l\'insertion des données dans la base.<br> Message d\'erreur : ' . $e->getMessage(); } }
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
Pas de message d'erreur. sauf que mon fichier c'est l'été.jpg est déplacé dans le répertoire images renommer comme ceci
cest-lete.jpg, jusque là tout va bien. Mais c'est l'insertion dans la base qui pose problème. mon fichier s'insert comme ceci
c'est l'été.jpg
cest-lete.jpg, jusque là tout va bien. Mais c'est l'insertion dans la base qui pose problème. mon fichier s'insert comme ceci
c'est l'été.jpg
Bonjour, j'ai fait comme vous dites. ça marche toujours pas.
<?php if(!empty($_FILES)) { $manager = new imageManager($db); $images = $manager->upload($_FILES); if($images === true) { $message = '<p class="msg_success">Le chargement a réussi</p>'; } else { $message = '<p class="msg_error">Le chargement a échoué</p>'; } } // Les valeurs sont-elles postées ? if(!isset($_POST['submit_form'])) { $message = '<p class="msg_error">Aucune donnée n\'est fournie. <a href="' . WEB_DIR_URL . 'admin/create-image.php">retour</a></p>'; } if(isset($_POST['submit_form'])) { $title_form = htmlspecialchars(trim($_POST['title_form'])); $descr_form = htmlspecialchars(trim($_POST['descr_form'])); // Cas où les valeurs sont postées. // Si une des valeurs est vide. if((empty($title_form)) OR (empty($descr_form))) { $message = '<p class="msg_error">Une des informations est manquante. <a href="' . WEB_DIR_URL . 'admin/create-image.php">retour</a></p>'; } else { $images_data = array( 'imgID' => 1, 'title' => $title_form, 'descr' => $descr_form, 'filename' => $_FILES['upload_form']['name'][0] ); $image_data = new Image($images_data); $manager = new imageManager($db); if(!$manager->readImageData($images)) { $manager->cleanText($images); $manager->createImageData($image_data); ?> <p><a href="update-image.php">Mise à jour des données</a></p> <?php print_r($_FILES); } else { $message = '<p class="msg_error">Une erreur est survenue lors de l\'enregistrement des données dans la base.<br> Aucune information n\'a été enregistrée.</p>'; } } }