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 :

Supprimer un enregistrement+fichier photo associé [MySQL]


Sujet :

PHP & Base de données

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre très actif Avatar de harlock59
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Mars 2005
    Messages
    262
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Technicien maintenance
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Mars 2005
    Messages : 262
    Par défaut Supprimer un enregistrement+fichier photo associé
    bonjour,
    je voudrais faire un formulaire pour supprimer une entrée dans une table mysql, et aussi supprimer le fichier associé à la colonne "url_photo" contenu dans cette meme table:
    voici mon code (la page s'auto-appelle)

    ce que je n'arrive pas à faire, c'est associer à mon champ input type checkbox l'id d'un enregistrement de la table location, et ensuite d'envoyer cet id pour le supprimer le fichier photo+l'enregistrement contenant cette url_photo (en fait, cet url_photo ne contient que le nom du fichier photo, pas le chemin complet) via php et mysql.
    merci.

    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
     
    Pour supprimer une location, il faut cocher la case à gauche du produit, et valider en cliquant sur le bouton supprimer tout en bas de la page.
     
     
    <?
    if ($var==true)
    {
     $sql=mysql_query("SELECT url_photo FROM location WHERE id=$id");
     $url_photo=mysql_result($sql);
     unlink("../images/photos_location/".$url_photo);
     mysql_query("DELETE FROM location * WHERE id=$id");
    }
     
    $var=false;
     
    include ("connect.php");
     
     
    $sql=mysql_query("SELECT * from location");
     
    ?>
    <form action="suppr_loc.php" method="POST">
    <table width=100%>
    <tr>
    <td>Supprimer</td>
    <td>titre de l'annonce</td>
    <td>type et prix</td>
    <td>lignes de texte</td>
    <td>photo</td>
    <?
    while ($voir=mysql_fetch_array($sql))
    { echo "<tr>";
      echo "<td>";
    c'est ici:
    echo "<input type=checkbox name='".$voir['id']."' value='".$voir['id']."'>";
    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
     
      echo "</td>";
      echo "<td>";
      echo $voir['titre'];
      echo "</td>";
      echo "<td>";
      echo $voir['type'];
      echo "<br>";
      echo $voir['prix'];
      echo "</td>";
      echo "<td>";
      for ($i=1;$i<=5;$i++)
        {
           echo $voir['ligne'.$i];
           echo "<br>";
        }
      echo "</td>";
      echo "<td>";
      echo "<img src='http://www.agentimmobiliersilvaindamiani.com/images/photos_location/".$voir['url_photo']."' width=142 height=106>";
      echo "</td>";
      echo "</tr>";
    }
    ?>
    </table>
    <input type="submit" value="supprimer">
    </form>

  2. #2
    Membre éprouvé
    Avatar de Anduriel
    Homme Profil pro
    Ingénieur intégration
    Inscrit en
    Février 2004
    Messages
    2 290
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur intégration

    Informations forums :
    Inscription : Février 2004
    Messages : 2 290
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    echo "<input type='checkbox' name='delete[]' value='".$voir['id']."'>";
    Avec comme nom delete[], tu auras un tableau et tu pourra supprimer toutes les images selectionnées:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    // formulaire posté
    foreach($_POST['delete'] As $id) {
       if (!empty($id)) {
          // on supprime l'image avec l'id $id
       }
    }
    C'est quelque chose comme ça.

  3. #3
    Expert confirmé
    Avatar de siddh
    Inscrit en
    Novembre 2005
    Messages
    3 868
    Détails du profil
    Informations personnelles :
    Âge : 49

    Informations forums :
    Inscription : Novembre 2005
    Messages : 3 868
    Par défaut
    met le dans le value d un input hidden et ensuite tu le recupère avec $_POST["name du hidden"]

  4. #4
    Membre très actif Avatar de harlock59
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Mars 2005
    Messages
    262
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Technicien maintenance
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Mars 2005
    Messages : 262
    Par défaut
    Citation Envoyé par siddh
    met le dans le value d un input hidden et ensuite tu le recupère avec $_POST["name du hidden"]
    oui, mais le truc, c'est qu'il ne faut supprimer un enregistrement que si la case checkbox est cochée (et que le bouton submit est appuyé), donc avec un input hidden je risque d'effacer tous les enregistrements, non ?

    (idem pour anduriel)

  5. #5
    Expert confirmé
    Avatar de siddh
    Inscrit en
    Novembre 2005
    Messages
    3 868
    Détails du profil
    Informations personnelles :
    Âge : 49

    Informations forums :
    Inscription : Novembre 2005
    Messages : 3 868
    Par défaut
    autant pour moi,
    avec la solution d'Anduriel c'est bon car le tableau $_POST["delete"] ne contiendra que les id selectionnés

  6. #6
    Membre très actif Avatar de harlock59
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Mars 2005
    Messages
    262
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Technicien maintenance
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Mars 2005
    Messages : 262
    Par défaut
    ok, je vais tester, merci.
    mais "delete", c'est une fonction php ?

  7. #7
    Membre très actif Avatar de harlock59
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Mars 2005
    Messages
    262
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Technicien maintenance
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Mars 2005
    Messages : 262
    Par défaut
    Citation Envoyé par Anduriel
    Avec comme nom delete[], tu auras un tableau et tu pourra supprimer toutes les images selectionnées:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    // formulaire posté
    foreach($_POST['delete'] As $id) {
       if (!empty($id)) {
          // on supprime l'image avec l'id $id
       }
    }
    C'est quelque chose comme ça.
    donc entre les { et } je n'ai plus qu'a mettre unlink(chemin_de_l_image_recupere_par_id), et la requete qui supprime l'enregistrement ayant comme id: delete[] ?

  8. #8
    Membre très actif Avatar de harlock59
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Mars 2005
    Messages
    262
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Technicien maintenance
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Mars 2005
    Messages : 262
    Par défaut
    comment tester si le forumiare a été soumis ou pas ?
    (quelle est le nom de la variable ?)
    est-ce:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    <input type="submit" name="validé" value="envoyer">
    if ($_POST['validé']==envoyer)
    {
    }
    ?
    merci

  9. #9
    Expert confirmé
    Avatar de siddh
    Inscrit en
    Novembre 2005
    Messages
    3 868
    Détails du profil
    Informations personnelles :
    Âge : 49

    Informations forums :
    Inscription : Novembre 2005
    Messages : 3 868
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    if(isset($_POST["valide"]))
    je te conseille d'éviter les accents dans les names.

  10. #10
    Membre très actif Avatar de harlock59
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Mars 2005
    Messages
    262
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Technicien maintenance
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Mars 2005
    Messages : 262
    Par défaut
    Que pensez-vous de çà :
    ce qui m'embete, c'est ce qui est en rouge
    (j'ai volontairement isolé les parties qui me semblent fausses)

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    Pour supprimer une location, il faut cocher la case &agrave; gauche du produit, et valider en cliquant sur le bouton supprimer tout en bas de la page.
     
     
    <?
    if ($_POST['validé']=="supprimer")
    {
     $sql=mysql_query("SELECT url_photo FROM location WHERE id=
    $_POST['id']

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    ") or die (mysql_error));
     $url_photo=mysql_result($sql);
     unlink("../images/photos_location/".$url_photo);
     mysql_query("DELETE * FROM location WHERE id=
    $_POST['id']
    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
     
    ");
    }
     
    $var=false;
     
    include ("connect.php");
     
     
    $sql=mysql_query("SELECT * from location");
     
    ?>
    <form action="suppr_loc.php" method="POST">
    <table width=100% border=1>
    <tr>
    <td>Supprimer</td>
    <td>titre de l'annonce</td>
    <td>type et prix</td>
    <td>lignes de texte</td>
    <td>photo</td>
    <?
    while ($voir=mysql_fetch_array($sql))
    { echo "<tr>";
      echo "<td>";
      //echo "<input type='checkbox' name='delete[]' value='".$voir['id']."'>";
      echo "<input type='checkbox' name='delete[]' value='".$voir['id']."'>";
      echo "</td>";
      echo "<td>";
      echo $voir['titre'];
      echo "</td>";
      echo "<td>";
      echo $voir['type'];
      echo "<br>";
      echo $voir['prix'];
      echo "</td>";
      echo "<td>";
      for ($i=1;$i<=5;$i++)
        {
           echo $voir['ligne'.$i];
           echo "<br>";
        }
      echo "</td>";
      echo "<td>";
      echo "<img src='http://www.agentimmobiliersilvaindamiani.com/images/photos_location/".$voir['url_photo']."' width=142 height=106>";
      echo "</td>";
      echo "</tr>";
    }
    ?>
    </table>
    <input type="submit" name="validé" value="supprimer">
    </form>

  11. #11
    Expert confirmé
    Avatar de siddh
    Inscrit en
    Novembre 2005
    Messages
    3 868
    Détails du profil
    Informations personnelles :
    Âge : 49

    Informations forums :
    Inscription : Novembre 2005
    Messages : 3 868
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    if (isset($_POST['validé']))
    {
    $ids = implode(",",$_POST['delete']);
     $sql=mysql_query("SELECT id,url_photo FROM location WHERE id IN ($ids)") or die (mysql_error());
     
    while($ligne = mysql_fetch_assoc($sql)){
     unlink("../images/photos_location/".$ligne["url_photo"]);
     mysql_query("DELETE * FROM location WHERE id=".$ligne['id']);
    }
    }
    bon y a peut etre des erreurs de syntaxe car je l'ai fais ici direct

    EDIT
    je viens d'en corriger

  12. #12
    Membre très actif Avatar de harlock59
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Mars 2005
    Messages
    262
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Technicien maintenance
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Mars 2005
    Messages : 262
    Par défaut
    merci bcp,
    le seul dernier probleme est a cause d'un unlink:
    unlink("../images/photos_location/".$ligne['url_photo']);
    le message d'erreur dit que ../images/photos_location/ est un répertoire (autrement dit, $ligne['url_photo'] n'est pas pris en compte à cause des " ".
    j'ai posté un autre thread avec une demande sur la syntaxe adéquate.

  13. #13
    Expert confirmé
    Avatar de siddh
    Inscrit en
    Novembre 2005
    Messages
    3 868
    Détails du profil
    Informations personnelles :
    Âge : 49

    Informations forums :
    Inscription : Novembre 2005
    Messages : 3 868
    Par défaut
    le champ de ta table s'appelle bien url_photo ?

  14. #14
    Membre très actif Avatar de harlock59
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Mars 2005
    Messages
    262
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Technicien maintenance
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Mars 2005
    Messages : 262
    Par défaut
    je vais verifier

  15. #15
    Membre très actif Avatar de harlock59
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Mars 2005
    Messages
    262
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Technicien maintenance
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Mars 2005
    Messages : 262
    Par défaut
    oui, c'est bien ça

  16. #16
    Membre très actif Avatar de harlock59
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Mars 2005
    Messages
    262
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Technicien maintenance
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Mars 2005
    Messages : 262
    Par défaut
    j'ai voulu faire un echo $ligne['url_photo'], mais rien ne s'affiche...

  17. #17
    Membre très actif Avatar de harlock59
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Mars 2005
    Messages
    262
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Technicien maintenance
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Mars 2005
    Messages : 262
    Par défaut
    c'est bon, en fait il faudrait pouvoir supprimer l'enregistrement, meme s'il n'y a pas de fichier photo associé, c'est possible ?
    car là en l'occurence, y'avait rien d'inséré dans la colonne url_photo de l'id en question

  18. #18
    Membre très actif Avatar de harlock59
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Mars 2005
    Messages
    262
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Technicien maintenance
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Mars 2005
    Messages : 262
    Par défaut
    donc le seul truc c'est qu'il faudrait tester l'existence du $ligne['url_photo'] par un isset.

  19. #19
    Expert confirmé
    Avatar de siddh
    Inscrit en
    Novembre 2005
    Messages
    3 868
    Détails du profil
    Informations personnelles :
    Âge : 49

    Informations forums :
    Inscription : Novembre 2005
    Messages : 3 868
    Par défaut
    non, tu met un if file_exists pour le unlink c est tout

  20. #20
    Membre très actif Avatar de harlock59
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Mars 2005
    Messages
    262
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Technicien maintenance
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Mars 2005
    Messages : 262
    Par défaut
    voici mon code actuel, mais il n'efface pas l'enregistrement coché...

    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
     
     
    <?
    include ("connect.php");
     
    if (isset($_POST['valide'])) 
    { 
    $ids = implode(",",$_POST['delete']); 
     $sql=mysql_query("SELECT id,url_photo FROM location WHERE id IN ($ids)") or die (mysql_error()); 
     
    while($ligne = mysql_fetch_assoc($sql)){ 
      if (file_exists($ligne['url_photo']))
       {unlink("../images/photos_location/".$ligne['url_photo']);
         mysql_query("DELETE * FROM location WHERE id=".$ligne['id']);
       }
    else {   
            mysql_query("DELETE * FROM location WHERE id=".$ligne['id']); 
         }
    } 
    }

+ Répondre à la discussion
Cette discussion est résolue.
Page 1 sur 2 12 DernièreDernière

Discussions similaires

  1. [XL-2003] Supprimer totalement un fichier enregistré.
    Par MARGAR dans le forum Macros et VBA Excel
    Réponses: 14
    Dernier message: 07/05/2014, 19h57
  2. Supprimer un enregistrement dans un fichier
    Par Enzymus dans le forum C
    Réponses: 1
    Dernier message: 09/01/2010, 17h35
  3. [AC-2000] photos associer enregistrement
    Par finetos dans le forum Access
    Réponses: 4
    Dernier message: 25/10/2009, 07h57
  4. Réponses: 1
    Dernier message: 28/01/2006, 12h36
  5. [LG]supprimer un enregistrement dans un fichier
    Par Marcus2211 dans le forum Langage
    Réponses: 10
    Dernier message: 17/11/2003, 00h59

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