Précédent   Forum des professionnels en informatique > PHP > Langage > Débuter
Débuter Forum d'entraide pour débuter en PHP. Avant de poster -> Cours PHP, FAQ PHP, Outils PHP, etc.
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 26/01/2011, 23h37   #1
Membre à l'essai
 
yoni
Inscription : février 2010
Messages : 110
Détails du profil
Informations personnelles :
Nom : yoni

Informations forums :
Inscription : février 2010
Messages : 110
Points : 22
Points : 22
Par défaut Upload de fichier en php

Bonjour,

Voila j'essaie de comprendre l'upload de fichier en php mais j'ai beau lire pas mal de tuto impossible de la mettre en oeuvre , pourtant j'ai utilisé un upload trés basique ...

index.html

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
 
<html>
<body>
 
<form action="auth.php" method="post" enctype="multipart/form-data">
Pseudo <input type="text" name="pseudo"><br />
Password <input type="password" name="pass"><br />
Chanson <input type="file" name="chanson"><br />
<input type="submit" value="valider"></ br>
</form>
 
</body>
</html>
auth.php

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
<?php
if ( isset($_FILES['chanson']) && isset($_FILES['pseudo']) && isset($_FILES['pass']) )
{
 
		$dossier = '/test/';
		$fichier = basename($_FILES['chanson']['name']);
		if(move_uploaded_file($_FILES['chanson']['tmp_name'], $dossier . $fichier)) 
    		{
 
 
			$serveur="sql.free.fr";
			$user="xxxxxxx";
			$passw="xxxxxx";
 
			mysql_connect($serveur,$user,$passw);
			mysql_select_db($user);
 
			$pseudo=htmlentities(mysql_real_escape_string($_POST['pseudo']));	
			$pass=htmlentities(mysql_real_escape_string($_POST['pass']));
			$chanson=htmlentities(mysql_real_escape_string($_POST['chanson']));	
 
			mysql_query("INSERT INTO membre (pseudo,pass,email) VALUES ('$pseudo','$pass')");
			mysql_query("INSERT INTO chanson_membre (chanson) VALUES ('$chanson')");	
			mysql_close();
		}
 
}
?>
Voila impossible de trouver l'erreur ...

Merci à vous
boubz013 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 27/01/2011, 00h00   #2
Modérateur
 
Avatar de Benjamin Delespierre
 
Benjamin Delespierre
Développeur Web
Inscription : février 2010
Messages : 2 984
Détails du profil
Informations personnelles :
Nom : Benjamin Delespierre
Âge : 24
Localisation : France

Informations professionnelles :
Activité : Développeur Web
Secteur : High Tech - Opérateur de télécommunications

Informations forums :
Inscription : février 2010
Messages : 2 984
Points : 5 015
Points : 5 015
Hello

Code :
1
2
 
$dossier = '/test/';
T'as vraiment un dossier test à la racine de ton serveur ?
Et si tu remplaçait par ./test ?
__________________
A la recherche d'un framework MVC facile a prendre en main ? Essayez Axiom
Nouveau: la référence d'Axiom est disponible sur GitHub (je la peaufine en ce moment même).

Un problème correctement identifié est à moitié résolu, évitez de poster l'intégralité de votre code avec pour seule explication "ça ne marche pas...".
Pour identifier correctement vos problèmes PHP, utilisez la gestion des erreurs et xdebug.

Les boutons et existent, servez-vous en
Benjamin Delespierre est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 27/01/2011, 00h22   #3
Membre à l'essai
 
yoni
Inscription : février 2010
Messages : 110
Détails du profil
Informations personnelles :
Nom : yoni

Informations forums :
Inscription : février 2010
Messages : 110
Points : 22
Points : 22
J'ai essayé mais en réalité il y a un probléme qui se pose :

Le fait que je mette dans le form enctype="multipart/form-data" m'empeche d'enregistrer dans ma BDD les informations donc le seul moyen c'est de l'enlever mais si je l'enléve je ne peux plus uploader ...

Comment faire ?
boubz013 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 27/01/2011, 00h41   #4
Modérateur
 
Avatar de Benjamin Delespierre
 
Benjamin Delespierre
Développeur Web
Inscription : février 2010
Messages : 2 984
Détails du profil
Informations personnelles :
Nom : Benjamin Delespierre
Âge : 24
Localisation : France

Informations professionnelles :
Activité : Développeur Web
Secteur : High Tech - Opérateur de télécommunications

Informations forums :
Inscription : février 2010
Messages : 2 984
Points : 5 015
Points : 5 015
Citation:
Le fait que je mette dans le form enctype="multipart/form-data" m'empeche d'enregistrer dans ma BDD


Tiens pendant que j'y pense $_POST['chanson'] ce serait pas $_FILES['chanson']['name'] plutôt ?
__________________
A la recherche d'un framework MVC facile a prendre en main ? Essayez Axiom
Nouveau: la référence d'Axiom est disponible sur GitHub (je la peaufine en ce moment même).

Un problème correctement identifié est à moitié résolu, évitez de poster l'intégralité de votre code avec pour seule explication "ça ne marche pas...".
Pour identifier correctement vos problèmes PHP, utilisez la gestion des erreurs et xdebug.

Les boutons et existent, servez-vous en
Benjamin Delespierre est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 27/01/2011, 01h05   #5
Membre Expert
 
Avatar de Eric2a
 
Homme Eric Garidacci
Inscription : septembre 2005
Messages : 1 057
Détails du profil
Informations personnelles :
Nom : Homme Eric Garidacci
Âge : 41

Informations forums :
Inscription : septembre 2005
Messages : 1 057
Points : 1 564
Points : 1 564
Salut,

Le pseudo et le mot de passe sont placés dans le tableaux $_POST.

Code :
if ( isset($_FILES['chanson']) && isset($_POST['pseudo']) && isset($_POST['pass']) )
Citation:
Envoyé par Benjamin Delespierre
$_POST['chanson'] ce serait pas $_FILES['chanson']['name'] plutôt ?
Oui bien vu. Ce qui donne...
Code :
$chanson=htmlentities(mysql_real_escape_string($fichier));
au lieu de...
Code :
$chanson=htmlentities(mysql_real_escape_string($_POST['chanson']));
__________________

N'oubliez pas le vote des messages utiles ainsi que le Tag [Résolu].

Mon Site Web : Corse - Actualité, Météo, Vidéos, Logiciels, ...
Eric2a est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 27/01/2011, 11h20   #6
Membre à l'essai
 
yoni
Inscription : février 2010
Messages : 110
Détails du profil
Informations personnelles :
Nom : yoni

Informations forums :
Inscription : février 2010
Messages : 110
Points : 22
Points : 22
Bonjour,

Voila j'ai modifié mes erreurs mais je retrouve néanmoins toujours le même problème :
  • Aucun enregistrement dans la BDD
  • Aucun fichier uploadé

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
<html>
 
<body>
 
<form action="auth.php" method="post" enctype="multipart/form-data">
 
Pseudo <input type="text" name="pseudo"><br />
Password <input type="password" name="pass"><br />
email<input type="text" name="email"><br />
fiche <input type="file" name="fiche1"><br />
<input type="submit" value="valider"></ br>
</form>
 
</body>
</html>

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
<?php
if ( isset($_FILE['fiche1']) && isset($_POST['pseudo']) && isset($_POST['pass']) &&  isset($_POST['email']))
{
 
 	$dossier = './test13/';
	$fichier = basename($_FILES['fiche1']['name']);
	move_uploaded_file($_FILES['fiche1']['tmp_name'], $dossier . $fichier);
 
	$serveur="sql.free.fr";
	$user="xxxxxxx";
	$passwd="xxxxxxxxxx";
 
	mysql_connect($serveur,$user,$passwd);
	mysql_select_db($user);
 
	$pseudo=htmlentities(mysql_real_escape_string($_POST['pseudo']));
	$email=htmlentities(mysql_real_escape_string($_POST['email']));	
	$pass=htmlentities(mysql_real_escape_string($_POST['pass']));
	$fiche1=htmlentities(mysql_real_escape_string($fichier));	
 
	mysql_query("INSERT INTO membre (id,pseudo,pass,email) VALUES ('','$pseudo','$pass','$email')");
	mysql_query("INSERT INTO fiche_membre (id,fiche1) VALUES ('','$fiche1')");	
	mysql_close();
 
 
}
?>
Merci à vous
boubz013 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 01/02/2011, 15h59   #7
Membre du Club
 
Inscription : mars 2007
Messages : 51
Détails du profil
Informations forums :
Inscription : mars 2007
Messages : 51
Points : 42
Points : 42
Salut

je te conseille d'aller faire un tour sur la documentation php pour l'upload de fichiers
http://php.net/manual/fr/features.file-upload.php
et peut-être aussi de ce côté là
http://fr.php.net/manual/fr/function...-select-db.php

ensuite il est bon de debugger avec un petit var_dump()

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
36
37
38
39
40
41
 
<?php
if ( isset($_POST['valider']))
{
    var_dump($_POST, $_FILES);
 
    $dossier = realpath(dirname(__file__)).'/test13/';
    $fichier = basename($_FILES['fiche1']['name']);
    move_uploaded_file($_FILES['fiche1']['tmp_name'], $dossier . $fichier);
 
    $serveur="sql.free.fr";
    $user="xxxxxxx";
    $passwd="xxxxxxxxxx";
 
    mysql_connect($serveur,$user,$passwd);
    mysql_select_db($user);
 
    $pseudo=htmlentities(mysql_real_escape_string($_POST['pseudo']));
    $email=htmlentities(mysql_real_escape_string($_POST['email']));    
    $pass=htmlentities(mysql_real_escape_string($_POST['pass']));
    $fiche1=htmlentities(mysql_real_escape_string($fichier));    
 
    mysql_query("INSERT INTO membre (id,pseudo,pass,email) VALUES ('','$pseudo','$pass','$email')");
    mysql_query("INSERT INTO fiche_membre (id,fiche1) VALUES ('','$fiche1')");    
    mysql_close();
 
}
?>
<html>
<body>
 
<form action="" method="post" enctype="multipart/form-data">
Pseudo <input type="text" name="pseudo" /><br />
Password <input type="password" name="pass" /><br />
email <input type="text" name="email" /><br />
fiche <input type="file" name="fiche1" /><br />
<input type="submit" name="valider" value="valider" /><br />
</form>
 
</body>
</html>
christoff est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 01/02/2011, 16h29   #8
Modérateur
 
Inscription : septembre 2010
Messages : 7 101
Détails du profil
Informations forums :
Inscription : septembre 2010
Messages : 7 101
Points : 8 466
Points : 8 466
et de pas mettre de htmlentities dans ta base aussi
__________________
http://blog.stealth35.com/
stealth35 est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



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


 
 
 
 
Partenaires

Hébergement Web