8795 sujets

Développement web côté serveur, CMS

bonjour, je me casse les dents sur un probleme,
j'ai un formulaire pour pouboir uploader 3 images + du texte qui fonctionne bien.
J'ai un autre formulaire qui permet de modifier les données déja enregistrées et qui permet aussi (en théorie) d'envoyer 1 ou 2 images supplémentaires.

Le probleme est que les images ne s'upload pas avec le formulaire de modif...

voici un extrait de mon script (la requete)

 if (isset($_POST['submit'])) {
 $sql = "UPDATE utilisateurs SET site_user = '$site', WHERE id_user = '$id2' " ;
if (!empty($_FILES)) 
	{              
foreach($_FILES as $index => $array_image)
										{                  
											if(!empty($_FILES[$index]['name'])) 
												{                      		
																															
													//suppression des accents lors de la génération du nom du fichier
													$remix=basename($_FILES[$index]['name']);
													$remix=preg_replace('/([^.a-z0-9]+)/i', 'a', $remix);
													// fin de la suppression des accents
												$chemin_image = $repertoire_images .'/'. $id_user . '-' . $remix;
												$chemin_image = mb_strtolower($chemin_image);
														
													
													
													
																	if (move_uploaded_file($_FILES[$index]['tmp_name'], $chemin_image)) 
														{
															$sql= sprintf("Insert Into utilisateurs_images (id_image, id_user, chemin_image) Values(null, $id2, '%s')",                              
															
																	mysql_real_escape_string($chemin_image));                          
																		mysql_query($sql);                      
														} 
														
														else
														{
															
															 echo 'Erreur survenue durant la copie de l\'image '.$_FILES[$index]['name'].'. Vérifier les droits du répertoire '.$repertoire_images;                         
															
															 break;                      
														}                  
												}              
																			}         
				}         
$result = mysql_query($sql) or die(mysql_error());
header('Location: modifalerte.php?idnews='.$id2.''); 
}

Si quelqu'un àa la patience de jeter un coup d'oeil.... merci d'avance
Modifié par pareto (17 Jul 2010 - 22:41)
Salut pareto,

ce serait plus simple en nous montrant le code html du formulaire et en nous disant quelle erreur tu as ! Smiley murf

Ensuite, et c'est à faire dès que quelque chose ne fonctionne pas, il suffit de debugger : qu'est-ce que tu as dans $_POST, $_FILES, $chemin_image, etc. juste avant de faire ton traitement...
echo '<pre>';
print_r($_POST);
echo '</pre>';
echo '<pre>';
print_r($_FILES);
echo '</pre>';
echo '<p>chemin_image : <strong>'.$chemin_image.'</strong></p>';
Bonjour Heyoan, merci de prendre le temps pour me répondre à chaque fois.

En fait je n'est pas d'erreur à proprment parler c'est juste que mon formulaire de modification ne prend en compte que les champs textes et pas les champs FILE. La table comprenant les informations texte s'update bien, seulement la table comprenant les liens vers les images stockées sur le serveur ne s'update pas. Le formulaire est un formulaire tout simple:

<form name="modif" id="modif" action="" method="post">
         <table width="100%" border="0" align="center" cellpadding="0" cellspacing="0">
           <tr width="100%" bgcolor="#999999">
             <th width="2%" align="left" bgcolor="#CCCCCC" class="noir" scope="col" valign="left">&nbsp;</th>
             <th width="98%"  align="left" bgcolor="#CCCCCC" class="noir" scope="col" valign="left">
               <br />
                 <input  type="hidden" name="id_user" id="id_user" class="noir" size="5" readonly="readonly" value="<?php echo ($id2);?>" />
                 <div align="center"><img src="/img/titre_formulmodif.jpg" width="812" height="18" /></div> 
                 <br />
               <span class="titreform_modif"><br />
              
               <span class="titreform_modif">Pr&eacute;sentation</span><span class="noirnobold">(3000 caract&egrave;res maxi)</span>
               <div><img src="/img/pix.gif" width="5" height="5" /></div>
               <textarea name="description" cols="120" rows="20" class="noirmodif" onkeydown="limiteur();" onkeyup="limiteur();"  onfocus="limiteur();"  id="description" value="<?php echo ($description2); ?>"><?php echo ($description2); ?></textarea>
<br />      
               <br />
<br />
<br />
<?php  
$req = mysql_query('SELECT COUNT(*) AS compt FROM utilisateurs_images Where id_user='.$id2.'');
$nbrs_enreg = mysql_fetch_array($req);
$nbimageup= $nbrs_enreg['compt'];
echo  $nbimageup; 
$reste=($max_images-=$nbimageup);
for($i=0 ; $i < $reste; $i++) 		   
{      
echo '<input type="hidden" name="MAX_FILE_SIZE" value="$taille_max">';
echo "\t\t".'<input type="file" class="noir" size="40" id="image'.$i.'"  name="image'.$i.'" value="" onChange="verif_extension(image'.$i.'.value);" />'."<br />\n";  }  ?>
			  
               <br />
               <input name="submit" id="submit" type="submit" class="noir_input" value="Valider les modifications" onclick="return checkFields();" />
                <br />
             <br />             </th>
           </tr>
        </table>
     </form>

Modifié par pareto (16 Jul 2010 - 16:14)
C'est normal puisqu'il te manque l'attribut enctype du formulaire :
<form name="modif" id="modif" action="<?php echo htmlspecialchars($_SERVER['PHP_SELF']) ?>" method="post" enctype="multipart/form-data">