Précédent   Forum des professionnels en informatique > PHP > Outils > Zend > Zend Framework > Zend_Form
Zend_Form Forum d'entraide pour le composant Zend_Form du Zend Framework (création de formulaires, helpers, AJAX etc.). Avant de poster -> FAQ Zend_Form.
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 31/07/2011, 08h19   #1
Membre régulier
 
Inscription : août 2008
Messages : 402
Détails du profil
Informations forums :
Inscription : août 2008
Messages : 402
Points : 79
Points : 79
Par défaut comment traiter mes images avec form ?

Bonjour a tous, , j'aurai besoin d'un coup de main pour crée mon affichage de présentation de voiture pour la partie saisie d'image, mais je ne sais pas comment m'y prendre car j'ai plusieurs chose qui me bloque.

Pour ce soit plus claire, voici ce que je devrais avoir sur l'écran



j'ai pu trouver comment sauvegarder mes 5 images + quelque infos, tous ce qui est css je me débrouillerais
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
 
 
        $this->addElement('text', 'modele', array(
            'label' => 'Modele de la voiture',
            'required' => true,
        ));
 
        $this->addElement('text', 'nombre de porte', array(
            'label' => 'nombre de porte',
            'required' => true,
        ));
 
        $this->addElement('text', 'couleur', array(
            'label' => 'couleur',
            'required' => true,
        ));
 
 
    $element = new Zend_Form_Element_File('mon_image');
    $element->setLabel('Uploadez une image:')
            ->setDestination('../public/image/temp_image');
    // s'assure qu'il y a un fichier au minimum, 3 au maximum
    $element->addValidator('Count', false, array('min' => 5, 'max' => 5));
    // Limite à 100K
    $element->addValidator('Size', false, 102400);
    // seulement des JPEG, PNG, et des GIF
    $element->addValidator('Extension', false, 'jpg,png,gif');
    // définit 3 éléments fichiers identiques
    $element->setMultiFile(5); //demande de sauvegarder 5 images
 $this->addElement($element, 'mon_image');
on va dire que j'ai 3 type d'images:
Code :
1
2
3
 
1:
    1 image de presentation en vert on a dire qu'elle fait (500x600)px
Code :
1
2
3
 
2 :  
     4 image miniature (50x60)px
Code :
1
2
3
4
 
3: 
     4 grande image qui correspond au 4 miniatures
     ces images on  la voit seulement si on clique sur son thunbail (1024*768)
j'enregistre le nom de ces images dans une base de donnée avec 5 champs pour 5 images

question 1 ?

Code :
1
2
 
comment je peux gérérer la taille des mes images
moi je pensais enregistrer mes 5 images au format le plus grand (1024*768).
par la suite je modifierais dans mon controlller la taille des mes 5 images.


question 2
Code :
1
2
 
comment je gère l'emplacement des mes 5 images ??
je pensais dans mon dossier plublic/image/

crée 4 dossiers
1 : -un dossier "temp_image", c'est un dossier ou je stockerai tous les
images uplaoder
Code :
1
2
 
            ->setDestination('../public/image/temp');

2: -un dossier "moyen", on y met les images de présentation (en vert)
3- un dossier "mini" , on y met les images miniature cliquable(en jaune)
4: un dossier "grand" on n y met les images brut uploader(en rose)

j'aurai voulu ranger directement mes images dans leurs dossier respectif, mais je ne sais vraiment pas comment faire car on appelle q'une seul fois "setdestination()" , il en fraudrait 5 pour mettre les 5 chemin, en plus je pense qu'il faudrai changer le nom des ces images

j'en ai d'autre des questions , mais il faut d'abord traiter celle-ci pour avancer

je vos remercie beaucoup de vos coup de pouce
keokaz est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 31/07/2011, 14h15   #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
Au vue de toutes tes questions, je penses que tu ne lis pas suffisamment la documentation de zend qui est pourtant trés claire et trés fournis.

En suite il existe pas mal de tutoriel pour commencer à apprendre Zend suffit de rechercher sur google d'ailleurs beaucoup sont sur ce site.

En suite, en informatique il faut savoir chercher un peu par ses propres moyens et essayé et ne pas venir au moindre problème sans tenter des solutions, car j'ai remarqué que tu pose des questions avant même d'essayer de ton coté.

Il faut également faire attention car tes questions ne concerne pas vraiment Zend mais des méthodes de développement de base.

Sinon stockes tu tes tailles d'images en BDD
5h4rk est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 31/07/2011, 15h23   #3
Membre régulier
 
Inscription : août 2008
Messages : 402
Détails du profil
Informations forums :
Inscription : août 2008
Messages : 402
Points : 79
Points : 79
merci de ton aide

Code :
1
2
3
 
 
En suite, en informatique il faut savoir chercher un peu par ses propres moyens et essayé et ne pas venir au moindre problème sans tenter des solutions, car j'ai remarqué que tu pose des questions avant même d'essayer de ton coté.
c'est ce que je suis entraint d'essayer , mais je ne trouve pas ce qu'il me fait, j'ai le tuto de developpez sur debuter zend1.10 + la doc +guide de référence du programmeur + le site framework zend . je ne trouve pas la bonne methode. ou je ne trouve pas sur la bonne page.
De toute façon je sais que ce n'es pas suffiant, mais je continerais à lire d'autre doc.

