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

PHP & Base de données Discussion :

Php UNLINK fichier


Sujet :

PHP & Base de données

  1. #1
    Nouveau membre du Club
    Homme Profil pro
    Développeur Web
    Inscrit en
    Novembre 2017
    Messages
    78
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Aisne (Picardie)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Novembre 2017
    Messages : 78
    Points : 36
    Points
    36
    Par défaut Php UNLINK fichier
    Bonsoir, je suis face à un problème dont je ne trouve pas la solution...

    En gros, j'ai une page index.php, avec un formulaire d'upload, je choisis mon fichier (par exemple: exemple.pdf) et je clique sur Envoyer, il m'envoi le fichier dans le dossier upload/ et me créer une ligne dans ma BDD

    En dessous du formulaire, il m'affiche les lignes de la base de données, avec un bouton DELETE, sur ce bouton, il envoi vers la page delete.php+l'id de la ligne dans la BDD.

    Mon problème, c'est que si je clique sur le bouton delete, il ne me supprime pas le fichier dans mon dossier upload/ par contre la ligne s'efface bien dans la BDD.... Qu'est ce qui va pas avec mon code ?

    Cordialement.


    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
    <form method="POST" action="" enctype="multipart/form-data">
      <div class="form-div">
          <label for="file" class="input-label">
            <i class="fas fa-download"></i>
            <span id="label_span" name="test">Selectionner un fichier</span>
          </label>
          <input id="file" type="file" name="userfile">
          <button type="submit" class="btn btn-green" name="upload">Envoyer</button>
      </div>
    </form>
     
    <?php
      if(isset($_FILES['userfile'])) {
     
     
        $userfile = $_FILES['userfile']['name'];
     
        $phpFileUploadErrors = array(
          0 => "<div style='color: green'>Le fichier à bien été envoyé</div>",
          1 => 'Le fichier est trop gros (ne doit pas dépasser 20mo)',
          2 => 'The uploaded file exceeds the MAX_FILE_SIZE directive that was specified in the HTML form',
          3 => 'The uploaded file was only partially uploaded',
          4 => "<div style='color: red'>Veuillez sélectionner une fichier</div>",
          6 => 'Missing a temporary folder',
          7 => 'Failed to write file to disk.',
          8 => 'A PHP extension stopped the file upload.',
        );
     
        if(!empty($_FILES['userfile']['error'])) {
          echo $phpFileUploadErrors[$_FILES['userfile']['error']];
        } else {
          echo "<div style='color: green'>Le fichier à bien été envoyé</div>";
          $bdd = new PDO("mysql:host=localhost;dbname=amandineBDD", "root", "");
          $req = $bdd->prepare("INSERT INTO img (item_nom, item_date) VALUES ('$userfile', NOW())");
          $req->execute(array($userfile));
          fopen(getcwd() . "/upload/" . $userfile, "w");
        }
     
      }
     
      $req = $bdd->query("SELECT id, item_nom, DATE_FORMAT(item_date, '%d/%m/%Y') AS item_date FROM img");
      $items = $req->fetchAll();
    ?>
     
    <br>
    <table class="table-fill">
      <thead>
      <tr>
      <th class="text-left">Nom</th>
      <th class="text-left">Ajouté le</th>
      <th class="text-left">Actions</th>
      </tr>
      </thead>
      <tbody class="table-hover">
      <?php foreach ($items as $item) { ?>
          <tr>
          <td><?= $item['item_nom']; ?><a style='margin-left: 15px;' class='lien-pdf' target='_blank' href='upload/<?= $item['item_nom'] ?>'><button class='btn btn-close'>Télécharger</button></a></td>
          <td><?= $item['item_date']; ?></td>
          <td><i class='fal fa-edit' data-modal='modalUpdateItem'></i> <a href="delete.php?id=<?= $item['id']; ?>"><i class='fal fa-trash-alt'></i></a></td>
          </tr>
      <?php } ?>
      </tbody>
    </table>
    DELETE.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
     
    <?php
       $bdd = new PDO("mysql:host=localhost;dbname=amandineBDD", "root", "");
     
       if(!empty($_GET['id'])) {
     
        $id = htmlspecialchars($_GET['id']);
    	$file = $_FILES['userfile']['name'];
     
    	  unlink(getcwd() . "/upload/" . $file, "w");
    	  header("Location: LeCoinLecons6eme.php");
    	 $req = $bdd->prepare("DELETE FROM img WHERE id = ?");
    	 $req->execute(array($id));
       }
     
    ?>

  2. #2
    Responsable Systèmes


    Homme Profil pro
    Gestion de parcs informatique
    Inscrit en
    Août 2011
    Messages
    17 434
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Gestion de parcs informatique
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Août 2011
    Messages : 17 434
    Points : 43 065
    Points
    43 065
    Par défaut
    Pourquoi "w" dans la fonction unlink ?

    A retirer. Si on opérationnel, tester le résultat de getcwd() . "/upload/" . $file voir si ça correspond bien au nom de fichier à effacer.
    Ma page sur developpez.com : http://chrtophe.developpez.com/ (avec mes articles)
    Mon article sur le P2V, mon article sur le cloud
    Consultez nos FAQ : Windows, Linux, Virtualisation

  3. #3
    Nouveau membre du Club
    Homme Profil pro
    Développeur Web
    Inscrit en
    Novembre 2017
    Messages
    78
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Aisne (Picardie)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Novembre 2017
    Messages : 78
    Points : 36
    Points
    36
    Par défaut
    Hello, et merci de ta réponse.

    J'ai rechangé par
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    unlink("upload/" . $file);
    il me trouve :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    C:\wamp64\www\eric\LeCoinLecons6eme.php:29:string 'upload/1.jpg' (length=12)
    c'est le bon chemin, mais quand je clique sur DELETE, il ne supprime toujours pas le fichier du dossier upload/1.jpg :/

    Dans le unlink, si je remplace $file par le nom directement de l'image, donc 1.jpg, il me supprime bien l'image par contre....

  4. #4
    Responsable Systèmes


    Homme Profil pro
    Gestion de parcs informatique
    Inscrit en
    Août 2011
    Messages
    17 434
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Gestion de parcs informatique
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Août 2011
    Messages : 17 434
    Points : 43 065
    Points
    43 065
    Par défaut
    si je remplace $file par le nom directement de l'image, donc 1.jpg, il me supprime bien l'image par contre....
    Donc ça veut dire que ton chemin est invalide.

    Que vaut juste $file ?
    Ma page sur developpez.com : http://chrtophe.developpez.com/ (avec mes articles)
    Mon article sur le P2V, mon article sur le cloud
    Consultez nos FAQ : Windows, Linux, Virtualisation

  5. #5
    Nouveau membre du Club
    Homme Profil pro
    Développeur Web
    Inscrit en
    Novembre 2017
    Messages
    78
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Aisne (Picardie)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Novembre 2017
    Messages : 78
    Points : 36
    Points
    36
    Par défaut
    Citation Envoyé par chrtophe Voir le message
    Donc ça veut dire que ton chemin est invalide.

    Que vaut juste $file ?


    Si dans DELETE.php je fais un var_dump de $file et un exit() ensuite, il me dis ça au moment de supprimer:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    ( ! ) Notice: Undefined index: userfile in C:\wamp64\www\eric\delete.php on line 7
    Call Stack
    #	Time	Memory	Function	Location
    1	0.0005	241656	{main}( )	...\delete.php:0
     C:\wamp64\www\eric\delete.php:8:null

  6. #6
    Nouveau membre du Club
    Homme Profil pro
    Développeur Web
    Inscrit en
    Novembre 2017
    Messages
    78
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Aisne (Picardie)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Novembre 2017
    Messages : 78
    Points : 36
    Points
    36
    Par défaut
    Pfiou !!! ca y est j'ai trouvé !

    J'ai résolu mon problème en rajoutant une ligne "path" dans ma BDD, ensuite j'ai passé la variable en GET sur ma page DELETE.php, et c'est bon ! il efface bien dans la BDD et dans le fichier... :-)

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 7
    Dernier message: 18/03/2006, 13h16
  2. PHP + lier fichier wav en cliquant sur un bouton
    Par ushiwa.sasuke dans le forum Général JavaScript
    Réponses: 3
    Dernier message: 28/02/2006, 08h12
  3. [PHP-JS] php et fichier
    Par marion782 dans le forum Langage
    Réponses: 8
    Dernier message: 06/12/2005, 00h32
  4. Passer les variables de fichier.php en fichier.php
    Par Furius dans le forum Langage
    Réponses: 4
    Dernier message: 20/11/2005, 22h05
  5. [XML] [PHP] Sauvegarde fichier xml
    Par ribrok dans le forum Bibliothèques et frameworks
    Réponses: 2
    Dernier message: 11/10/2005, 16h58

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