Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1577 connectés 

  FORUM HardWare.fr
  Programmation
  PHP

  Insertion d'images en boucle

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Insertion d'images en boucle

n°1377968
clemdups
Posté le 31-05-2006 à 10:36:26  profilanswer
 

Bonjour à tous,
 
Voilà mon souci : j'ai un formulaire avec 6 champs pour uploader des images (fphoto1, fphoto2, etc... jusqu'à fphoto6).
J'arrive à les uploader toutes dans mon dossier, pas de problème (j'ai adapté un script trouvé pour une image dans une boucle pour faire mes 6 images).
Seulement j'ai deux problèmes :
 
 - Déjà je n'arrive pas à mettre le nom de l'image dans la Base de Données....... :( (il me renvoie le DIE)
 - Ensuite, si jamais j'y arrive, comment faire en sorte que tout soit ajouté sur la même ligne (même ID) ??
 
Voici le code utilisé (pas forcément très propre, je vous l'accorde) :
(l'insertion en base est vers le milieu, sous la série de echo)
 

Code :
  1. $i=1;
  2. while ($i<7) {
  3. $fphoto[$i]=$_FILES['fphoto'.$i]['name'];
  4. $i++;
  5. }
  6. //  DEFINITION DES VARIABLES  
  7. $target     = '../upload/';  // Repertoire cible
  8. $extension  = 'jpg';      // Extension du fichier sans le .  ### Rq : j ai rajoute la possibilite d un GIF dans le code, voir plus bas au troisieme IF .
  9. $max_size   = 500000;     // Taille max en octets du fichier (en octets. 100000 o = 100 Ko )
  10. $width_max  = 1000;        // Largeur max de l'image en pixels
  11. $height_max = 1000;        // Hauteur max de l'image en pixels  
  12. //  DEFINITION DES VARIABLES LIEES AU FICHIER
  13. $i=1;
  14. $erreur=0;
  15. while ($i<7) {
  16. $taille_b[$i]   = $_FILES['fphoto'.$i]['size'];
  17. // Attention ! Ici $fphoto[$i] équivaut au $nom_file (ou $_FILES['photox']['name'] ) utilisé plus haut.
  18. $tmp[$i]      = $_FILES['fphoto'.$i]['tmp_name'];
  19. // UPLOAD DES FICHIERS
  20.     // On vérifie si le champ est rempli
  21.     if(!empty($_FILES['fphoto'.$i]['name'])) {
  22.         // On vérifie l'extension du fichier
  23.         if((substr($fphoto[$i], -3) == $extension) || ((substr($fphoto[$i], -3) == 'gif'))) {
  24.             // On récupère les dimensions du fichier
  25.             $infos_img = getimagesize($_FILES['fphoto'.$i]['tmp_name']);
  26.             // On vérifie les dimensions et taille de l'image
  27.             if(($infos_img[0] <= $width_max) && ($infos_img[1] <= $height_max) && ($_FILES['fphoto'.$i]['size'] <= $max_size)) {
  28.                 // Si c'est OK, on teste l'upload
  29.                 if(move_uploaded_file($_FILES['fphoto'.$i]['tmp_name'],$target.$_FILES['fphoto'.$i]['name'])) {
  30.                     // Si upload OK alors on affiche le message de réussite
  31.                     echo '<b>Image numero '.$i.' uploadée avec succès !</b>';
  32.                     echo '<hr />';
  33.      echo '<table><tr><td>';
  34.                     echo '<b>Fichier :</b> ', $_FILES['fphoto'.$i]['name'], '<br />';
  35.                     echo '<b>Taille :</b> ', $_FILES['fphoto'.$i]['size'], ' Octets<br />';
  36.                     echo '<b>Largeur :</b> ', $infos_img[0], ' px<br />';
  37.                     echo '<b>Hauteur :</b> ', $infos_img[1], ' px<br />';
  38.      echo '</td><td><img src="../upload/'.$fphoto[$i].'"></img>';
  39.      echo '</td></tr></table>';
  40.                     echo '<hr />';
  41.                     echo '<br /><br />';
  42.      $insert_ph="INSERT INTO apigoogle_fiches('f_photo[$i]') VALUES('$fphoto[$i]')";
  43.      $req=mysql_query($insert_ph) or die("Erreur upload photo" );
  44.      $i++;
  45.                 } else {
  46.                     // Sinon on affiche une erreur système
  47.                     echo '<b>Problème lors de l\'upload !</b><br /><br /><b>', $_FILES['fphoto'.$i]['error'], '</b><br /><br />';
  48.      $erreur=1;
  49.      $i++;
  50.                 }
  51.             } else {
  52.                 // Sinon on affiche une erreur pour les dimensions et taille de l'image
  53.                 echo '<b>Problème dans les dimensions ou taille de l\'image !</b><br /><br />';
  54.     $erreur=1;
  55.     $i++;
  56.             }
  57.         } else {
  58.             // Sinon on affiche une erreur pour l'extension
  59.             echo '<b>Votre image ne comporte pas l\'extension .jpg ou .gif !</b><br /><br />';
  60.    $erreur=1;
  61.    $i++;
  62.         }
  63.     } else {
  64.         // Sinon on envoie 0 a la place de la photo dans la BDD
  65.         $fphoto[$i] = "0";
  66.   echo "Pas de photo ajout&eacute;e <br><br>";
  67.   $i++;
  68.  }
  69. }

Message cité 1 fois
Message édité par clemdups le 31-05-2006 à 10:41:09
mood
Publicité
Posté le 31-05-2006 à 10:36:26  profilanswer
 

n°1378006
anapajari
s/travail/glanding on hfr/gs;
Posté le 31-05-2006 à 11:34:34  profilanswer
 

clemdups a écrit :

- Déjà je n'arrive pas à mettre le nom de l'image dans la Base de Données....... :( (il me renvoie le DIE)


Dans ta table tu as des champs qui s'appelent 'f_photo[1]', 'f_photo[2]' ... ??? C'est ce que laisse penser la requete:

Code :
  1. "INSERT INTO apigoogle_fiches('f_photo[$i]') VALUES('$fphoto[$i]')"


Et puis vu comme c'est codé j'ai quelques doutes sur la portée de ton tableau fphoto. Pourquoi fais-tu une première boucle pour l'initialier... Elle ne sert strictement à rien, sert toi directement du tableau $_FILES.
 

clemdups a écrit :

Ensuite, si jamais j'y arrive, comment faire en sorte que tout soit ajouté sur la même ligne (même ID) ??


Il faut que tu fasses ta requête d'insertion après tous les uploads, en gros faire une seule requete.
 
Bon maintenant deux trois commentaires sur l'architecture de ton bouzin:

  • J'aurais fait 2 tables:  

une apigoogle avec juste un id
une image avec un identifiant, l'id d'apigoogle en clé étrangère et le nom de ton image
L'intêret ce que si demain tu as 8 images tu n'as rien a changer dans la structure de ta table

  • dans le formulaire html j'aurais utilisé un seul nom dans les inputs:
Code :
  1. <input type="file" name="fphoto[]" ... />


Afin de récuper un tableau dans le script php

  • dans le script php, j'aurais ensuite parcouru ce tableau.


Le but de tout ça est d'éviter d'avoir quoi que ce soit à modifier si un jour tu as besoin de changer le nombre d'image. Avec ça, tu n'aurrais besoin que de rajouter un input file dans ta page html
 


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  PHP

  Insertion d'images en boucle

 

Sujets relatifs
[C] numérotation d'imagesredirection error stdout lors insertion via fichier
Insertion dans basePOST d'une variable définie dans un formulaire pr insertion ds BD
[FLASH] >> 1 code pour plusieurs images différentesSite en images et référencement.
Insertion scrollbarTravailler sur des images en VBA sous Excel
probleme de boucle[Oracle] plsql : COMMIT dans une boucle FOR ?
Plus de sujets relatifs à : Insertion d'images en boucle


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR