[Résolu]récupération d'image à chaque sortie de la boucle

Discussion dans 'Développement d'un site Web ou d'une appli mobile' créé par akara, 19 Juin 2007.

  1. akara
    akara WRInaute discret
    Inscrit:
    14 Juin 2007
    Messages:
    56
    J'aime reçus:
    0
    Bonjour,
    j'ai 3 input type file, j'ai fait une boucle for pour la récupération des 3 input type file, mais je n'arrive pas à récupérer à chaque sortie de la boucle la valeur (soit image soit pas d'image donc img_up = default) de la variable $img_up ,voila mon code qui n'est pas top top :
    autre question: dois-je faire le move_uploaded_file dans la boucle ou en dehors c'està dire lors de l'insert.

    Code:
    		
    for($i=1;$i<=3;$i++){
    $nomFichier = $_FILES["photo$i"]["name"];
    if($nomFichier != "" ){ // si il y a des photos
    		
    		//code de l'erreur si jamais il y en a une:
    		$codeErreur= $_FILES["photo$i"]["error"];
    		switch ($codeErreur){
    			case 0 : $message="<p>Pas d'erreur</p>"; break;
    			case 1 : $message="<p>La photo dépasse la taille max. définie sur le serveur (php.ini)</p>"; break;
    			case 2 : $message="<p>La photo dépasse la taille max. définie dans le formulaire</p>"; break;
    			case 3 : $message="<p>La photo n'a été que partiellement chargée</p>"; break;
    			case 4 : $message="<p>La photo n'a pas pu être téléchargée</p>"; break;
    			case 5 : $message="<p>Il n'existe pas de dossier temporaire, tel que défini par le serveur (php.ini)</p>"; break;
    			case 6 : $message="<p>Impossible d'écrire dans le dossier : vérifiez les droits</p>"; break;
    			default : $message="<p>Erreur inconnue</p>"; break;
    		}
    					
    		if($codeErreur == 0){ // s'il n'y a pas d'erreur
    					
    			//nom temporaire sur le serveur:
    			$nomTemporaire = $_FILES["photo$i"]["tmp_name"];
    													
    			//on rajoute dans son nom le timestamp du moment pour le différencier de la première 
    			//comme cela on est sûr de ne pas avoir 2 images avec le même nom
    			$nomFichier= date("Y_m_d_H_i_s")."_".$nomFichier;
    						
    			//L'image va etre envoyée dans le repertoire d'image				
    			$img_up = "/photo/".$nomFichier ;//chemin qui mène au dossier qui va contenir les fichiers upload
    			//Déplace des images du dossier temporaire vers le répertoire d'image
    			move_uploaded_file($nomTemporaire, $img_up);				
    		 }//fin if $codeErreurN
    	
    }else{ // s'il n'y a pas de photo
    			$img_up = "DEFAULT";
    }
    }//fin for
    				
    /*$sql_nophoto="INSERT INTO tb_test VALUES ('$url','$commune','$num_dep','$cp',DEFAULT,DEFAULT,DEFAULT,DEFAULT,'$commentaire','')";
    mysql_query($sql_nophoto);
    header("Location:test_envoi.php");*/
    echo $num_dep." ".$cp." ".$nom." ".$email." ".$commune." ".$url." ".$commentaire." ".$img_up;
     
    
     
  2. julienr
    julienr WRInaute impliqué
    Inscrit:
    5 Août 2003
    Messages:
    939
    J'aime reçus:
    2
    bonjour,
    il nous faudrait le code html car c'est peut être lui qui cloche...
     
  3. akara
    akara WRInaute discret
    Inscrit:
    14 Juin 2007
    Messages:
    56
    J'aime reçus:
    0
    le code html ? le formulaire tu veux dire ou tout ? allé hop tout,
    mais moi je voulais juste savoir comment récupérer à chaque boucle la valeur de img_up....
    Code:
    <?php
    	require_once('inc/connexion_base.inc.php'); // connexion à la base de données
    	include_once('inc/tete.inc.php'); // affichage du bandeau de la page
    	include "inc/fonctions.inc.php"; //fichier comprenant des fonctions 
    		
    	if(isset($_POST['region'])){// premier passage
    		$idr =$_POST['region'];
    	}
    	
    	$message="";
    if(isset($_POST['envoyer'])){
    
    	if(!isset($_POST["commune"]) && !isset($_POST['departement'])){
    
    		$message="Veuillez remplir les champs obligatoires";
    		$cp="";
    		$nom="";
    		$email="";
    		$commune="";
    		$url="";
    		$commentaire="";
    
    	}else{
    		// second passage
    		// récupération des variables
    		$cp=$_POST["cp"];
    		$nom=$_POST["nom"];
    		$email=$_POST["email"];
    		$commune=$_POST["commune"];
    		$url=$_POST["url"];
    		$commentaire=$_POST["commentaire"];
    		$num_dep=$_POST["departement"];
    						
    		for($i=1;$i<=3;$i++){
    			$nomFichier = $_FILES["photo$i"]["name"];
    			if($nomFichier != "" ){ // si il y a des photos
    		
    				//code de l'erreur si jamais il y en a une:
    				$codeErreur= $_FILES["photo$i"]["error"];
    				switch ($codeErreur){
    					case 0 : $message="<p>Pas d'erreur</p>"; break;
    					case 1 : $message="<p>La photo dépasse la taille max. définie sur le serveur (php.ini)</p>"; break;
    					case 2 : $message="<p>La photo dépasse la taille max. définie dans le formulaire</p>"; break;
    					case 3 : $message="<p>La photo n'a été que partiellement chargée</p>"; break;
    					case 4 : $message="<p>La photo n'a pas pu être téléchargée</p>"; break;
    					case 5 : $message="<p>Il n'existe pas de dossier temporaire, tel que défini par le serveur (php.ini)</p>"; break;
    					case 6 : $message="<p>Impossible d'écrire dans le dossier : vérifiez les droits</p>"; break;
    					default : $message="<p>Erreur inconnue</p>"; break;
    				}
    					
    				if($codeErreur == 0){ // s'il n'y a pas d'erreur
    					
    					//nom temporaire sur le serveur:
    					$nomTemporaire = $_FILES["photo$i"]["tmp_name"];
    													
    					//on rajoute dans son nom le timestamp du moment pour le différencier de la première 
    					//comme cela on est sûr de ne pas avoir 2 images avec le même nom
    					$nomFichier= date("Y_m_d_H_i_s")."_".$nomFichier;
    						
    					//L'image va etre envoyée dans le repertoire d'image				
    					$img_up = "C:/Documents and Settings/akara/Bureau/recherche/test__mairies/photo/".$nomFichier ;//chemin qui mène au dossier qui va contenir les fichiers upload
    					//Déplace des images du dossier temporaire vers le répertoire d'image
    					move_uploaded_file($nomTemporaire, $img_up);				
    			    }//fin if $codeErreurN
    	
    		   }else{ // s'il n'y a pas de photo
    					$img_up = "DEFAULT";
    		   }
    	  }//fin for
    				// on appelle la fonction pour vérifier l'unicité de l'url de la commune & du mail !
    				//verif_unicite($url,$commune,$email);
    				/*$sql_nophoto="INSERT INTO tb_test VALUES ('$url','$commune','$num_dep','$cp',DEFAULT,DEFAULT,DEFAULT,DEFAULT,'$commentaire','')";
    				mysql_query($sql_nophoto);
    				header("Location:test_envoi.php");*/
    		echo $num_dep." ".$cp." ".$nom." ".$email." ".$commune." ".$url." ".$commentaire." ".$img_up;
    	}//fin second if else
    }//fin premier if isset($_POST['envoyer'])
    
    	$sql1 = "SELECT id_reg, nom FROM tb_region ORDER BY nom";
        $rech_regions = mysql_query($sql1);
        $code_region = array();
        $region = array();
        /* On active un compteur pour les régions */
        $nb_regions = 0;
            while($ligne = mysql_fetch_assoc($rech_regions))
            {
                array_push($code_region, $ligne['id_reg']); //array_push(tableau,element): rajoute à la fin du tableau les elements $ligne['id_reg']
                array_push($region, $ligne['nom']);
    
                /* On incrémente le compteur */
                $nb_regions++;
            }
        ?>
    		<p><a href="index.html">accueil</a> > Ajout Mairie </p>
    		
    		<?php				 
    			 		echo "<p>".$message."</p>";				
    		?>
    		<form action="photo_test.php" method="post" id="chgdept" enctype="multipart/form-data">
    			<fieldset style="border: 3px double #333399">
    			<legend>Veuillez nous transmettre les éléments nous permettant de référencer gratuitement votre mairie</legend>
    			<br />
    			<span class="obligatoire"> (*) Champs obligatoires</span>
    			<table align="center">
    				  <tr> 
    					<td width="200" align="right">S&eacute;lectionn&eacute; la r&eacute;gion&nbsp; <span class="obligatoire">*</span>  </td>
    					<td width="234" align="left">
    						<select name="region" onchange="document.forms['chgdept'].submit();">
    			  				<option value="-1">- - - Choisissez une région - - -</option>
    							<?php
    								for($i = 0; $i < $nb_regions; $i++)
    								{
    							?>
    					 		 <option value="<?php echo($code_region[$i]); ?>"<?php echo((isset($idr) && $idr == $code_region[$i])?" selected=\"selected\"":null); ?>><?php echo stripslashes($region[$i]); ?></option>
    							<?php
    							}
    							?>
    					</select>
    					
    					</td>
    				 </tr>
    				<?php
    			  mysql_free_result($rech_regions); //libère toute la mémoire et les ressources utilisées par la ressource de résultat $rech_regions.
    				
    				/* On commence par vérifier si on a envoyé un numéro de région et le cas échéant s'il est différent de -1 */			
    				if(isset($idr) && $idr != -1)
    				{
    						/* Cération de la requête pour avoir les départements de cette région */
    						$sql2 = "SELECT num_dep, nom FROM tb_departement WHERE id_reg =".$idr." ORDER BY nom";
    						 $rech_dept = mysql_query($sql2);
    						/* Un petit compteur pour les départements */
    						$nd = 0;
    						/* On crée deux tableaux pour les numéros et les noms des départements */
    						$code_dept = array();
    						$nom_dept = array();
    						/* On va mettre les numéros et noms des départements dans les deux tableaux */
    						while($ligne_dept = mysql_fetch_assoc($rech_dept))
    						{
    							array_push($code_dept, $ligne_dept['num_dep']);
    							array_push($nom_dept, $ligne_dept['nom']);
    							$nd++;
    						}
    						/* Maintenant on peut construire la liste déroulante */
    						?>
    				<tr> 
    					<td width="200"  align="right">S&eacute;lectionn&eacute; le d&eacute;partement&nbsp; <span class="obligatoire">*</span></td>
    					<td width="234" align="left">
    							<select name="departement">
    										<?php  
    										for($d = 0; $d<$nd; $d++)
    										{
    											?>
    							  <option value="<?php echo($code_dept[$d]); ?>"<?php echo((isset($dept_selectionne) && $dept_selectionne == $code_dept[$d])?" selected=\"selected\"":null); ?>><?php echo stripslashes($nom_dept[$d]." (". $code_dept[$d] .")"); ?></option>
    											<?php
    										}
    							?>
    							</select>
    							<?php
    									mysql_free_result($rech_dept); //libère toute la mémoire et les ressources utilisées par la ressource de résultat $rech_dept.
    					}//fin if
    							?>
    					</td>
    				  </tr>	
    				  <tr> 
    					<td width="200"  align="right">Site Internet de votre Mairie&nbsp; <span class="obligatoire">*</span></td>
    					<td width="234" align="left"><input size="40" type="text" value="http://" name="url" ></td>
    				  </tr>
    				  <tr> 
    					<td width="200" align="right">Ville&nbsp; <span class="obligatoire">*</span> </td>
    					<td width="234" align="left"><input type="text" name="commune"></td>
    				  </tr>
    				  <tr> 
    					<td width="200"  align="right">Code Postal&nbsp; <span class="obligatoire">*</span></td>
    					<td width="234" align="left"><input type="text" name="cp"></td>
    				  </tr>
    				  <tr> 
    					<td width="200"  align="right">Nom&nbsp; <span class="obligatoire">*</span></td>
    					<td width="234"><input type="text" name="nom"></td>
    				  </tr>
    				<tr> 
    					<td width="200"  align="right">Email&nbsp; <span class="obligatoire">*</span></td>
    					<td width="234" align="left"><input type="text" name="email"></td>
    				  </tr>
    				  <tr>
    				<td align="right">Photo (max. 300 ko)</td>
    					<td><input type="hidden" name="MAX_FILE_SIZE" value="302400" />
    						<input type="file" name="photo1" /></td>
    				</tr>
    				<td align="right">Photo (max. 300 ko)</td>
    					<td><input type="hidden" name="MAX_FILE_SIZE" value="302400" />
    						<input type="file" name="photo2" /></td>
    				</tr>
    				<td align="right">Photo (max. 300 ko)</td>
    					<td><input type="hidden" name="MAX_FILE_SIZE" value="302400" />
    						<input type="file" name="photo3" /></td>
    				</tr>
    				  <tr> 
    					<td colspan="2"></td>
    				  </tr>
    				  <tr> 
    					<td valign="top" width="200" align="right">Message </td>
    					<td valign="top" align="left">
    					  <textarea name="commentaire" cols="15" rows="4" style="width:240px;height:150px"></textarea></td>
    				  </tr>
    				  <tr>
    					  <td>&nbsp;</td>
    					  <td align="center"><input type="submit" class="bouton" name="envoyer" value="Envoyer" /></td>
    				  </tr>
    		</table>
    	</form>
     </fieldset>
    <?php
    /* ***** fin de la page *******************/
    	include_once('inc/pied.inc.php'); // affichage du pied de page
    ?>
     
  4. julienr
    julienr WRInaute impliqué
    Inscrit:
    5 Août 2003
    Messages:
    939
    J'aime reçus:
    2
    bah si $img_up n'est pas défini et selon ton code c'est que tu es dans le cas ou $nomFichier != "" et $codeErreur != 0
    que contient le variable $message ???
     
  5. akara
    akara WRInaute discret
    Inscrit:
    14 Juin 2007
    Messages:
    56
    J'aime reçus:
    0
    salut,
    je comprend pas tros $img_up est défini dans le if, s'il y a des photos je fait un switch pour les erreurs si il ya $message=erreur sinon s'il n'y a pas d'erreur je fait les traitements pour l'image et je déclare $img qui est égale au répertoire+le_nom_du_fichier puis move_uploaded_file($nomTemporaire, $img_up); Mais s'il n'y a pas d'image je passe directement au else qui dit que $img_up="DEFAULT"....
    Mon code n'a pas l'air correcte ?

    et est ce que cela fonctionnerait si je faisait ceci :

    $tab_img= array();
    array_push($tab_img,$img_up);
    & mettre ces deux lignes avant l'accolade fermée du for
     
  6. julienr
    julienr WRInaute impliqué
    Inscrit:
    5 Août 2003
    Messages:
    939
    J'aime reçus:
    2
    oui il te faut un tableau mais je maintiens qu'il y a un cas qui passe entre les mailles du filet :)
     
  7. akara
    akara WRInaute discret
    Inscrit:
    14 Juin 2007
    Messages:
    56
    J'aime reçus:
    0
    :?
    est ce que c'est le $i dans $_FILES["photo$i"]["name"];
    sinon je vois pas où est la fuite... [/code]
     
  8. julienr
    julienr WRInaute impliqué
    Inscrit:
    5 Août 2003
    Messages:
    939
    J'aime reçus:
    2
    il te manque ce cas non ? :

    Code:
    if($codeErreur == 0){ // s'il n'y a pas d'erreur
    ..................
    }//fin if $codeErreurN 
    else {
        $img_up="DEFAULT"
    }
    
     
  9. akara
    akara WRInaute discret
    Inscrit:
    14 Juin 2007
    Messages:
    56
    J'aime reçus:
    0
    LOol je vois pas où tu veux en venir,
    j'ai fait :
    Code:
        if($codeErreur == 0){ // s'il n'y a pas d'erreur
        ..................
        }//fin if $codeErreurN
    /*je n'ai pas fait de else car plus haut dans le switch j'ai $message donc si il y a une erreur je l'affiche dans le formulaire*/
    
    }else {
        $img_up="DEFAULT"
    } 
    
     
  10. julienr
    julienr WRInaute impliqué
    Inscrit:
    5 Août 2003
    Messages:
    939
    J'aime reçus:
    2
    reprenons alors :D et pour simplifier ton code
    Code:
    for($i=1;$i<=3;$i++){
             if($nomFichier != "" ) { 
                   
                if($codeErreur == 0) { 
                   $img_up = "C:/Documents and ";
                 }
                 else {
                   $img_up = "au cas ou hein ;)";
                 }
       
             }
             else{ 
                   $img_up = "DEFAULT";
             }
    }
    echo $img_up
    
    c'est bien çà non ?
     
  11. akara
    akara WRInaute discret
    Inscrit:
    14 Juin 2007
    Messages:
    56
    J'aime reçus:
    0
    oui oui c'est vrai merci mais est-ce vraiment obligé ?si oui ou non pourquoi lol
    .mais cela ne résoud pas la récupération
    quand j'ai fait
    Code:
    .....
     $tab_img = array();
    array_push($tab_img,$img_up);   
     }//fin for
    								
    	$nombre = sizeof($tab_img);
    	for ($i = 0; $i <$nombre; $i++)
    	{
    		echo $tab_img[$i]; // 
    		echo "<br />"; 
    	}
    
    je ne récupère que la derniere valeur de $img_up, pourquoi ?
     
