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] Upload + ajout de données dans le même formulaire


Sujet :

Langage PHP

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Inscrit en
    Mai 2006
    Messages
    14
    Détails du profil
    Informations forums :
    Inscription : Mai 2006
    Messages : 14
    Par défaut [Upload] Upload + ajout de données dans le même formulaire
    Bonsoir, je cherche une solution pour uploader une image et par la suite récupérer son nom pour l'ajouter dans mysql. Dans ce code deux 'submit' sont présents, et en cliquant sur 'Uploader' j'obtiens l'ajout dans mysql...
    Serait-il possible de me donner une solution pour réunir ces deux fichiers en un seul, cela éviterait d'ouvrir upload.php dans _blank (c'est ma question secondaire ).

    Merci d'avance !

    Désolé si je me suis mal exprimé, c'est la fatigue... Il serait temps d'aller au lit

    Voici les sources de vente-ajouter.html et upload.php

    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
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    <html>
    	<form method="POST" action="vente-ajouter.php">
    		<center>
    			<table>
    				<tbody>
    					<form id="vente" name="vente" method="post" action="vente-ajouter.php">
    						<tr>
    							<td><label>constructeur</td>
    							<td><input type="text" name="constr"></td>
    							</label>
    						</tr>
    						<tr>
    							<td><label>modèle</td>
    							<td><input type="text" name="model"></td>
    							</label>
    						</tr>
    						<tr>
    							<td><label>type</td>
    							<td><input type="text" name="typ"></td>
    							</label>
    						</tr>
    						<tr>
    							<td><label>nbr portes</td>
    							<td><input type="text" name="npo"></td>
    							</label>
    						</tr>
    						<tr>
    							<td><label>km</td>
    							<td><input type="text" name="km"></td>
    							</label>
    						</tr>
    						<tr>
    							<td><label>millésime</td>
    							<td><input type="text" name="mil"></td>
    							</label>
    						</tr>
    						<tr>
    							<td><label>date première immatriculation</td>
    							<td><input type="text" name="primm"></td>
    							</label>
    						</tr>
    						<tr>
    							<td><label>garantie</td>
    							<td><input type="text" name="gar"></td>
    							</label>
    						</tr>
    						<tr>
    							<td><label>équipement de sécurité</td>
    							<td><input type="text" name="esecu"></td>
    							</label>
    						</tr>
    						<tr>
    							<td><label>nbr de prop précédents</td>
    							<td><input type="text" name="npp"></td>
    							</label>
    						</tr>
    						<tr>
    							<td><label>cylindrée</td>
    							<td><input type="text" name="cyl">cm3</td>
    							</label>
    						</tr>
    						<tr>
    							<td><label>puissance fiscale</td>
    							<td><input type="text" name="pfi">ch</td>
    							</label>
    						</tr>
    						<tr>
    							<td><label>boîte de vitesse</td>
    							<td><input type="text" name="bvit"></td>
    							</label>
    						</tr>
    						<tr>
    							<td><label>couleur</td>
    							<td><input type="text" name="coul"></td>
    							</label>
    						</tr>
    						<tr>
    							<td><label>options</td>
    							<td><input type="text" name="opt"></td>
    							</label>
    						</tr>
    						<tr>
    							<td><label>commentaires</td>
    							<td><input type="text" name="com"></td>
    							</label>
    						</tr>
    						<tr>
    							<td><label>prix</td>
    							<td><input type="text" name="prix">euros</td>
    							</label>
    						</tr>
    						<tr>
    							<td><label>afficher</td>
    							<td><input type="checkbox" name="aff"></td>
    							</label>
    						</tr>
    						<tr>
    							<td><label>vendu</td>
    							<td><input type="checkbox" name="vdu"></td>
    							</label>
    						</tr>
    						<tr>
    							<td><label>photo</td>
    							<td>
    							<form id="up" name="up" method="post" enctype="multipart/form-data" action="upload.php" target="_blank">
    								<input type="file" name="pho" size="50">
    								<input type="submit" value="Uploader" id="up" name="up">
    							</form>
    							</td>
    							</label>
    						</tr>
    						<input type="submit" value="Ajouter" name="ajouter">
    						<input type="reset" value="Réinitialiser" name="reinitialiser">
    					</form>
    				</tbody>
    			</table>
    		</center>
    	</form>
    </html>
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    <html>
    <?php
    	$repertoire = 'img/';
    	if (move_uploaded_file($_FILES['userfile']['tmp_name'], $repertoire.$_FILES['userfile']['name'])){
    		echo 'Le fichier '.$_FILES['userfile']['name'].' a été envoyé avec succès dans '.$repertoire;
    	}
    ?>
    </html>

  2. #2
    Membre Expert

    Profil pro
    Inscrit en
    Août 2002
    Messages
    1 060
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2002
    Messages : 1 060
    Par défaut
    Bonjour,

    Sur la forme, outre l'absence des éléments 'head' et 'body', l'ensemble du code html de cette page est invalide :
    - les formulaires imbriqués sont interdits,
    - ceci est incorrect :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    <tr>
      <td><label>constructeur</td>
      <td><input type="text" name="constr"></td>
      </label>
    </tr>
    car les éléments 'label' sont mal imbriqués.
    ce devrait être :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    <tr>
      <td>
        <label for="constr">constructeur</label>								  </td>
      <td><input type="text" name="constr" id="constr"></td>
    </tr>
    Sur le fond, pourquoi 3 formulaires ? Un seul est suffisant pour envoyer les infos et la photo, et 'vente-ajouter.php' peut effectuer l'ensemble du travail de réception :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    <form method="post" name="vente" action="vente-ajouter.php" enctype="multipart/form-data">

  3. #3
    Membre averti
    Inscrit en
    Mai 2006
    Messages
    14
    Détails du profil
    Informations forums :
    Inscription : Mai 2006
    Messages : 14
    Par défaut
    Pour les éléments 'label', j'ai copié le code de Dreamweaver

    J'avais déjà essayé d'envoyer l'intégralité avec un formulaire, mais ça ne fonctionne pas

    Voici le code source actuel :

    vente-ajouter.html
    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
    <html>
    	<form method="POST" action="vente-ajouter.php">
    		<center>
    			<table>
    				<tbody>
    					<form method="post" name="vente" action="vente-ajouter.php" enctype="multipart/form-data">
     
    ...
     
    						<tr>
    							<td><label>photo</td>
    							<td><input type="file" name="pho" size="50"></td>
    							</label>
    						</tr>
    						<input type="submit" value="Ajouter" name="ajouter">
    						<input type="reset" value="Réinitialiser" name="reinitialiser">
    					</form>
    				</tbody>
    			</table>
    		</center>
    	</form>
    </html>
    vente-ajouter.php
    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
    <?php
    	//Upload de l'image
    	include('upload.php');
     
    	//Récuperation des champs du formulaire
    	include('conv-form-var.php');
     
    	//Connexions
    	include('connexion.php');
     
    	//Requête sql
    	$sql = "INSERT INTO vente(id,constr,model,typ,npo,km,mil,primm,gar,esecu,npp,cyl,pfi,bvit,coul,opt,com,prix,aff,vdu,pho) VALUES('','$constr','$model','$typ','$npo','$km','$mil','$primm','$gar','$esecu','$npp','$cyl','$pfi','$bvit','$coul','$opt','$com','$prix','$aff','$vdu','$pho')";
     
    	//Insertion de la requête dans mysql
    	mysql_query($sql) or die(mysql_error());
     
    	echo 'Ajouté';
     
    	//Ferméture de mysql
    	mysql_close();
    ?>
    upload.php
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    <?php
    	$repertoire = 'img/';
    	if (move_uploaded_file($_FILES['userfile']['tmp_name'], $repertoire.$_FILES['userfile']['name'])){
    		echo 'Le fichier '.$_FILES['userfile']['name'].' a été envoyé avec succès dans '.$repertoire;
    	}
    ?>
    Et enfin l'erreur
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    Notice: Undefined index: userfile in c:\program files\easyphp1-8\www\admin\upload.php on line 3
     
    Notice: Undefined index: userfile in c:\program files\easyphp1-8\www\admin\upload.php on line 3
    Ajouté

  4. #4
    Membre Expert Avatar de Amara
    Profil pro
    Inscrit en
    Juillet 2004
    Messages
    2 688
    Détails du profil
    Informations personnelles :
    Localisation : France, Sarthe (Pays de la Loire)

    Informations forums :
    Inscription : Juillet 2004
    Messages : 2 688
    Par défaut
    Pour les éléments 'label', j'ai copié le code de Dreamweaver
    Sacrilège


    l'erreur est explicite, $_FILES['userfile'] n'existe pas pour upload.php, il faut chercher par là

  5. #5
    Membre averti
    Inscrit en
    Mai 2006
    Messages
    14
    Détails du profil
    Informations forums :
    Inscription : Mai 2006
    Messages : 14
    Par défaut
    Merci pour vos réponses

    Pourquoi sacrilège ? Je comprends par là qu'il vaut mieux que j'apprenne HTML, mais c'est un problème de temps, je suis en stage et j'ai des délais à respecter.

    J'ai modifier le code du fichier upload.php

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    <?php
    	$repertoire = 'img/';
    	if (move_uploaded_file($_FILES['pho']['tmp_name'], $repertoire.$_FILES['pho']['name'])){
    		echo 'Le fichier '.$_FILES['pho']['name'].' a été envoyé avec succès dans '.$repertoire;
    	}
    ?>
    ça ne marche toujours pas avec le formulaire vente-ajouter.html, j'ai donc créé une page (ul.html), voici son code :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    <form method="post" enctype="multipart/form-data" action="upload.php">
        <input type="file" name="pho" size="50">
        <br>
        <input type="submit" value="Envoi">
    </form>
    De cette manière, ça fonctionne parfaitement...

    Excusez-moi si c'est une erreur bête, mais j'ai débuté PHP la semaine dernière

  6. #6
    Membre averti
    Inscrit en
    Mai 2006
    Messages
    14
    Détails du profil
    Informations forums :
    Inscription : Mai 2006
    Messages : 14
    Par défaut
    up...

Discussions similaires

  1. Ajout de données dans un sous-formulaire
    Par yusukevsluffy dans le forum IHM
    Réponses: 6
    Dernier message: 25/10/2013, 17h46
  2. [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, 11h53
  3. Réponses: 3
    Dernier message: 22/10/2008, 08h33
  4. Ajout de donnée dans un sous-formulaire
    Par Papy_Bro dans le forum VBA Access
    Réponses: 16
    Dernier message: 07/05/2008, 09h57
  5. Réponses: 5
    Dernier message: 23/02/2007, 15h56

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