Précédent   Forum des professionnels en informatique > PHP > Langage > Formulaires
Formulaires Forum d'entraide sur les formulaires avec PHP. Avant de poster -> FAQ formulaires, Cours de formulaires et Sources de formulaires
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 11/07/2008, 16h40   #1
Candidat au titre de Membre du Club
 
Inscription : février 2005
Messages : 48
Détails du profil
Informations forums :
Inscription : février 2005
Messages : 48
Points : 14
Points : 14
Envoyer un message via MSN à Louison
Par défaut Upload de fichiers et autres champs

Bonjour,

J'ai une question concernant un formulaire d'upload de fichiers, dont je comprends bien le fonctionnement pour ce qui est de l'upload. Cependant, j'aimerais pouvoir y ajouter des champs textes avec l'upload, et je ne vois pas comment faire.

Pour le moment j'ai dû faire 2 formulaires différents sur la même page, 1 pour l'upload, et l'autre contenant des champs textes à remplir. Mais le problème est que lorsque je remplis le texte, et qu'après j'upload, tout se déroule bien, mais les textes inscrits sont effacés, et je dois à nouveau les remplir, ce qui est embêtant...

Je ne vois pas trop comment faire, car il faut un bouton pour l'upload du fichier, et un autre pour valider le formulaire. Je pense que la solution n'est pas complexe, mais je ne vois pas... Avez vous des idées ?

Merci d'avance

PS: si vous avez besoin de mon code il n'y a pas de problèmes
Louison est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 11/07/2008, 17h47   #2
Membre confirmé
 
Avatar de chtipitou
 
Étudiant
Inscription : mars 2006
Messages : 175
Détails du profil
Informations personnelles :
Âge : 25
Localisation : France, Paris (Île de France)

Informations professionnelles :
Activité : Étudiant

Informations forums :
Inscription : mars 2006
Messages : 175
Points : 204
Points : 204
rien ne t'empeche de mettre dans un meme form
un input file et un input text ou un text area ou n'importe quoi d'ailleurs :p

verifie que tes input ont bien des noms differents
__________________
42
there is no place like 127.0.0.1
Mangez des http://www.smarty.net avec vos PHP web s'il vous plait
var_dump retourne les informations structurées d'une variable, y compris son type et sa valeur. Les tableaux et les objets sont explorés récursivement, avec des indentations, pour mettre en valeur leur structure.
chtipitou est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 12/07/2008, 21h51   #3
Rédacteur/Modérateur
 
Avatar de Thes32
 
Homme
Développeur Web
Inscription : décembre 2006
Messages : 2 333
Détails du profil
Informations personnelles :
Sexe : Homme

Informations professionnelles :
Activité : Développeur Web

Informations forums :
Inscription : décembre 2006
Messages : 2 333
Points : 3 772
Points : 3 772
salut,
peux tu montrer ton code ?
__________________
Développeur | Zend Certified Engineer

Étapes Pour mieux se servir du forum:
1. Commencez par lire les cours et tutoriels ;
2. Faites une recherche;
3. Faites un post si rien trouvé dans les deux étapes précédentes en respectant les règles;

Nix>_Rien n'est plus pratique que la théorie
Thes32 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 13/07/2008, 01h43   #4
Rédacteur/Modérateur
 
Avatar de N1bus
 
Inscription : janvier 2003
Messages : 2 018
Détails du profil
Informations personnelles :
Âge : 47
Localisation : France, Charente Maritime (Poitou Charente)

Informations forums :
Inscription : janvier 2003
Messages : 2 018
Points : 1 992
Points : 1 992
Citation:
j'ai dû faire 2 formulaires différents sur la même page, 1 pour l'upload, et l'autre contenant des champs textes à remplir. Mais le problème est que lorsque je remplis le texte, et qu'après j'upload, tout se déroule bien, mais les textes inscrits sont effacés,
Si tu as deux formulaires et que tu n'en exécute qu'un (Submit() ), c'est normal que tu n'aies pas les champs du deuxième.

Tu peux mettre tous les champs dans le même formulaire.
N1bus est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 13/07/2008, 17h11   #5
Membre régulier
 
Inscription : décembre 2006
Messages : 166
Détails du profil
Informations forums :
Inscription : décembre 2006
Messages : 166
Points : 83
Points : 83
Envoyer un message via MSN à omdafer Envoyer un message via Skype™ à omdafer
Sinon tu effectue ton action sur la même page :

du genre :
Si champ1 ok & champ2 ok...
alors execute
sinon champ1=valduchamp1 ...
omdafer est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 14/07/2008, 16h33   #6
Candidat au titre de Membre du Club
 
