Bonjour,

Voila je rencontre un petit problème avec mon code. Je suis sous windows et sous WAMP en local.

Donc j'en suis a la partie 4/5 de la réalisation d'un portfolio en php, mais je bloque au moment d'envoyer une création, elle se crée bien dans la tables "images" mais je n'ai rien dans mon dossier img/works. J'ai d'abord pensé que c'était un problème de chemin (et ça fait encore partie de mes suppositions) mais j'ai bien tout suivi, je n'ai aucune erreur et un var_dump m'affiche bel et bien le bon chemin.

Voici quelque bout du code, notamment :
La sauvegarde d'une image dans la table:

            if(isset($_GET['id'])){
                $id = $db->quote($_GET['id']);
                $db->query("UPDATE works SET name=$name, slug=$slug, content=$content, category_id=$category_id WHERE id=$id");
            }else{
            $db->query("INSERT INTO works SET name=$name, slug=$slug, content=$content, category_id=$category_id");
            $_GET['id'] = $db->lastInsertId();
        }
            setFlash("La création $name a bien été ajouté", 'success');

L'envoi dans le dossier :

           $work_id = $db->quote($_GET['id']);
           $image = $_FILES['image'];
           $extension = pathinfo($image['name'], PATHINFO_EXTENSION);
           if(in_array($extension, array('jpg','png'))){
            $db->query("INSERT INTO images SET work_id=$work_id");
            $image_id = $db->lastInsertId();
            $image_name = $image_id . '.' . $extension;
            move_uploaded_file($image['tmp_name'], IMAGES . 'works'. DIRECTORY_SEPARATOR . $image_name);
            $image_name = $db->quote($image_name);
            $db->query("UPDATE images SET name=$image_name WHERE id=$image_id");

et les define de mon constant.php

    <?php
    define('WWW_ROOT', dirname(dirname(__FILE__)));
    $directory = basename(WWW_ROOT);
    $url = explode($directory, $_SERVER['REQUEST_URI']);
    if(count($url) == 1){
    define('WEBROOT', '/');
    }else{
    define("WEBROOT", $url[0]. 'Portfolio'.'/');
    }

    // var_dump(WEBROOT);
    // die();

    define('IMAGES', WWW_ROOT . DIRECTORY_SEPARATOR . 'img' . DIRECTORY_SEPARATOR);

    // var_dump(IMAGES);
    // die();

J'ai chercher un peu partout et je n'ai rien trouvé, j'ai tenté de modifier le chemin ça marche pas non plus, il doit bien y avoir un truc que j'arrive pas a piger mais je vois pas, aucune erreur ne s'affiche non plus et le chemin me semble bon..

Merci d'avance pour votre aide. :]

EDIT : Je viens de remarquer, ma table 'image' ne reçoit rien :[

3 réponses


Gaspard
Réponse acceptée

Hello !

Pour ton insertion et ta modification, au lieu de faire

$db->query("UPDATE works SET name=$name, slug=$slug, content=$content, category_id=$category_id WHERE id=$id");

Essaie peut-être

$db->query("UPDATE works SET name='". $name ."', slug='". $slug ."', content='". $content ."', category_id=''". $category_id ."' WHERE id='". $id ."'");

Pour ta création d'image, peut-être un problème de droit sur le dossier works ?

Cordialement,
Gasp.

C'était si simple et je n'y ai pas pensé .. C'était bel et bien un problème de droit sur /works !
Merci Gaspard :]

Avec plaisir ! :)

Bonne soirée !
Gasp.