Page 1 sur 1

Undefined variable mais pourtant defined :)

Posté : 09 févr. 2008, 19:15
par diabloton
bonjour,
j'ai commancé a fair un code pour un ami le but ajouter des info + 3 images en un formulaire et presque ts fonctionne sauf l ajout d ela premiere image il y a
Notice: Undefined variable: dest_fichier in c:\program files\easyphp1-8\www\scriptimmo\traitajoutbien.php on line 142

voici mon code enfin la partie qui nous interesse
{  
// params 
 unset($erreur); 
  $extensions_ok = array('png', 'gif', 'jpg', 'jpeg','JPG','GIF','PNG','JPEG');  $taille_max = 1000000;  $dest_dossier = 'photographie/'; 
     // vérifications 
	  if
	  ( 
	  !in_array( substr(strrchr($_FILES['photo']['name'], '.'), 1), $extensions_ok ) )
	    {   
		 $erreur = 'Veuillez sélectionner un fichier de type png, gif ou jpg !'; 
		
		   }  
		    elseif( file_exists($_FILES['photo']['tmp_name'])and filesize($_FILES['photo']['tmp_name']) > $taille_max)
			  {   
			   $erreur = 'Votre fichier doit faire moins de 1 Mo !';  
			  
			 exit();  } 
	   // copie du fichier 
if(!isset($erreur))  
{   
 $dest_fichier = basename($_FILES['photo']['name']); 
 
// formatage nom fichier 
// enlever les accents   
$dest_fichier = strtr($dest_fichier,
'ÀÁÂÃÄÅÇÈÉÊËÌÍÎÏÒÓÔÕÖÙÚÛÜÝàáâãäåçèéêëìíîïðòóôõöùúûüýÿ',     'AAAAAACEEEEIIIIOOOOOUUUUYaaaaaaceeeeiiiioooooouuuuyy');  
// remplacer les caracteres autres que lettres, chiffres et point par _ 
 $dest_fichier = preg_replace('/([^.a-z0-9]+)/i', '_', $dest_fichier);  
// copie du fichie
 move_uploaded_file($_FILES['photo']['tmp_name'], $dest_dossier . $dest_fichier); 
  }}
  
  
  
  
  {  
// params 
 unset($erreur); 
  $extensions_ok2 = array('png', 'gif', 'jpg', 'jpeg','JPG','GIF','PNG','JPEG');  $taille_max2 = 1000000;  $dest_dossier2 = 'photographie/'; 
     // vérifications 
	  if
	  ( 
	  !in_array( substr(strrchr($_FILES['photo2']['name'], '.'), 1), $extensions_ok2 ) )
	    {   
		 $erreur = 'Veuillez sélectionner un fichier de type png, gif ou jpg !'; 
		
		   }  
		    elseif( file_exists($_FILES['photo2']['tmp_name'])and filesize($_FILES['photo2']['tmp_name']) > $taille_max2)
			  {   
			   $erreur = 'Votre fichier doit faire moins de 1 Mo !';  
			  
			 exit();  } 
	   // copie du fichier 
if(!isset($erreur))  
{   
 $dest_fichier2 = basename($_FILES['photo2']['name']); 
 
// formatage nom fichier 
// enlever les accents   
$dest_fichier2 = strtr($dest_fichier2,
'ÀÁÂÃÄÅÇÈÉÊËÌÍÎÏÒÓÔÕÖÙÚÛÜÝàáâãäåçèéêëìíîïðòóôõöùúûüýÿ',     'AAAAAACEEEEIIIIOOOOOUUUUYaaaaaaceeeeiiiioooooouuuuyy');  
// remplacer les caracteres autres que lettres, chiffres et point par _ 
 $dest_fichier2 = preg_replace('/([^.a-z0-9]+)/i', '_', $dest_fichier2);  
// copie du fichie
 move_uploaded_file($_FILES['photo2']['tmp_name'], $dest_dossier2 . $dest_fichier2); 
  }}
  
  
  {  
// params 
 unset($erreur); 
  $extensions_ok3 = array('png', 'gif', 'jpg', 'jpeg','JPG','GIF','PNG','JPEG');  $taille_max3 = 1000000;  $dest_dossier3 = 'photographie/'; 
     // vérifications 
	  if
	  ( 
	  !in_array( substr(strrchr($_FILES['photo3']['name'], '.'), 1), $extensions_ok3 ) )
	    {   
		 $erreur = 'Veuillez sélectionner un fichier de type png, gif ou jpg !'; 
		
		   }  
		    elseif( file_exists($_FILES['photo3']['tmp_name'])and filesize($_FILES['photo3']['tmp_name']) > $taille_max3)
			  {   
			   $erreur = 'Votre fichier doit faire moins de 1 Mo !';  
			  
			 exit();  } 
	   // copie du fichier 
if(!isset($erreur))  
{   
 $dest_fichier3 = basename($_FILES['photo3']['name']); 
 
// formatage nom fichier 
// enlever les accents   
$dest_fichier3 = strtr($dest_fichier3,
'ÀÁÂÃÄÅÇÈÉÊËÌÍÎÏÒÓÔÕÖÙÚÛÜÝàáâãäåçèéêëìíîïðòóôõöùúûüýÿ',     'AAAAAACEEEEIIIIOOOOOUUUUYaaaaaaceeeeiiiioooooouuuuyy');  
// remplacer les caracteres autres que lettres, chiffres et point par _ 
 $dest_fichier3 = preg_replace('/([^.a-z0-9]+)/i', '_', $dest_fichier3);  
// copie du fichie
 move_uploaded_file($_FILES['photo3']['tmp_name'], $dest_dossier3 . $dest_fichier3); 
  }}
  