Chargement...
Similar Threads - [Résolu]récupération image sortie Forum Date
Résolution d'image sur Lighthouse. Administration d'un site Web 10 Novembre 2022
Migrer les images de JPEG à WEBP : quel impact perf et SEO ? Référencement Google 28 Septembre 2022
Lien sur une image, même poids SEO que pour un lien sur une ancre de texte ? Rédaction web et référencement 24 Septembre 2022
Position Google image vs Google différente Référencement Google 21 Septembre 2022
Trafic de google image Google Analytics 19 Septembre 2022
Avis sur mon site - hébergeur de galeries d’images Demandes d'avis et de conseils sur vos sites 26 Août 2022
Recherche Google images : mes photos disparaîssent Référencement Google 25 Août 2022
modification taille images sur jimdo Développement d'un site Web ou d'une appli mobile 18 Août 2022
Désindexation images en changeant de format (passage à WebP) Crawl et indexation Google, sitemaps 12 Juillet 2022
Images - site multilangue Référencement international (langues, pays) 11 Juillet 2022
images ; balises ALT et duplicate content Débuter en référencement 9 Juillet 2022
grande image centrer verticalement dans DIV avec largeur variable de l'ecran Développement d'un site Web ou d'une appli mobile 28 Juin 2022
Liens en do follow ou no follow pour créditer les images ? Netlinking, backlinks, liens et redirections 14 Mai 2022
Images upscalées ou downscalées et le SEO Débuter en référencement 6 Mai 2022
Shopify : images hébergées sur CDN, en dehors du nom de domaine YouTube, Google Images et Google Maps 4 Mai 2022
URL rewriting d'images URL Rewriting et .htaccess 22 Janvier 2022
Quota d'images sur une page Débuter en référencement 10 Janvier 2022
Utiliser plusieurs fois une même image sur un site YouTube, Google Images et Google Maps 3 Janvier 2022
images en responsive, balises et rapidité de chargement Développement d'un site Web ou d'une appli mobile 20 Décembre 2021
problème avec la mise en cache des images de mon site Développement d'un site Web ou d'une appli mobile 19 Décembre 2021