Inscription : février 2005
Messages : 48
Détails du profil
Informations forums :
Inscription : février 2005
Messages : 48
Points : 14
Points : 14
Envoyer un message via MSN à Louison
En effet, en mettant le tout dans le même formulaire, et en traîtant les actions d'après le bouton cliqué par l'utilisateur, cela fonctionne très bien... Je ne sais pas ce que j'ai oublié de faire.. Mais bref ça marche, merci beaucoup !

J'ai encore une question, maintenant que je suis dans ce script d'upload. J'ai donc traité différemment en fonction du bouton cliqué (upload ou envoi formulaire). J'aimerais récupérer le chemin du fichier, pour pouvoir par la suite l'envoyer par email (dans la partie $_POST['envoyer']), mais je ne comprends pas, mon champ est vide, pourtant je le déclare plus haut.. Je ne vois pas ce qui cloche... Voici le code du formulaire :

Code :
1
2
3
4
5
6
7
8
9
 
        <form name="Publicite" method="post" action="index.php?page=pub" enctype="multipart/form-data">
            <input type="hidden" name="MAX_FILE_SIZE" value="500000">
            <input type="file" name="pdf"><input type="submit" name="env_file" value="Envoyer"><br /><br />
            <input type="text" name="nom" size="40" maxlength="30" value="<? if($_POST)echo $f_nom ?>" />&nbsp;*<br />
            <input type="text" name="adresse" size="40" maxlength="30" value="<? if($_POST)echo $f_adresse ?>" />&nbsp;*<br />
            <input type="submit" name="envoyer" value="Insérer l'annonce" />
            <input type="reset" name="effacer" value="Effacer" />
        </form>
et le script :

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
 
<? if($_POST){
	  		$adresse = "";
	  		if($_POST['env_file']){
					$dossier = '../photos/publicite/';
					$fichier = basename($_FILES['pdf']['name']);
					$taille_maxi = 5000000;
					$taille = filesize($_FILES['pdf']['tmp_name']);
					$extensions = array('.jpg','.JPG', '.jpeg', '.gif', '.GIF', '.png', '.PNG', '.bmp', '.fla', '.FLA', '.swf', '.SWF', '.psd', '.PSD', '.pdf', '.PDF');
					$extension = strrchr($_FILES['pdf']['name'], '.'); 
					if(!in_array($extension, $extensions)) $erreur = 'Type de fichier non correct';
					if($taille > $taille_maxi) $erreur = 'Votre fichier est trop volumineux';
					if(!isset($erreur)){
						 $fichier = strtr($fichier,'ÀÁÂÃÄÅÇÈÉÊËÌÍÎÏÒÓÔÕÖÙÚÛÜÝàáâãäåçèéêëìíîïðòóôõöùúûüýÿ','AAAAAACEEEEIIIIOOOOOUUUUYaaaaaaceeeeiiiioooooouuuuyy');
						 $fichier = preg_replace('/([^.a-z0-9]+)/i', '-', $fichier);
						 $fichier = date("d.m.Y")."-".date("H:i")."-".$fichier;
						 $chemin = $dossier."".$fichier;
						 //mysql_query("UPDATE magazine set pdf='$chemin' WHERE id_mag='$f_mag'");
						 if(move_uploaded_file($_FILES['pdf']['tmp_name'], $dossier . $fichier)) {
							echo "Téléchargement réussi !";
						 }
						 else echo 'Echec de l\'upload du fichier';
					}
					else echo $erreur;
			}
			if($_POST['envoyer']){
				$ok = true;
				if($f_nom == ""){echo "champ NOM vide"; $ok = false; } echo "<br/>";
				if($f_adresse == ""){echo "champ ADRESSE vide"; $ok = false; } echo "<br/>";
				if($f_lieu == ""){echo "champ LIEU vide"; $ok = false; } echo "<br/>";
				if($f_email == ""){echo "champ EMAIL vide"; $ok = false; } echo "<br/>";
				echo "test".$adresse;
			}
	  }
	  ?>
Quand je clique sur le bouton "Insérer l'annonce" après avoir uploadé un fichier, ma variable "$adresse" ne contient rien du tout, alors que je lui donne le chemin... ça doit être tout bête, peut être mes bases du PHP ne sont pas top et ça viens de la...

merci d'avance pour votre aide
Louison est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 14/07/2008, 16h41   #7
Rédacteur/Modérateur
 
Avatar de N1bus
 
Inscription : janvier 2003
Messages : 2 018
Détails du profil
Informations personnelles :
Âge : 47
Localisation : France, Charente Maritime (Poitou Charente)