Sinon ma question est pour le moment d'ordre conception.
En gros est ce une bonne idée de faire un dossier temporaire et ensuite par (les fontions php, si je trouve pas avec les methode zend) copier coller les images dans leurs dossier respectif, je pense que enregister le nom et l'image en même temps à la voler c'est plus difficile a mettre en oeuvre, mais je peux me tromper.

Code :
1
2
 
Sinon stockes tu tes tailles d'images en BDD
non je ne stock que les nom des image par exemple, j'impose que 3 taille d'image, je redimensionne obligatoirement les images
Code :
1
2
3
4
5
6
 
table image
-------------------------------------------------------
image_0 | image1_gros|image2_gros|image3_gros|image4_gros|image1_gros|image1_petit|image2_petite|image3_petit|image_4petit|
---------------------------------------------------------------------------------------------------------------------------------------------------------------------
im0.jpg--|img1g.jpg--|img2g.jpg--|img3g.jpg--|img4g.jpg--|img5g.jpg--|image1p.jpg|image2p.jpg--|image3p.jpg-|image4p.jpg|
donc en gros je récupère les 5 images en taille réelle , leurs nom de fichiers seront mis dans les champs image*_gros et je copie ces 5 images brut dans le dossier image/gros,
puis je reprend les 4 images je les rétrécie par (une methode de zend ou de php que, mais j'en suis pas encore là) j'enregistre leur nom de fichier des les champs image*_petit et je copie les fichers dans le dossier image/mini
keokaz est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 31/07/2011, 17h01   #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
Pourquoi désire tu modifier la taille de tes images en php ? Alors qu'il te suffit de css avec width et height cela te suffit
5h4rk est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 31/07/2011, 18h27   #5
Membre régulier
 
Inscription : août 2008
Messages : 402
Détails du profil
Informations forums :
Inscription : août 2008
Messages : 402
Points : 79
Points : 79
au début je voulais me servir du css, mais ca va faire ramer le serveur ?

imaginons que les 4 images font 1Mo,
cela fait 4Mo (4miniature + 4 grosse + 1 pour la présentation) d'image à charger ? c'est peut être trop lourd pour 1 seul voiture si il y en a 10 ?
en plus qui s'occupe de "miniaturiser" l'image ?? c'est le serveur ou c'est le client si je fait (css : width:50px; height :50px ??

sinon j'en suis qu'a l'enregistrement des formulaire image,
comment je ne sais pas préremplire le nom du ficher (trouver la bonne methode de Zend) ,j'ai juste utliser ce system, par contre ça ne fait pas zend mais plutôt procedural nom objet , ca fonctionne quand même

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
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
 
    //===================chargement des images===========
        $element = new Zend_Form_Element_File('mon_image');
        $element->setLabel('Uploadez une image:')
                ->setDestination('../public/image/img_tmp/');
        // s'assure qu'il y a un fichier au minimum, 3 au maximum
        $element->addValidator('Count', false, array('min' => 1, 'max' => 5));
        // Limite à 100K
        $element->addValidator('Size', false, 102400);
        // seulement des JPEG, PNG, et des GIF
        $element->addValidator('Extension', false, 'jpg');
        // définit 3 éléments fichiers identiques
        $element->setMultiFile(5);
        $this->addElement($element, 'mon_image');
 
        $upload = $element->getValue('mon_image');
 
              $this->image_ok= $this->traiterImage($upload); //récupération tous les les résultats des fichiers images
 
 
        // print_r($file_img_traiter);
    //   var_dump($img_ok);
        // =============bouton envoyer validation====================
        $this->addElement('submit', 'submit', array(
            'ignore' => true,
            'label' => 'Envoyer',
        ));
    }
 
 
    public function traiterImage($upload) {  // $element->getValue('mon_image') les éléements uploader
        //=========================traitement des 5 images
        $nb_image = count($upload); //vérfie le nombre d'image
 
        if ($nb_image == 1) { //si il y qu'une seul image on traite l'image sion la sortie n'est pas un array il y aura une erreur d'index introuvable
            echo "image principal ajouter";
            $image_a_traiter[0] = $upload;
            $image_a_traiter[1] = "nc.jpg";
            $image_a_traiter[2] = "nc.jpg";
            $image_a_traiter[3] = "nc.jpg";
            $image_a_traiter[4] = "nc.jpg";
                    return $image_a_traiter;
        }
 
        if ($nb_image >= 2) { //il faut qu'il y ai un minimum de 2 images pour former un array
            echo "<h1>on rentre dans la boucle</h1>";
            foreach ($upload as $resultat) {
                $image_a_traiter[] = $resultat;
            }
            // echo $image_a_traiter[1];
            // echo $image_a_traiter[0];
            if ($add_img = 5 - $nb_image) { //on calcul le nombre d'image a jouter par defaut nc.jpg
                for ($i = $nb_image; $i < 5; $i++) {
                    $image_a_traiter[$i] = "nc.jpg";
                }
            }
                    return $image_a_traiter;
        } else {
 
            echo "<h1>Une image est obligatoire</h1>";
        }
    }
mon but était que si la personne ne charge pas les 5 images je remplaces des image par defaut nc.jpg.
comme ça j'ai obligatoirement 5 nom de fichier image

Code :
1
2
3
4
5
6
 
106.jpg//on a uploader l'image
103.jpg//on a uploader l'image
nc.jpg//on n'a pas uploader
nc.jpg//on n'a pas uploader
nc.jpg//on n'a pas uploader
keokaz est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 13h36.


 
 
 
 
Partenaires

Hébergement Web