Bonjour,
Je souhaite faire un UPDATE de mon image retaillée sur ma BDD.
J'ai utilisé la class de Grafikart pour le rezise.

Le problème c'est que j'ai essayé de mettre un update comme ceci sur l'un ou l'autre fichier, et ça ne fonctionne pas

$q = mysql_query($sql,"UPDATE users SET cover = '".$img['name']."' WHERE login = '".$_SESSION['login']."'");

Est ce que quelq'un peut m'aider à trouver la solution ?

J'ai un fichier upload comme ceci :

<?php
if(!empty($_FILES)){
    require("imgClass.php");
    $img = $_FILES['img'];
    $ext = strtolower(substr($img['name'],-3));
    $allow_ext = array("jpg",'png','gif');
    if(in_array($ext,$allow_ext)){
        move_uploaded_file($img['tmp_name'],"./img/cover/original/".$img['name']);
        Img::creerMin("./img/cover/original/".$img['name'],"./img/cover/crop",$img['name'],980,315);
        Img::convertirJPG("./img/cover/original/".$img['name']);

        echo "<div class=\"notification-success\">";
        echo "<p>La photo a été ajoutée avec succès sur le serveur. Sélectionnez votre image dans la liste ci-dessous </p>";
        echo "</div>";
    }
    else{
        echo "<div class=\"notification-error\">";
        echo  "<p>Le fichier ajouté n'est pas une image ! Les formats pris en compte sont : jpg, png et gif.</p>";
        echo  "</div>";
    }

}

?>
<?php
if(isset($erreur)){
    echo $erreur;
}
?>

Et mon fichier ou je veux afficher mon image comme ceci :

<div class="cover_box">
    <div class="container">
        <?php include './admin/includes/upload_cover.php'; ?>
        <form method="post" action="" enctype="multipart/form-data">
            <div class="image-upload">
                <label for="file-input">

                    <?php
                        require "./class/config.php";
                        mysql_connect(DB_HOST,DB_LOGIN,DB_PASS);
                        mysql_select_db(DB_BDD);

                        $sql="SELECT * FROM users WHERE id={$_GET['id']}";
                        $req = mysql_query($sql) or die ('Erreur SQL !<br/>'.$sql.'<br/>'.mysql_error());
                        while($data=mysql_fetch_assoc($req)){

                                    if (!empty($data['cover'])){
                                         echo "<img src=\"img/cover/crop/".$data['cover']."\"/>";}
                                    else{
                                         echo "<img src='./img/cover.jpg'>";}
                        }
                    ?>

                </label>
                <input id="file-input" type="file" name="img" />
                <input class="save_cover btn btn-success" type="submit" value="enregister"/>
            </div>
        </form>
    </div>

2 réponses


Bonjour,

Alors déja pour commencé dans ton code tu as une faille de sécurité.
Tu fait :

     $allow_ext = array("jpg",'png','gif');
    if(in_array($ext,$allow_ext)){

le problème c'est que tu peut très bien avoir un nom de fichier monfichier.jpg.sh

Ensuite je dirai qu'il y a un problème dans tes parmatres de mysql_query($ ton premier parametre c'est ta requete SQL donc je dirai que ca resemblerai à ca :

    $q = mysql_query("UPDATE users SET cover = '".$img['name']."' WHERE login = '".$_SESSION['login']."'");

Ensuite pour finir je te conseil d'arrêter d'utiliser ce genre de fonction qui est obsolète... et remplacer ca par PDO

@Flug, PDO c'est de l'orienté objet. Si pour toi ça paraît simple, moi qui programme depuis plus de 8ans en procédural sans jamais avoir touché au POO, crois moi que c'est pas si facile. Faut le sentir, faut être prêt.

Mysql_query est obsolète oui (mais fonctionne). En revanche, mysqli_query ne l'est pas. Il peut tout à fait à continuer à programmer comme il le fait en rajoutant simplement un i à la fin de mysql dans ses fonctions.

http://php.net/manual/fr/class.mysqli.php

Même fonctions, aucune habitude de perdu. Certes pour l'état pratique, il devrait utiliser la POO (c'est moi qui dit ça ?), mais si il n'est pas prêt, faut pas le forcer, ça va le dégouter, c'est vraiment différent et pas si facile que ça :/