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 :

Suppression de plusieurs photos


Sujet :

PHP & Base de données

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Avril 2011
    Messages
    99
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haut Rhin (Alsace)

    Informations professionnelles :
    Activité : Technicien maintenance
    Secteur : Industrie Pharmaceutique

    Informations forums :
    Inscription : Avril 2011
    Messages : 99
    Par défaut Suppression de plusieurs photos
    bonjour je suis nouveau et débutant en php
    je souhaiterai une aide pour supprimer mes photos sur mon ftp lier a ma base

    j'ai mon code qui fonctionne pour la photo1 mais je sais pas comment on fait pour les autres
    mon select est bon mais dans la variable resultat je ne sais comment mi prendre

    en faite je crée une page pour administrer des annonces de voitures
    la j'ai réussi que si il veut supprimer une annonce ça supprime de la base mais il faut supprimer les photos qui sont lier sur le serveur ftp
    sinon a force d ajouter des annonces le serveur va être blindé
    alors la j'ai réussi pour une photo mais il faudrait que ça supprime les autres

    donc j'en suis pas très loin mais la je sais pas comment gérer les autres

    la page est un tableau avec les annonces et a droite un checkbox ou on sélectionne celle que l on veux supprimer

    j'ai penser qu'on pouvais concaténer les photos dans la variable resultat

    est ce possible?

    voici mon code

    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
    case "sup_annonces" : { 
     
                        $requete = 'SELECT photo1,photo2,photo3,photo4,photo5 FROM AT_Annonces WHERE IDannonce IN ('.implode(",",($_GET['cocher'])).')';
                    $reponse = mysql_query($requete);
            while ($resultat = mysql_fetch_array($reponse))
                $cheminImage = "images/".$resultat['photo1'] ;
     
     
                          unlink($cheminImage);
            }
     
            //suppression de l'entrée dans la BDD
            $requete = 'DELETE FROM AT_Annonces WHERE IDannonce IN ('.implode(",",($_GET['cocher'])).')';
                   if (mysql_query($requete)) {
                       } 
     
            //header("Location:Paffiche.php?action=suppr_annonces");
     
            break; //fin du case
        }
    en vous remerciant d'avance

  2. #2
    Membre Expert
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    1 349
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Avril 2006
    Messages : 1 349
    Par défaut
    a ta place je mettrai en place un script de nuit qui supprime de ton ftp et de ta base les annonces supprimées dans la journée.. il te suffit de rajouter une colonne suppression ds ta base avec un tinyint à 0 ou 1 ainsi tu positionne le flag à 1si l'annonce est supprimée et donc tu ne l'affiche plus sur ton site.

    et de nuit tu n'as juste qu'à récupérer les annonces les supprimées de la base et de ton ftp.

  3. #3
    Membre confirmé
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Avril 2011
    Messages
    99
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haut Rhin (Alsace)

    Informations professionnelles :
    Activité : Technicien maintenance
    Secteur : Industrie Pharmaceutique

    Informations forums :
    Inscription : Avril 2011
    Messages : 99
    Par défaut
    merci pour ta réponse mais
    pourquoi les supprimer la nuit au lieu de immédiatement?
    la démarche est intéressante mais faudra quand même que je supprime le tout

    bon en faite la j'ai trouve le moyen de le faire cependant mon soucis est autre maintenant

    j'ai un formulaire de dépôt qui fait que si y a pas de photo il met nofoto.jpg dans le nom du champ

    cependant mon code la supprime et du coup toute les autres annonce qui en ont pas ben le nofoto n y plus

    comment tester si nofoto apparaît dans le nom?

    voici mon code désormais
    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
     
      case "sup_annonces" :
                      {
                             //ici cocher est un array => il faut savoir qui a été coché
                        $requete = 'SELECT IDannonce,photo1,photo2,photo3,photo4,photo5 FROM AT_Annonces WHERE IDannonce IN ('.implode(",",($_GET['cocher'])).')';
                        echo '<br>'.$requete; //nous donne la requete et l id de l annonce
                        $reponse = mysql_query($requete);
     
                       while ($resultat = mysql_fetch_array($reponse))
                                {
                                        $ul1 = unlink( "images/".$resultat['photo1'] );
                                        $ul2 = unlink( "images/".$resultat['photo2'] );
                                        $ul3 = unlink( "images/".$resultat['photo3'] );
                                        $ul4 = unlink( "images/".$resultat['photo4'] );
                                        $ul5 = unlink( "images/".$resultat['photo5'] );
     
                                }
                                //suppression de l'entrée dans la BDD
     
     
                                   $requete = 'DELETE FROM AT_Annonces WHERE IDannonce IN ('.implode(",",($_GET['cocher'])).')';
                                  echo '<br>'.$requete; //donne nous ce qui est affiché
                                  if (mysql_query($requete))
     
                                        {
                                                echo '<br>Image "'.$cheminImage.'" supprim&eacute;e dans la base ET sur le serveur';
                                        }
     
     
                                  //header("Location:Paffiche.php?action=suppr_annonces");
     
                        break; //fin du case
                      }

  4. #4
    Membre Expert
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    1 349
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Avril 2006
    Messages : 1 349
    Par défaut
    soit tu fait un test sur chaque champ photo

    soit tu peux feinter en ne changeant les droits d'acces de ton nophoto.jpeg pour qu'il ne soit pas supprimable.

    Mais la vrai solution serait de revoir ta base:
    • une table photo ou chaque photo a un id et l'id de l'annonce au quelle elle appartient
    • une table annonce ou tu n'as plus les champs photos


    et ainsi tu a juste à sélectionner dans la table photo toute les photos appartenant à l'annonce en fonction de l'id et tu n'as plsu ton probleme de nophoto.

    de plus tu n'as pas à rajouter un champ photo si tu choisis d'autorisé plus de photo pour une annonce tu n'as pas de champ vide ds ta table annonce si il n'y a qu'une seule photo etc..

    en gros tu gagneras en performance en maintenance et en facilité pour coder derrière !

    merci pour ta réponse mais
    pourquoi les supprimer la nuit au lieu de immédiatement?
    ainsi tu soulage ton serveur en journée pour l'utilisateur ça sera plus rapide quand il supprimera une annonce et tout les traitements lourds tu les effectue de nuit: ainsi tu peux imaginer un script qui tourne une fois par semaine et qui supprime toutes les photos plus utilisées

  5. #5
    Membre confirmé
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Avril 2011
    Messages
    99
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haut Rhin (Alsace)

    Informations professionnelles :
    Activité : Technicien maintenance
    Secteur : Industrie Pharmaceutique

    Informations forums :
    Inscription : Avril 2011
    Messages : 99
    Par défaut
    merci pour tes explications

    cependant si je lui donne des droits restreint je pense que j'aurai un warning sur le unlink access denied non?

    je suis pas un expert en bdd j'ai crée un truk tout simple en fonction de mes compétences et mes faibles connaissances

    j'ai une table AT_Annonce et dedans j'ai
    IDannonce
    Datedepot
    Titre
    marque
    prix
    Annee
    style
    couleur
    Km
    detail
    photo1
    photo2
    photo3
    photo4
    photo5

    voila je sais c'est pas formidable mais bon je sais pas trop comment optimiser au mieux ma table

    sinon comment on fait un test sur chaque champ photo?

  6. #6
    Membre Expert
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    1 349
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Avril 2006
    Messages : 1 349
    Par défaut
    alors pr optimiser ta base peux tu me montrer les autres tables que tu as?

    pour le test :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    if ($resultat['photo1'] != 'nophoto.jpeg'){
    $ul1 = unlink( "images/".$resultat['photo1'] );
    }

  7. #7
    Membre Expert
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    1 349
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Avril 2006
    Messages : 1 349
    Par défaut
    Du coup je découperai tout ça comme ça:

    AT_Annonce
    --------------
    IDannonce
    Datedepot
    Titre
    id_voiture

    AT_voiture
    -------------
    id_voiture
    id_modele
    prix
    couleur
    km
    detail

    AT_photo_voiture
    ---------------------
    id_voiture
    id_photo

    AT_photo
    ------------
    id_photo
    nom_photo
    path_photo

    AT_modele
    --------------
    id_modele
    Libellemodele
    style
    id_marque

    AT_marque
    --------------
    id_marque
    Libellemarque
    à ajuster mais en gros l'idée c'est de respecter le but d'une bdd c'est à dire classer, trier et organiser les données.

  8. #8
    Membre confirmé
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Avril 2011
    Messages
    99
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haut Rhin (Alsace)

    Informations professionnelles :
    Activité : Technicien maintenance
    Secteur : Industrie Pharmaceutique

    Informations forums :
    Inscription : Avril 2011
    Messages : 99
    Par défaut
    houla ça me donne le tournis lol

    tu la décortiqué y a pas a dire, je me la met sur un fichier texte pour l idée de la prochaine base car la faudrait que je revois tout mon code mais y a des choses que je pige pas trop comme pourquoi détaillé autant pour mon besoin actuel
    bon le problème c est que la ou je fais ma formation on a pas bien vu le sujet je dirai survoler alors j'ai du mal sur le principe

    mais merci c'est super sympa de prendre le temps de m'éclaircir la dessus


  9. #9
    Membre confirmé
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Avril 2011
    Messages
    99
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haut Rhin (Alsace)

    Informations professionnelles :
    Activité : Technicien maintenance
    Secteur : Industrie Pharmaceutique

    Informations forums :
    Inscription : Avril 2011
    Messages : 99
    Par défaut
    bonjour

    j'ai une toute autre question concernant mes photos

    je suis bloquer sur le problème de mon formulaire de modification de l'annonce

    comment on fait sur un input type file qu'il garde la valeur de ma variable ?

    pour être plus précis j'ai fait mon formulaire pour qu'il affiche ce qui a déjà été inscrit lors du dépôt

    alors sur du input text no soucy

    mais dans le champ du type file a coté de parcourir, j'ai lu que l'on ne pouvait pas par des raisons de sécurité mais quelqu'un a t il une astuce pour contourner le problème

    car la ça efface systématiquement les autres anciennes valeur s'il y a rien dans mon input file

    merci d'avance

  10. #10
    Membre Expert
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    1 349
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Avril 2006
    Messages : 1 349
    Par défaut
    Citation Envoyé par baddevil Voir le message

    car la ca efface systématiquement les autres anciennes valeur si y a rien dans mon input file

    merci d avance
    le plus propre pr moi et de reafficher la photo que l'utilisateur à enregistrer.
    et si il veut la modifier faire un petit bouton à coté de chaque photo pr en enregistrer une nouvelle

    Sinon pr revenir à la base de données:
    comme pourquoi détailler autant pour mon besoin actuel
    plusieurs raison : déjà ta base en l'état n'est pas facilement évolutive imaginons du jour au lendemain on te demande de rajouter une photo de plus tu va devoir revoir tout ton code pr prévoir une photo de plus puisque tu as des champs du genre photo 1, ...,photox. Donc dans chaque requete chaque affichage tu vas devoir modifier quelque chose.

    En structurant plus ta données tu n'as rien à faire puisque tu n'as pas un nombre limité de photo pr chaque annonce.

    Autre exemple: dans ta solution c'est l'utilisateur qui rentre la marque j'imagine ainsi cela peux être nimporte qu'elle marque je peux marque bidule tartempion.. chaque marque n'est pas unique dans ta base alors que ds le modèle que je te donne chaque marque à un id si tu veux rajouter une marque rien à changer si tu veux savori le nombre d'annonce pr une marque c'est imediat etc..

  11. #11
    Membre confirmé
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Avril 2011
    Messages
    99
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haut Rhin (Alsace)

    Informations professionnelles :
    Activité : Technicien maintenance
    Secteur : Industrie Pharmaceutique

    Informations forums :
    Inscription : Avril 2011
    Messages : 99
    Par défaut
    merci boo64 pour toute tes explications

    j'avais mis justement la photo en prévisualisation et la
    j'ai effectivement déjà pris la solution de mettre un bouton pour chaque photo
    je suis en plein de dedans

    je comprend pour la base effectivement c'est bien clair

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

Discussions similaires

  1. Suppression de plusieurs enregistrements à la fois
    Par vinzom dans le forum Access
    Réponses: 3
    Dernier message: 04/07/2006, 00h09
  2. Requête suppression de plusieurs lignes
    Par rane dans le forum Requêtes
    Réponses: 20
    Dernier message: 29/06/2006, 20h22
  3. [Hibernate2]suppression de plusieurs enreg de base de donnée
    Par michaelbob dans le forum Hibernate
    Réponses: 2
    Dernier message: 15/05/2006, 16h48
  4. Pour Caféine - gestion de plusieurs photos
    Par le géologue dans le forum Access
    Réponses: 1
    Dernier message: 16/03/2006, 19h08
  5. suppression sur plusieurs tables
    Par Jean-Matt dans le forum Langage SQL
    Réponses: 2
    Dernier message: 16/06/2005, 11h46

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