Précédent   Forum des professionnels en informatique > PHP > Outils > Zend > Zend Framework
Zend Framework Forum d'entraide sur la programmation PHP avec Zend Framework. Avant de poster -> FAQ ZF, Cours ZF
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 02/08/2011, 11h47   #1
Membre régulier
 
Inscription : août 2008
Messages : 402
Détails du profil
Informations forums :
Inscription : août 2008
Messages : 402
Points : 77
Points : 77
Par défaut chercher les doublons des noms d'images uplader

Bonjour, a tous

j'aimerais chercher les doublons des noms des fichiers uploader car j'utlise rename() pour renomer les images , si je ne le fait pas et que on a 2 fichier du même nom, zend fera une erreur car il ne trouvera pas le fichier dans le même dossier en question puisqu'il qu'il a été modifier donc n'existe plus.

voic mon multi formulaire on peut uploader 4 fichier , je n'impose pas d'en avoir 4
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
 
                //==================upload image zom===========
        $upl_big = new Zend_Form_Element_File('upload_big');
        $upl_big->setLabel('Telecharger image princpal:')
                ->setDestination('../public/image/big/');
        $upl_big->addValidator('Count', false, array('min'=>0,'max'=>5));
        // Limite à 100K
        $upl_big->addValidator('Size', false, 102400);
        // seulement des JPEG, PNG, et des GIF
        $upl_big->addValidator('Extension', false, 'jpg');
        // définit 3 éléments fichiers identiques
        $upl_big->setMultiFile(4);
        $this->addElement($upl_big ,'upload_big');
je récupère donc mon fichier avec value
Code :
1
2
 
$form->getValue('upload_big');
ici y a déjà un problème
soit on a uploader qu'une seul iamge -> on a $getValue = "mon image.jpg";


soit on n'upload plusieur image -> on a $getValue ="array()"

je suis du traiter ces 2 résulats différement.

j'ai donc implémenter un methode ( public function findDoublon($fd)) dans le controleur de la table qui s'appelle "car" .

donc j'envoie la réponse via le controlleur par
Code :
1
2
 
findDoublon($form->getValue())
voici ma methode
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
 
    public function findDoublon($fd) {
       // var_dump($fd);
           $this->total_img = count($fd) ;
           if($this->total_img == 1)
           {
               echo "impossibe de traiter car ce n'est pas un array";
               echo "récupération du nom de l'image et insertion dans la bdd";
           }
           else
           {
               foreach ($fd as $scan) // je récupère sous forme $getValue('image') sous form d'image
               {
                   $find_double[] = $scan;
               }
 
                for($i=0; $i<3;$i++) //je crée une boucle pour imposer 4 nom de fichier même s'il n'on pas été uplaoder
                {
                    if(isset($find_double[$i+1])  ) //je vérifie si on n'a pas uploader l'image
                    {
                          $temp= $find_double[$i];
                          echo"----". $temp;
                    } 
                      else
                      {
                          $find_double[$i] ='nc.jpg'; //on remplis les infos par nc.jpg si on n'a pas uplaoder
                      }
                  }
 
                  var_dump ($find_double);
        }
    }
ici je detecte bien les doublons et je les renoment, par contre pensez vous que je puisse faire plus obtimiser ?

si oui , pouvez vous juste me dire la façon de faire après je chercherais et testerais votre solution

je vous remercie d'avance pour les réponses
keokaz est déconnecté   Envoyer un message privé Réponse avec citation 01
Vieux 02/08/2011, 18h14   #2
Modérateur
 
Homme Loïc
Développeur Web
Inscription : février 2011
Messages : 678
Détails du profil
Informations personnelles :
Nom : Homme Loïc
Âge : 26
Localisation : France, Hérault (Languedoc Roussillon)

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

Informations forums :
Inscription : février 2011
Messages : 678
Points : 1 041
Points : 1 041
Le plus simple est de gérer en amont et ne pas autoriser les doublons
5h4rk est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 02/08/2011, 19h43   #3
Membre régulier
 
Inscription : août 2008
Messages : 402
Détails du profil
Informations forums :
Inscription : août 2008
Messages : 402
Points : 77
Points : 77
merci de ta réponse

il faut utiliser un filtre c'est ça?

ou faut t'il vérifier les doublons ? dans form.php ou le controlleur ?

ou bien, on ne peut pas vérifier ce que l'on choisi comme nom de fichier, il faut une fois qu'on a cliquer sur le bouton "envoyer" récuper le getrequest() , vérfier s'il n'y a pas de doublon, s'il y en a on recommence la saisie ?
keokaz est déconnecté   Envoyer un message privé Réponse avec citation 01
Vieux 02/08/2011, 20h02   #4
Modérateur
 
Homme Loïc
Développeur Web
Inscription : février 2011
Messages : 678
Détails du profil
Informations personnelles :
Nom : Homme Loïc
Âge : 26
Localisation : France, Hérault (Languedoc Roussillon)

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

Informations forums :
Inscription : février 2011
Messages : 678
Points : 1 041
Points : 1 041
Tu créer un validateur qui vérifie ton champs correspondant à ton input de type file.

Aprés tu as plusieurs moyens, je pense qu'il faudrait plus modifier le nom de l'image plutot que d'interdire son upload.

Par contre je pense que tu ne cherche pas assez au vue de tes question, donc ma question est la suivante :
Est ce que tu connais bien le PHP ?
5h4rk est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 02/08/2011, 20h36   #5
Membre régulier
 
Inscription : août 2008
Messages : 402
Détails du profil
Informations forums :
Inscription : août 2008
Messages : 402
Points : 77
Points : 77
je pense connaitre suffisant le php pour partiquer zend framework, avant cela faisait 2 mois que j'étais sur symonfy.

enfin j'ai déjà des connaissance en programmation objet, mais je préparais 2 UV avec JAVA.

Code :
1
2
 
Aprés tu as plusieurs moyens, je pense qu'il faudrait plus modifier le nom de l'image plutot que d'interdire son upload.
je crois que j'ai fait un petite pas j'ai trouver comment changer le nom du fichier de l'image avant sa validation

Code :
1
2
3
4
 
      $upl_show = new Zend_Form_Element_File('upload_show');
//...
        echo "<h1>".$upl_show->getFileName()."</h1>";
en faisant ce script dans mon fichier "from", j'ai vu apparaître en gros le lien et le noms du fichier que j'ai télécharger.

Code :
1
2
 
./public/image/show\2.jpg
je pense qu'avec une regex, je vais extraire le nom du fichier pour le comparer et pour trouver un double

après j'ai aussi trouver la bonne method pour changer le nom du fichier

Code :
1
2
 
        $upl_show->addFilter('Rename','couou');
en faisant un
Code :
1
2
 
var_dump($form->getValue('upload')
j'ai que j'avais bien changer le nom du fichier

maintenant je pense qu'il me reste de tester si le nom du fichier est vide (donc pas uploader) , si elle est vide je lui met d'office "nc.jpg", et je pense que j'aurai un autre difficulté c'est chercher s'il y a un doublon.

Mainentant je peux modifier un fichier seulement pour 1 seul élément
mais c'est plus délicat quand on demande de faire plusieurs upload en même temps

Code :
1
2
 
        $upl_big->setMultiFile(4);
Ces méthode sont vaiment simple, mais je ne les trouvais pas, ca faisait 3 jours que j'écummais la doc, est trop dense pour chercher rapidement ce que l'on veut.
keokaz est déconnecté   Envoyer un message privé Réponse avec citation 01
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 10h15.


 
 
 
 
Partenaires

Hébergement Web