[RESOLU] Récup chemin image, affichage, no refresh

Eléphanteau du PHP | 25 Messages

24 juin 2019, 09:50

Bonjour,
Désolé pour ce titre un peu douteux mais manque de place, cependant, voilà mon soucis. Ici je cherche à récupérer le chemin d'une image que j'insère dans ma bdd pour ensuite afficher mon image (il y a déjà une erreur ici). Mais mon code ne permet que d'avoir un seul chemin d'image, ce qui fait que lorsque que je refresh ma page et bien le site enlève l'image et me dit qu'elle existe déjà..
if (file_exists($image)) 
        {
            echo "Cette image existe déjà.";
            $uploadOk = 0;
        }
if (move_uploaded_file($_FILES["image"]["tmp_name"], $image))
            {
                $sql = 'UPDATE cheval_nom SET image = "'.$_FILES["image"]["name"].'" WHERE id = '.$_GET['id'];
                $req = $bdd->prepare($sql);
                $req->execute();
                $img=$req->fetch();
                ?>
                <img src="/poney/img/<?php echo $img['image'] ?>"/><?php
            } 

Avatar du membre
Mammouth du PHP | 1609 Messages

24 juin 2019, 13:01

Rien de plus logique non ? Il faut que tu requêtes à nouveau le chemin de l'image avec un SELECT sous le if si tu veux la ré-afficher.
Modifié en dernier par Saian le 24 juin 2019, 15:26, modifié 1 fois.
Développeur web depuis + de 20 ans

Eléphanteau du PHP | 25 Messages

24 juin 2019, 14:56

Voilà ce que j'ai :
N'y aurait-il pas un autre moyen de le rendre plus efficace ?
PS : Il fonctionne
        <form method="post" enctype="multipart/form-data">
            <label for="cheval">Cheval :</label>    
            <input type="file" name="image" />
            <input type="submit" value="Modifier" />
        </form>
        <?php
        if(isset($_POST["submit"])) 
        {
            $dos = $_SERVER['DOCUMENT_ROOT']."/poney/img/";
            $image = $dos.$_FILES["image"]["name"];
            simpleName($image);
            $uploadOk = 1;
            $type = strtolower(pathinfo($image,PATHINFO_EXTENSION));

            $check = getimagesize($_FILES["image"]["tmp_name"]);
            if($check !== false) 
            {
                echo " Image - " . $check["mime"] . ".";
                $uploadOk = 1;
            } 
            else 
            {
                echo " Ce n'est pas une image.";
                $uploadOk = 0;
            }
            if (file_exists($image)) 
            {
                echo " Cette image existe déjà.";
                $uploadOk = 0;
            }
            if ($_FILES["image"]["size"] > 5000000) 
            {
                echo " Image trop grande";
                $uploadOk = 0;
            }
            if($type != "jpg" && $type != "png" && $type != "jpeg") 
            {
                echo " Seulement les images de type JPG, PNG et JPEG sont autorisées.";
                $uploadOk = 0;
            }
            if ($uploadOk == 0) 
            {
                echo " Image non téléchargée";
            }
            
        }
        else
        {
            $dos = $_SERVER['DOCUMENT_ROOT']."/poney/img/";
            $image = $dos.$_FILES["image"]["name"];
            simpleName($image);
            $uploadOk = 1;
            $type = strtolower(pathinfo($image,PATHINFO_EXTENSION));
            
            if (move_uploaded_file($_FILES["image"]["tmp_name"], $image))
            {               
                $sql = 'UPDATE cheval_nom SET image = "'.$_FILES["image"]["name"].'" WHERE id = '.$_GET['id'];
                $req = $bdd->prepare($sql);
                $req->execute();
            }
        }       
        $sql1 = 'SELECT image FROM cheval_nom WHERE id = '.$_GET['id'];
        $req1 = $bdd->prepare($sql1);
        $req1->execute();
        $img = $req1->fetch();
        ?>
        <img src="/poney/img/<?php echo $img['image']?>"/>

Avatar du membre
Mammouth du PHP | 1609 Messages

24 juin 2019, 15:28

L'update de l'image ne devrait-il pas être dans le if(isset($_POST["submit"])) et le select dans le else ?
Développeur web depuis + de 20 ans

Eléphanteau du PHP | 25 Messages

24 juin 2019, 15:35

Nan, ça ne fonctionne pas, tant pis je vais laisser comme ça ^^