Informations forums :
Inscription : janvier 2003
Messages : 2 018
Points : 1 992
Points : 1 992
Citation:
"$adresse" ne contient rien du tout, alors
Tu déclares au début du script :
N1bus est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 14/07/2008, 16h51   #8
Candidat au titre de Membre du Club
 
Inscription : février 2005
Messages : 48
Détails du profil
Informations forums :
Inscription : février 2005
Messages : 48
Points : 14
Points : 14
Envoyer un message via MSN à Louison
En effet, je l'ai déclaré comme vide en début de script, afin de pouvoir faire un test lors de l'envoi du formulaire, si un fichier a bien été uploadé ou pas...

Mais même s'il est vide au départ, lorsque je passe dans le

Code :
1
2
3
4
5
 
 if(move_uploaded_file($_FILES['pdf']['tmp_name'], $dossier . $fichier)) {
   echo "Téléchargement réussi !";
   $adresse = $dossier."".$fichier;
}
l'adresse devrait être modifiée par le chemin du fichier uploadé non ?

Edit : Excusez-moi, dans mon post précédent, j'ai oublié la ligne citée ci-dessus :
Code :
$adresse = $dossier."".$fichier
Louison est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 14/07/2008, 16h57   #9
Rédacteur/Modérateur
 
Avatar de N1bus
 
Inscription : janvier 2003
Messages : 2 018
Détails du profil
Informations personnelles :
Âge : 47
Localisation : France, Charente Maritime (Poitou Charente)

Informations forums :
Inscription : janvier 2003
Messages : 2 018
Points : 1 992
Points : 1 992
Effectivement, mais peut-etre que move_uploaded_file() n'aboutit pas ?
N1bus est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 14/07/2008, 17h02   #10
Candidat au titre de Membre du Club
 
Inscription : février 2005
Messages : 48
Détails du profil
Informations forums :
Inscription : février 2005
Messages : 48
Points : 14
Points : 14
Envoyer un message via MSN à Louison
Euh.. Non ça fonctionne toujours, j'ai tout le temps le message "Téléchargement réussi" qui apparaît. Et en faisant un echo de l'adresse juste après le "téléchargement réussi", j'ai bien le chemin qui appraît. C'est lorsque je clique sur le bouton du formulaire complet que je perds l'information..

Assez bizare, ou logique je ne sais pas.. Avez-vous d'autres solutions pour récupérer ce chemin ?

merci pour votre aide en tout cas, c'est bien gentil
Louison est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 14/07/2008, 21h28   #11
Membre régulier
 
Inscription : décembre 2006
Messages : 166
Détails du profil
Informations forums :
Inscription : décembre 2006
Messages : 166
Points : 83
Points : 83
Envoyer un message via MSN à omdafer Envoyer un message via Skype™ à omdafer
Heuu ! $dossier . $fichier sert bien à donner l'emplacement du fichier Il me semble ?!
donc il faut envoyer par mail
Code :
$urlimage = "http://monsite/".$dossier.$fichier;


Un petit conseil:
si l'utilisateur envoi des fichiers sans ce soucier si le même nom de fichier existe déjà alors tu pouura avoir droit à un fichier ecrasé, à un acces refusé ou des truc bizarre.
j'ai une methode --> ajouter time() dans le nom du fichier. Et avec cette, faut vraiment que 2 personne envoi en même temp dans la même milliseconde le même fichier por que ça foire.
omdafer est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 14/07/2008, 21h32   #12
Membre régulier
 
Inscription : décembre 2006
Messages : 166
Détails du profil
Informations forums :
Inscription : décembre 2006
Messages : 166
Points : 83
Points : 83
Envoyer un message via MSN à omdafer Envoyer un message via Skype™ à omdafer
Quelque soit la condition fait un re post de ton chemin dans un champ caché
omdafer est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 15/07/2008, 12h29   #13
Candidat au titre de Membre du Club
 
Inscription : février 2005
Messages : 48
Détails du profil
Informations forums :
Inscription : février 2005
Messages : 48
Points : 14
Points : 14
Envoyer un message via MSN à Louison
Alors pour finir j'ai laissé tombé ma première solution, qui ne vas pas je ne comprends pas trop pourquoi... J'ai pris la solution de mettre un champ caché dans le formulaire, et de sélectionner l'information à garder en fonction du bouton cliqué. Et cette fois ça fonctionne bien, c'est le principal !

merci pour votre aide !!
Louison est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 04h23.


 
 
 
 
Partenaires

Hébergement Web