Page 1 sur 1

Insertion noms de fichiers dans la base

Posté : mer. 16 mars 2022 18:50
par ameb2908
Bonsoir, je réalise un petit exercice sur les images.

Les images vont bien dans le dossier images, ainsi que les miniatures sans les accents, apostrophes et les espaces.

Mais s'insert dans la base avec tout ça.

Je vous joint mon code.

Merci d'avance et bonne soirée.

class/imageManager.php
Code : Tout sélectionner
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);

                if(($type == 'image/jpeg') AND ($size <= 70000000)) {
                    
                    if(move_uploaded_file($tmp_name, $upload_dir . $filename) === false) {

                        $error++;

                    }
                    else {

                        $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
Code : Tout sélectionner
<?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
Code : Tout sélectionner
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>';
    }
}

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']));
  
    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>';
        }
    }
}