IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage PHP Discussion :

Upload de fichiers et autres champs


Sujet :

Langage PHP

  1. #1
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Février 2005
    Messages
    48
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Février 2005
    Messages : 48
    Points : 30
    Points
    30
    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

  2. #2
    Membre actif Avatar de chtipitou
    Profil pro
    Étudiant
    Inscrit en
    Mars 2006
    Messages
    175
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mars 2006
    Messages : 175
    Points : 214
    Points
    214
    Par défaut
    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

  3. #3
    Expert confirmé
    Avatar de Thes32
    Homme Profil pro
    Développeur PHP, .Net, T-SQL
    Inscrit en
    Décembre 2006
    Messages
    2 379
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations professionnelles :
    Activité : Développeur PHP, .Net, T-SQL

    Informations forums :
    Inscription : Décembre 2006
    Messages : 2 379
    Points : 4 853
    Points
    4 853
    Par défaut
    salut,
    peux tu montrer ton code ?

  4. #4
    Expert confirmé
    Avatar de N1bus
    Homme Profil pro
    Dev. Web & OpenERP
    Inscrit en
    Janvier 2003
    Messages
    2 827
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France, Seine et Marne (Île de France)

    Informations professionnelles :
    Activité : Dev. Web & OpenERP
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Janvier 2003
    Messages : 2 827
    Points : 5 673
    Points
    5 673
    Par défaut
    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.

  5. #5
    Membre habitué
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    209
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2006
    Messages : 209
    Points : 167
    Points
    167
    Par défaut
    Sinon tu effectue ton action sur la même page :

    du genre :
    Si champ1 ok & champ2 ok...
    alors execute
    sinon champ1=valduchamp1 ...

  6. #6
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Février 2005
    Messages
    48
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Février 2005
    Messages : 48
    Points : 30
    Points
    30
    Par défaut
    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    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

  7. #7
    Expert confirmé
    Avatar de N1bus
    Homme Profil pro
    Dev. Web & OpenERP
    Inscrit en
    Janvier 2003
    Messages
    2 827
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France, Seine et Marne (Île de France)

    Informations professionnelles :
    Activité : Dev. Web & OpenERP
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Janvier 2003
    Messages : 2 827
    Points : 5 673
    Points
    5 673
    Par défaut
    "$adresse" ne contient rien du tout, alors
    Tu déclares au début du script :

  8. #8
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Février 2005
    Messages
    48
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Février 2005
    Messages : 48
    Points : 30
    Points
    30
    Par défaut
    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    $adresse = $dossier."".$fichier

  9. #9
    Expert confirmé
    Avatar de N1bus
    Homme Profil pro
    Dev. Web & OpenERP
    Inscrit en
    Janvier 2003
    Messages
    2 827
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France, Seine et Marne (Île de France)

    Informations professionnelles :
    Activité : Dev. Web & OpenERP
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Janvier 2003
    Messages : 2 827
    Points : 5 673
    Points
    5 673
    Par défaut
    Effectivement, mais peut-etre que move_uploaded_file() n'aboutit pas ?

  10. #10
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Février 2005
    Messages
    48
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Février 2005
    Messages : 48
    Points : 30
    Points
    30
    Par défaut
    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

  11. #11
    Membre habitué
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    209
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2006
    Messages : 209
    Points : 167
    Points
    167
    Par défaut
    Heuu ! $dossier . $fichier sert bien à donner l'emplacement du fichier Il me semble ?!
    donc il faut envoyer par mail
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $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.

  12. #12
    Membre habitué
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    209
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2006
    Messages : 209
    Points : 167
    Points
    167
    Par défaut
    Quelque soit la condition fait un re post de ton chemin dans un champ caché

  13. #13
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Février 2005
    Messages
    48
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Février 2005
    Messages : 48
    Points : 30
    Points
    30
    Par défaut
    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 !!

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [2.x] Upload des fichiers dans plusieurs champs dans le même formulaire
    Par aitiahcene dans le forum Symfony
    Réponses: 1
    Dernier message: 15/06/2012, 12h53
  2. [PostgreSQL] [PostGreSQL] Comment uploader un fichier dans une champ binaire ?
    Par Ekimasu dans le forum PHP & Base de données
    Réponses: 3
    Dernier message: 13/06/2008, 16h39
  3. Uploader un fichier sur un autre serveur
    Par sktru dans le forum ASP
    Réponses: 8
    Dernier message: 26/02/2008, 12h34
  4. Uploader un fichier d'un autre site
    Par FoxDeltaSierra dans le forum ASP.NET
    Réponses: 3
    Dernier message: 22/04/2007, 17h00
  5. [FTP] Comment uploader un fichier d'un répertoire à l'autre ?
    Par Devil666 dans le forum Entrée/Sortie
    Réponses: 6
    Dernier message: 08/07/2005, 10h17

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo