IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage PHP Discussion :

Supprimer image dans galerie php sans bd


Sujet :

Langage PHP

  1. #1
    Membre à l'essai
    Femme Profil pro
    Développeur Web
    Inscrit en
    Avril 2018
    Messages
    31
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Pas de Calais (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Avril 2018
    Messages : 31
    Points : 20
    Points
    20
    Par défaut Supprimer image dans galerie php sans bd
    Bonjour à tous,

    je cherche en vain à trouver une méthode pour supprimer une ou plusieurs images de la galerie dont code ci-dessous.
    j'ai retranscrit le code complètement sur la base d'une vidéo et il fonctionne parfaitement. Toutefois, impossible de supprimer une image ou plusieurs, ça fait 2 jours que j'essaye des méthodes trouvées sur le net mais je ne dois pas savoir les faire fonctionner.
    Je débute dans le PHP, merci de votre indulgence.
    index.php

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    <?php
     
    if(!empty ($_FILES)){
    require("imgClassnew.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'],"images/".$img['name']);
      Img::creerMin("images/".$img['name'],"images/min",$img['name'],215,112);
      Img::convertirJPG("images/".$img['name']);
      }
    else{
      $erreur = "il n'est accepté que le format jpg, jpeg, png et gif";
      }
    }   
    ?>
     
    <!DOCTYPE html>
    <html>
      <?php include 'head.php' ?>
     
            <meta charset="utf-8"/>
            <script type="text/javascript" src=" https://ajax.googleapis.com/ajax/libs/jquery/1.5.1/jquery.min.js"></script>
            <script src="js/zoombox/zoombox.js" type="text/javascript"></script>
            <link href="js/zoombox/zoombox.css" rel="stylesheet" type="text/css" media="screen" />
            <script type="text/javascript">
            jQuery(function($){
              $('a.zoombox').zoombox({
              theme : 'zoombox', //available themes : zoombox,lightbox, prettyphoto, darkprettyphoto, simple
              opacity : 0.8, // Black overlay opacity
              duration : 800, // Animation duration
              animation : true, // Do we have to animate the box ?
              width : 600, // Default width
              height : 400, // Default height
              gallery : true, // Allow gallery thumb view
              autoplay : false // Autoplay for video
              });
     
            </script>
        </head>
        <body>
            <?php
     
            if(isset($erreur )){
                echo $erreur;
            }
            ?>
     
           <form method="post" action="index.php" enctype="multipart/form-data">
                  <input type="file" name="img" class="zoombox"/>
                  <input type="submit" name="Envoyer"/>
           </form>
     
                <?php
                  $dos="images/min";
                  $dir = opendir($dos);
                    while($file= readdir($dir)){
                        $allow_ext = array("jpg",'png','gif');
                        $ext = strtolower(substr($file ,-3));
                       if(in_array($ext,$allow_ext)){
                ?>
     
                <div class="min">
                    <a href="images/<?php echo $file; ?> "</a>
                      <img src="images/min/<?php echo $file; ?>" rel="zoombox"/>
     <form method="GET" action="majimsup.php?nom=images/.$img['name'] ">
    <input type="hidden" name="img_delete" />
    <input type="image" src="images/poubelle.png" alt="Effacer" onclick="supprimer()" />
    </form>
    </div>
                    </a>
                </div>
     
             <?php
           }
         }
         ?>
          <style>
            .min {
            display: inline-flex;
          }
          </style>
    </body>
    </html>
    indexClassnew.php
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    class Img{
     
      static function creerMin($img,$chemin,$nom,$mlargeur=100,$mhauteur=100){
        // On supprime l'extension du nom
        $nom = substr($nom,0,-4);
        // On récupère les dimensions de l'image
        $dimension=getimagesize($img);
        // On cré une image à partir du fichier récup
        if(substr(strtolower($img),-4)==".jpg"){$image = imagecreatefromjpeg($img);} 
        //else if(substr(strtolower($img),-5)==".jpeg"){$image = imagecreatefromjpeg($img); }
        //else if(substr(strtolower($img),-4)==".bmp"){$image = imagecreatefrombmp($img); }
        else if(substr(strtolower($img),-4)==".png"){$image = imagecreatefrompng($img); }
        else if(substr(strtolower($img),-4)==".gif"){$image = imagecreatefromgif($img); }
        // L'image ne peut etre redimensionne
        else{return false; }
     
        // Création des miniatures
        // On cré une image vide de la largeur et hauteur voulue
        $miniature =imagecreatetruecolor ($mlargeur,$mhauteur); 
        // On va gérer la position et le redimensionnement de la grande image
        if($dimension[0]>($mlargeur/$mhauteur)*$dimension[1] ){ $dimY=$mhauteur; $dimX=$mhauteur*$dimension[0]/$dimension[1]; $decalX=-($dimX-$mlargeur)/2; $decalY=0;}
        if($dimension[0]<($mlargeur/$mhauteur)*$dimension[1]){ $dimX=$mlargeur; $dimY=$mlargeur*$dimension[1]/$dimension[0]; $decalY=-($dimY-$mhauteur)/2; $decalX=0;}
        if($dimension[0]==($mlargeur/$mhauteur)*$dimension[1]){ $dimX=$mlargeur; $dimY=$mhauteur; $decalX=0; $decalY=0;}
        // on modifie l'image crée en y plaçant la grande image redimensionné et décalée
        imagecopyresampled($miniature,$image,$decalX,$decalY,0,0,$dimX,$dimY,$dimension[0],$dimension[1]);
        // On sauvegarde le tout
        imagejpeg($miniature,$chemin."/".$nom.".jpg",90);
        return true;
      }
     
      static function convertirJpg($img){
        if(substr(strtolower($img),-4)==".jpg"){$image = imagecreatefromjpeg($img);}
        //else if(substr(strtolower($img),-5)==".jpeg"){$image = imagecreatefromjpeg($img); }
        //else if(substr(strtolower($img),-4)==".bmp"){$image = imagecreatefrombmp($img); }
        else if(substr(strtolower($img),-4)==".png"){$image = imagecreatefrompng($img); }
        else if(substr(strtolower($img),-4)==".gif"){$image = imagecreatefromgif($img); }
        // L'image ne peut etre redimensionne
        else{return false; }
        unlink($img);
        imagejpeg($image,substr($img,0,-3)."jpg",90);
        return true;
      }
    }

  2. #2
    Expert éminent sénior

    Homme Profil pro
    Développeur Web
    Inscrit en
    Septembre 2010
    Messages
    5 387
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Septembre 2010
    Messages : 5 387
    Points : 10 415
    Points
    10 415
    Par défaut
    Salut,

    Et il est où le script pour supprimer une image ? Pas dans ce que tu as donné apparemment... ?

    Sur le principe tu peux lister le dossier de tes images et mettre un bouton "suppr" en face de chaque ligne ou image, qui déclenchera une requête ajax vers un script php pour supprimer le fichier avec la fonction unlink.

    Au passage si veux une solution d'upload plus puissante que celle que tu as trouvée tu peux regarder ici, les exemples sont prêt à l'emploi et il y a aussi un exemple de création d'albums photos sans bdd.

  3. #3
    Membre à l'essai
    Femme Profil pro
    Développeur Web
    Inscrit en
    Avril 2018
    Messages
    31
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Pas de Calais (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Avril 2018
    Messages : 31
    Points : 20
    Points
    20
    Par défaut
    Bonjour ABCIWEB,

    Je te remercie d'avoir pris le temps de me répondre.
    Merci pour le lien vers Upload-Ajax mais je suis vraiment au début de l'apprentissage du PHP, c'est super mais un peu trop complexe actuellement pour moi (je souhaite comprendre ce que je code.)

    j'ai créer une poubelle à coté de l'affichage de l'image
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    <div class="min">
                    <a href="images/<?php echo $file; ?> "</a>
                      <img src="images/min/<?php echo $file; ?>" rel="zoombox"/>
     <form method="GET" action="majimsup.php?nom=images/.$img['name'] ">
    <input type="hidden" name="img_delete" />
    <input type="image" src="images/poubelle.png" alt="Effacer" onclick="supprimer()" />
    </form>
    </div>
    et créer un fichier majimsup.php vide en attente de trouver la solution pour effacer l'image.
    j'ai essayé de multiples exemples trouvés sur le net mais j'y arrive pas.

  4. #4
    Expert éminent sénior

    Homme Profil pro
    Développeur Web
    Inscrit en
    Septembre 2010
    Messages
    5 387
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Septembre 2010
    Messages : 5 387
    Points : 10 415
    Points
    10 415
    Par défaut
    Citation Envoyé par web.bacor Voir le message
    Bonjour ABCIWEB,

    Je te remercie d'avoir pris le temps de me répondre.
    Merci pour le lien vers Upload-Ajax mais je suis vraiment au début de l'apprentissage du PHP, c'est super mais un peu trop complexe actuellement pour moi (je souhaite comprendre ce que je code.)
    En fait c'est le même principe d'utilisation que les classes et fonctions que tu utilises. Il suffit d'apprendre à utiliser la classe, cela t'évite d'avoir à programmer les fonctions internes comme ta fonction "creerMin" par exemple.
    Après si tu veux comprendre le code interne de chacune des fonctions, effectivement il faudra attendre un peu car certaines d'entre-elles nécessitent des connaissances qui demandent un peu d'expérience et ne sont pas toutes directement accessible pour un débutant. C'est bien d'ailleurs pour cela que l'on fait des classes, pour qu'elles puissent être utilisées facilement ou par des débutants sans avoir à se soucier du code interne des fonctions.

    Enfin bon revenons-en à ton problème de suppression d'image. Je te proposais précédemment d'utiliser une requête ajax pour faire tes suppressions, cela sera beaucoup plus pratique et évitera de rafraichir la page à chaque suppression.

    Puisque tu utilises jQuery tu vas pouvoir t'en servir pour faire ta collection d'objets qui correspondra ici à tous tes boutons "effacer", et aussi pour faire les requêtes ajax. Dans ton exmple tu pourrais les cibler avec la classe parente "min" et en ciblant l'input de type "image", en faisant :
    Code html : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    <!DOCTYPE html>
    <html lang="fr">
    <head>
    <meta charset="UTF-8">
    <title>Test</title>
    <script src="https://code.jquery.com/jquery-3.3.1.min.js"></script>
    <script>
    $(function(){
            var suppr = $('.min').find('input[type=image]');
            // pour chaque élément trouvé on créé un événement onClik qui déclenche la requête ajax
            suppr.each(function() {
                    $(this).on('click',function(){
                            var that = $(this);// On récupère $(this) car sa définition changera à l'intérieur des autres fonctions jQuery
                            // requête ajax vers "majimsup.php" en passant l'attribut data-src de l'input
                            $.post( "majimsup.php", {src: that.attr('data-src')})
                            .done(function( data ) {
                                if(data == 'ok'){
                                     // Si ok on cache la ligne avec un slide
                                     that.parent('.min').slideUp();
                                }
                                 else {
                                     alert(data);
                                }
                             })
                             .fail(function() { // le chemin du fichier php est probablement faux ou le serveur est en panne.
                                 alert("requête ajax non valide");
                            })
                    })
            })
    })
    </script>
    </head>
    <body>
    <div>
        <div class="min">
            <img src="<?php echo 'images/min/image_1.jpg' ?>" rel="zoombox">
            <input type="image" src="images/poubelle.png" data-src="<?php echo 'chemin_image_a_supprimer_1.jpg' ?>" alt="Effacer" />
        </div>
        <div class="min">
            <img src="<?php echo 'images/min/image_2.jpg' ?>" rel="zoombox">
            <input type="image" src="images/poubelle.png" data-src="<?php echo 'chemin_image_a_supprimer_2.jpg' ?>" alt="Effacer" />
        </div>
    </div>
    </body>
    </html>
    code de la page "majimsup.php"
    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    <?php
    $src = isset($_POST['src'])? $_POST['src'] : null;
    if (isset($src)) {
    	// on vérifie que c'est un fichier que l'on peut effacer en utilisant pathinfo par exemple (voir doc)
    	// si oui on efface le fichier
     
    	if(@unlink($src)) {
    		echo 'ok';
    	}
    	else {
    		echo 'echec de la suppression du fichier '.$src;
    	}
    }
    ?>

    Donc voilà le but de ton code côté formulaire est de produire des <div class="min"> dans lesquels tu feras afficher les bonnes valeurs avec php (tu peux bien entendu compléter avec plus de code). Ici j'en ai mis deux pour simuler les deux premiers éléments d'une boucle.

  5. #5
    Membre à l'essai
    Femme Profil pro
    Développeur Web
    Inscrit en
    Avril 2018
    Messages
    31
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Pas de Calais (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Avril 2018
    Messages : 31
    Points : 20
    Points
    20
    Par défaut
    un grand Merci.

    j'essaye le code et je vous tiens au courant.
    Excellente fin de journée.

  6. #6
    Expert éminent sénior

    Homme Profil pro
    Développeur Web
    Inscrit en
    Septembre 2010
    Messages
    5 387
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Septembre 2010
    Messages : 5 387
    Points : 10 415
    Points
    10 415
    Par défaut
    Au passage, le code php de la page "majimsup.php" est le strict minimum pour comprendre le principe mais ce n'est pas sécurisé. Tel quel, n'importe quel pirate pourrait envoyer une variable post "src" vers cette page et effacer le fichier qu'il veut

    Normalement le script devrait être sécurisé par une variable de session définie après authentification de l'utilisateur. Et ensuite il faudrait vérifier que cet utilisateur authentifié ne puisse supprimer que certains fichiers.

Discussions similaires

  1. Réponses: 4
    Dernier message: 01/06/2011, 10h27
  2. [MySQL] problème image dans code php
    Par ptiteuf dans le forum PHP & Base de données
    Réponses: 1
    Dernier message: 09/02/2010, 05h50
  3. Image dans un div sans redimensionnement
    Par joKED dans le forum Mise en page CSS
    Réponses: 5
    Dernier message: 07/10/2009, 16h27
  4. Réponses: 6
    Dernier message: 14/05/2008, 15h35
  5. affichage d'image dans site php
    Par eurykane dans le forum EDI, CMS, Outils, Scripts et API
    Réponses: 21
    Dernier message: 08/07/2006, 17h22

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo