Précédent   Forum des professionnels en informatique > PHP > PHP & SGBD
PHP & SGBD Forum d'entraide sur les SGBD avec PHP. Avant de poster : FAQ BDD, toutes les FAQ PHP, cours BDD et sources BDD
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 13/04/2011, 20h42   #1
Invité régulier
 
Homme
Inscription : avril 2011
Messages : 46
Détails du profil
Informations personnelles :
Sexe : Homme

Informations forums :
Inscription : avril 2011
Messages : 46
Points : 9
Points : 9
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 :
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
baddevil est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 14/04/2011, 09h55   #2
Membre Expert
 
Inscription : avril 2006
Messages : 1 338
Détails du profil
Informations personnelles :
Localisation : France, Haute Garonne (Midi Pyrénées)

Informations forums :
Inscription : avril 2006
Messages : 1 338
Points : 1 315
Points : 1 315
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.
__________________
Stay in Bed .. Save Energy
boo64 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 14/04/2011, 11h07   #3
Invité régulier
 
Homme
Inscription : avril 2011
Messages : 46
Détails du profil
Informations personnelles :
Sexe : Homme

Informations forums :
Inscription : avril 2011
Messages : 46
Points : 9
Points : 9
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 :
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
                  }
baddevil est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 14/04/2011, 11h28   #4
Membre Expert
 
Inscription : avril 2006
Messages : 1 338
Détails du profil
Informations personnelles :
Localisation : France, Haute Garonne (Midi Pyrénées)

Informations forums :
Inscription : avril 2006
Messages : 1 338
Points : 1 315
Points : 1 315
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 !

Citation:
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
__________________
Stay in Bed .. Save Energy
boo64 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 14/04/2011, 11h54   #5
Invité régulier
 
Homme
Inscription : avril 2011
Messages : 46
Détails du profil
Informations personnelles :
Sexe : Homme

Informations forums :
Inscription : avril 2011
Messages : 46
Points : 9
Points : 9
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
Citation:
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?
baddevil est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 14/04/2011, 12h04   #6
Membre Expert
 
Inscription : avril 2006
Messages : 1 338
Détails du profil
Informations personnelles :
Localisation : France, Haute Garonne (Midi Pyrénées)

Informations forums :
Inscription : avril 2006
Messages : 1 338
Points : 1 315
Points : 1 315
alors pr optimiser ta base peux tu me montrer les autres tables que tu as?

pour le test :
Code :
1
2
3
if ($resultat['photo1'] != 'nophoto.jpeg'){
$ul1 = unlink( "images/".$resultat['photo1'] );
}
__________________
Stay in Bed .. Save Energy
boo64 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 14/04/2011, 14h07   #7
Invité régulier
 
Homme
Inscription : avril 2011
Messages : 46
Détails du profil
Informations personnelles :
Sexe : Homme

Informations forums :
Inscription : avril 2011
Messages : 46
Points : 9
Points : 9
oh ben ça va être vite fait j'en ai 2 en tout la deuxième c'est

AT_marque et dedans j'ai mis id_marque et Libellemarque
baddevil est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 14/04/2011, 15h32   #8
Membre Expert
 
Inscription : avril 2006
Messages : 1 338
Détails du profil
Informations personnelles :
Localisation : France, Haute Garonne (Midi Pyrénées)

Informations forums :
Inscription : avril 2006
Messages : 1 338
Points : 1 315
Points : 1 315
et j'imagine donc que c'est pour des annonces de voiture?
__________________
Stay in Bed .. Save Energy
boo64 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 14/04/2011, 16h02   #9
Invité régulier
 
Homme
Inscription : avril 2011
Messages : 46
Détails du profil
Informations personnelles :
Sexe : Homme

Informations forums :
Inscription : avril 2011
Messages : 46
Points : 9
Points : 9
tout a fait

en faite c est un site vitrine y a pas de vente dessus
donc je crée des pages admin pour inserer ou supprimer des annonces
c est pas le grand mega site
baddevil est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 15/04/2011, 09h05   #10
Membre Expert
 
Inscription : avril 2006
Messages : 1 338
Détails du profil
Informations personnelles :
Localisation : France, Haute Garonne (Midi Pyrénées)

Informations forums :
Inscription : avril 2006
Messages : 1 338
Points : 1 315
Points : 1 315
Du coup je découperai tout ça comme ça:

Citation:
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.
__________________
Stay in Bed .. Save Energy
boo64 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 15/04/2011, 09h20   #11
Invité régulier
 
Homme
Inscription : avril 2011
Messages : 46
Détails du profil
Informations personnelles :
Sexe : Homme

Informations forums :
Inscription : avril 2011
Messages : 46
Points : 9
Points : 9
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

baddevil est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 15/04/2011, 15h21   #12
Invité régulier
 
Homme
Inscription : avril 2011
Messages : 46
Détails du profil
Informations personnelles :
Sexe : Homme

Informations forums :
Inscription : avril 2011
Messages : 46
Points : 9
Points : 9
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
baddevil est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 15/04/2011, 16h03   #13
Membre Expert
 
Inscription : avril 2006
Messages : 1 338
Détails du profil
Informations personnelles :
Localisation : France, Haute Garonne (Midi Pyrénées)

Informations forums :
Inscription : avril 2006
Messages : 1 338
Points : 1 315
Points : 1 315
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:
Citation:
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..
__________________
Stay in Bed .. Save Energy
boo64 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 15/04/2011, 16h25   #14
Invité régulier
 
Homme
Inscription : avril 2011
Messages : 46
Détails du profil
Informations personnelles :
Sexe : Homme

Informations forums :
Inscription : avril 2011
Messages : 46
Points : 9
Points : 9
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
baddevil est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 18/04/2011, 11h21   #15
Invité régulier
 
Homme
Inscription : avril 2011
Messages : 46
Détails du profil
Informations personnelles :
Sexe : Homme

Informations forums :
Inscription : avril 2011
Messages : 46
Points : 9
Points : 9
bonjour j'en ai un autre qui pointe son nez

j'ai fais un formulaire demodif pour chacune de mes photos
cependant dans mon form j avais oublier de mettre enctype="multipart/form-data"
donc il me faisait bien mon update dans ma base en mettant le nom du fichier mais par contre ne le téléchargeait pas
mais maintenant que je l'ai mis il me fait le contraire il télécharge bien le fichier mais ne fait plus rien niveau update (champ vide) récupère plus le nom du fichier??? quelqu’un un aurait il une idée ??

en plus il me met mise a jour bien effectué!!?

form:
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
<form method="post"   enctype="multipart/form-data" name="photo1"  action="updateannonce.php">
 
   <input type="hidden" name="action" value="modif_photo1">
	 <input type="hidden" name="IDannonce" value="[var.IDannonce;noerr]">
 
 
         <table border="1">
 
           <tr>
            <td>[var.photo1;noerr]</td>
            <td><img  width="150px" alt="image" src="images/[var.photo1;noerr]"/></a></td>
          </tr>
          <tr>
            <td><input type="file" name="photo1" id="photo1"  /><br></td>
            <!--<input type="hidden" name="MAX_FILE_SIZE" value="1048576" />-->
          </tr>
        </table>
        <p> <input type="submit" name="validate" value="Valider" style="width:130px" /></p>