et je narrive pas a comprendre la raison merci beaucoup de votre futur aide

deja merci pour vos reponse sinon la ligne 142 c ma requete
mysql_query("insert into bien VALUES ('',.......,'$dest_fichier','$dest_fichier2','$dest_fichier3')") ;
echo'vos info sont bien enregistre
';

une chose que j ai oubliais de souligner c que l enregistrement se fait bien mais pas pour la premiere image

$dest_fichier ne s enregistre pas
$dest_fichier2 s enregistre bien dans la bd
$dest_fichier3 s enregistre bien dans la bd

ainsi que mes autre variable elles s enregistre bien dans la base de donnée

Posté : 09 févr. 2008, 19:43
par zeus
Quelle est la ligne 142 ?

Posté : 09 févr. 2008, 22:08
par Cyrano
Je serais tenté de penser que l'erreur vient de l'utilisation de basename() sur la super-globale $_FILES et que ça retourne une erreur.

$_FILES['photo']['name'] retourne une chaîne de caractère, ce n'est pas le fichier en lui-même.

Je suggère une simplification :
<?pgp
//...
if(!isset($erreur))
{
    // formatage nom fichier
    // enlever les accents
    $dest_fichier = strtr(
        $_FILES['photo']['name'],
        'ÀÁÂÃÄÅÇÈÉÊËÌÍÎÏÒÓÔÕÖÙÚÛÜÝàáâãäåçèéêëìíîïðòóôõöùúûüýÿ',     
        'AAAAAACEEEEIIIIOOOOOUUUUYaaaaaaceeeeiiiioooooouuuuyy'
    );
    // remplacer les caracteres autres que lettres, chiffres et point par _
    $dest_fichier = preg_replace('/([^.a-z0-9]+)/i', '_', $dest_fichier);
    // copie du fichie
    move_uploaded_file($_FILES['photo']['tmp_name'], $dest_dossier . $dest_fichier);
}
//...
?>

Posté : 09 févr. 2008, 22:46
par zeus
basename() attend pourtant bien une chaine de caractère comme 1er paramètres :-k

Il faudrait voir ce que contient cette superglobale pour savoir si ça viens de là

Posté : 09 févr. 2008, 22:49
par Cyrano
Ben oui, mais dans ce cas, c'est un peu inutile puisque $_FILE['nom_champ_formulaire']['name'] contient juste ce nom de fichier.

Ça aurait pu être plus cohérent sur $_FILE['nom_champ_formulaire']['tmp_name'] puisque là, ça pointe sur le répertoire temporaire où est stocké le fichier uploadé. :-k

Posté : 09 févr. 2008, 22:57
par zeus
ah oui tiens, j'avais pas fait gaffe :?

*s'en va prendre une aspirine pour calmer son mal de tête et dormir* ;)

Posté : 11 févr. 2008, 22:52
par diabloton
je fais un petit up j ai tjr pas trouvé

Posté : 11 févr. 2008, 23:30
par zeus
Eh bien il faut venir nous faire des retours sur ce que nous t'avons proposé ;)

Comme ça, tu évites les UP qui sont interdit et tu nous aides à t'aider

Posté : 13 févr. 2008, 13:14
par diabloton
donc j ai essayé de s implifier le code mais j ai tjr le meme probleme :(

Posté : 13 févr. 2008, 14:03
par zeus
Que donne un
print_r($_FILE)