Pb vérification type de fichier avant upload

Résolu/Fermé
Authentiks Messages postés 16 Date d'inscription mardi 24 juillet 2007 Statut Membre Dernière intervention 22 février 2008 - 31 juil. 2007 à 12:06
Authentiks Messages postés 16 Date d'inscription mardi 24 juillet 2007 Statut Membre Dernière intervention 22 février 2008 - 31 juil. 2007 à 17:24
Salut,
J'ai créer une application PHP qui permet de charger un fichier que j'utilise pour extraire les infos et les mettre dans une BDD Mysql. Le problème c'est je que je voudrais qu'il me charge que des fichier de type .xls ou .csv

Je vous mets mon code ci-dessous:

$the_file_name = $_FILES['the_file']['name'];
$extension = substr ($the_file_name,-4,4); //récupère l'extension du fichier. 


[...]

else if (!$extension== ".csv" || !$extension== ".xls"){
	
	echo"<tr><td align='left'><br/><strong><font color='red'>ATTENTION le format du fichier chargé n'est pas bon (ni un .xls, ni un .csv)!!</font></strong>";
	
	echo "<br/><form enctype='multipart/form-data' action='" . $_SERVER['PHP_SELF'] . "' method='post'>\n"
		. "<input type='hidden' name='action' value='upload' />\n"
		. "Upload a file:  <input type='file' name='the_file' size='35' /><br />\n"
		. "<div align='center'><input type='submit' value='Upload' /><div/>\n"
		. "</form>\n\n";
		
	echo "<br/></td></tr>\n";


Donc quand je fais un echo de $extension il me marque bien .gif ou .xls mais il ne rentre jamais dans mon else if. (Et il n'est pas rentré dans le premier if... :P, jpréfère prévenir)

Merci de votre aide
A voir également:

6 réponses

voila ton probleme :
supposons que l'upload du fichier fonctinne correctement on aura plus besoin de la partie "if" le programme passe à "else if" et la si le fichier est ".pdf" par exemple la conditionest verifier il entre jusqu ici c bon ton programme foctionne correctement....
maitenant si le fichier est un ".csv" la prmeiere partie($extension!= ".csv") n'est pas verfier normalement il entre pas sauf que la 2eme partie ($extension!= ".xls") est verifiée et t a un "ou" (||)entre les deux:il entre donc....meme probleme avec un fichier".xls"..........

Solution : remplace le "ou" (||) par un "et" (&&) :pour afficher le message "extention incorrecte" le fichier doit etre different de ".csv" && different de ".xls"


Bonne chance
3
Pour te donner une reponse complete tu dois nous envoyé le code complet sur de la partie "if"...
Et puis Est tu sur que ce syntax est juste:

!$extension== ".csv" ----------> le "! " avant une variable qui contient du text ca veut dire quoi?


Autre chose ,si dans la premiere partie de ta structure conditionnelle "if" tu a traité le cas

($extension== ".csv" || $extension== ".xls")

alors un simple " else" suffira pour traiter le cas ou l'extention du fichier n'est pas bonne au lieu d'un "else if". Si ce n'est pas le cas explique ton traitement et envoi la premiere partie du code on pourra peut etre t'aider.


Remarque: a mon avis ton probleme est un probleme de controle de saisie , tu n'est pas obligé d'envoye les donnes vers le serveur puis de les verifier avec php pour faire le traitement. N'oubli pas que php fonctionne du cote serveur......un simple script de controle de saisie en java scrit suffit pour filtrer le type de fichier accepter par ton formulaire

Bonne chance
0
Authentiks Messages postés 16 Date d'inscription mardi 24 juillet 2007 Statut Membre Dernière intervention 22 février 2008
31 juil. 2007 à 15:47
Je t'envoies ma partie "if"...Sinon j'ai changé le test d'inegalité, je sais pas pourquoi j'avais mis ça...

	$the_file_name = $_FILES['the_file']['name'];
	$the_file = $_FILES['the_file']['tmp_name'];
	$the_full_file_path = $the_path."/".$the_file_name;
	
	$extension = substr ($the_file_name,-4,4); //récupère l'extension du fichier. Exemple ".csv"
	echo $extension;
	
//Si l'upload du fichier n'a pas fonctionné on réaffiche la barre permettant d'importer un fichier ainsi qu'un message d'erreur
	if (!@move_uploaded_file($the_file, $the_full_file_path))		
		{
		$the_file_name = "ATTENTION Base de Données VIDE";
		
		echo"<tr><td align='left'><br/>Nom du fichier faisant référence :".$the_file_name."";
				
		echo "<br/><form enctype='multipart/form-data' action='" . $_SERVER['PHP_SELF'] . "' method='post'>\n"
		. "<input type='hidden' name='action' value='upload' />\n"
		. "Upload a file:  <input type='file' name='the_file' size='35' /><br />\n"
		. "<div align='center'><input type='submit' value='Upload' /><div/>\n"
		. "</form>\n\n";
		
		echo "<strong><font color='red'>Erreur:</font> 
		Vérifiez vos permissions et le chemin du répértoire de téléchargement (upload) </strong><br/><br/></td></tr>\n";		
		}
			
//Si le fichier n'est pas au bon format...
	else if	($extension!= ".csv" || $extension!= ".xls"){
	
	echo"<tr><td align='left'><br/><strong><font color='red'>ATTENTION le format du fichier chargé n'est pas bon (ni un .xls, ni un .csv)!!</font></strong>";
	
	echo "<br/><form enctype='multipart/form-data' action='" . $_SERVER['PHP_SELF'] . "' method='post'>\n"
		. "<input type='hidden' name='action' value='upload' />\n"
		. "Upload a file:  <input type='file' name='the_file' size='35' /><br />\n"
		. "<div align='center'><input type='submit' value='Upload' /><div/>\n"
		. "</form>\n\n";
		
	echo "<br/></td></tr>\n";
	
	}
	
	

//Si l'upload a fonctionné avec le bon type de fichier on le précise et on indique le nouveau fichier de référence.
	else [...On traite ici le bon doc... donc pas de pb normalement ici]
0
Authentiks Messages postés 16 Date d'inscription mardi 24 juillet 2007 Statut Membre Dernière intervention 22 février 2008
31 juil. 2007 à 15:56
Juste une précision en plus:

Avec ce code le programme rentre dans la boucle else if tout le temps meme si le fichier est un .csv ou .xls

Merci de votre aide
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Fais un echo de $extension pour voir si tu as bien .csv ou .xls

sinon pour extraire l'extension tu peux utiliser:

$path_parts = pathinfo('ton_nom_fichier');
echo $path_parts['extension'];


et mets elseif au lieu de else if
0
Authentiks Messages postés 16 Date d'inscription mardi 24 juillet 2007 Statut Membre Dernière intervention 22 février 2008
31 juil. 2007 à 17:24
Cool, c'était bien ça! Confusion entre OR et AND

Merci beaucoup!!!
0