</form>
php
Code :
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
 case "modif_photo1":
 
                $destination = "images/".$_FILES['photo1']['name'] ;
    	          $resultat = move_uploaded_file($_FILES['photo1']['tmp_name'] , $destination);
    	          echo($resultat);
    	          if ($resultat == FALSE)
          {
              echo("echec");
          }
          else
          {
            echo("transfert reussi verifier dossier");
          }
 
        $requete = "UPDATE AT_Annonces SET photo1='".$_POST['photo1']."'
        WHERE IDannonce='".$_POST['IDannonce']."'";
         $resultat = mysql_query($requete);
 
                       echo($requete);
 
 
                      //test si maj effectuée
                    if(mysql_affected_rows() == -1)
                    {
                      echo("mise a jour non effectuée");
                    }
                    else
                    {
                      echo(" votre mise a jour a bient été effectué ");
                      echo ("<a href=\"Paffiche.php?action=ModifAnnonce\">retour au annonces pour modifier</a>");          
                    }
        break;
baddevil est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 18/04/2011, 11h39   #16
Membre Expert
 
Inscription : avril 2006
Messages : 1 338
Détails du profil
Informations personnelles :
Localisation : France, Haute Garonne (Midi Pyrénées)

Informations forums :
Inscription : avril 2006
Messages : 1 338
Points : 1 315
Points : 1 315
Regarde pour commencer dans ta base si les noms de fichiers sont correctement enregistrés
__________________
Stay in Bed .. Save Energy
boo64 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 18/04/2011, 11h51   #17
Invité régulier
 
Homme
Inscription : avril 2011
Messages : 46
Détails du profil
Informations personnelles :
Sexe : Homme

Informations forums :
Inscription : avril 2011
Messages : 46
Points : 9
Points : 9
salut boo

ben nom justement il me l enregistre seulement dans la base si je met pas l' enctype!!! sans ça oui la base ce met a jour mais malheureusement j'upload plus rien

si je laisse l'enctype j'ai fais un echo de ma requete et il recupere pas le nom dans mon champ input

regarde mon echo avec l'enctype:
1transfert réussi vérifier dossierUPDATE AT_Annonces SET photo1='' WHERE IDannonce='132' votre mise a jour a bien été effectué retour au annonces pour modifier

mon set photo1 est vide !!

et mon echo sans l'enctype
echecUPDATE AT_Annonces SET photo1='audi.jpg' WHERE IDannonce='132' votre mise a jour a bien été effectué retour au annonces pour modifier

j'ai un échec de l'upload forcement mais prend bien le nom du fichier
baddevil est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 18/04/2011, 12h01   #18
Invité régulier
 
Homme
Inscription : avril 2011
Messages : 46
Détails du profil
Informations personnelles :
Sexe : Homme

Informations forums :
Inscription : avril 2011
Messages : 46
Points : 9
Points : 9
en faite mon update fonctionne car il me met un champ vide a la place de l'ancien nom dans la base
c'est juste qu'il ne récupère pas le nom du fichier dans mon input
baddevil est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 18/04/2011, 17h29   #19
Membre Expert
 
Inscription : avril 2006
Messages : 1 338
Détails du profil
Informations personnelles :
Localisation : France, Haute Garonne (Midi Pyrénées)

Informations forums :
Inscription : avril 2006
Messages : 1 338
Points : 1 315
Points : 1 315
pas du tout le tps de regarder dsl j'ai une livraison urgente à finir pr vendredi
essaye de checker les erreur lors de l'upload :
http://www.php.net/manual/fr/feature...oad.errors.php
__________________
Stay in Bed .. Save Energy
boo64 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 18/04/2011, 18h02   #20
Invité régulier
 
Homme
Inscription : avril 2011
Messages : 46
Détails du profil
Informations personnelles :
Sexe : Homme

Informations forums :
Inscription : avril 2011
Messages : 46
Points : 9
Points : 9
j'ai pas vraiment de soucis au niveau de l'upload c'est ma variable qui n'est plus récupéré par ce que justement j'upload

ma requete update perd l'info du nom de fichier si je met l'enctype

ce que je pige pas c'est que mon formulaire d'insertion marche nickel

mais sur un update ça marche plus alors que mon code est le même a part ma requete
baddevil est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 00h57.


 
 
 
 
Partenaires

Hébergement Web