[PHP] Enregistrement d'un champ type 'file'
juliekomi
Messages postés
6
Statut
Membre
-
Alain_42 Messages postés 5413 Statut Membre -
Alain_42 Messages postés 5413 Statut Membre -
Bonjour,
Voici mon code avec commentaires :
fichier d'interface (formulaire où je charge mon fichier type 'file')
fichier de traitement (où je reçois les données du formulaire)
Le problème : on dirait que mon fichier de traitement ne récupère pas la donnée type 'file' et donc on ne rentre pas dans le 'if' qui permet d'enregistrer le fichier.
--
Pouvez vous me dire d'où cela provient?
Merci de votre aide, espérant avoir été claire et pas trop vague. Je suis very novice!
Voici mon code avec commentaires :
fichier d'interface (formulaire où je charge mon fichier type 'file')
<?php // accès direct interdit
defined('RACINE') or die('accès direct interdit');
?>
<form action="traitements/inserer.php" method="post" enctype='multipart/form-data'>
<table>
<tr>
<th>Description</th>
<td><input type='text' name='description'/></td>
</tr>
<tr>
<th>Photo 1</th>
<td><input type='file' name='photo'/></td>
</tr>
<!--<tr>
<td>Photo 2</td>
<td><input type='file' name='photo2'/></td>
</tr>-->
</table>
<tr>
<td>Pour enregister :</td>
<td><INPUT type="submit" value="Click click !"></td>
</tr>
</form>
fichier de traitement (où je reçois les données du formulaire)
<?php
//on definit la constante 'RACINE' :
define('RACINE', '../../../');
require(RACINE.'modules/admin/parametres/autorisation_admin.php');
//require(RACINE.'modules/admin/parametres/fonctions.php');
// on récupère les variables crée dans le formulaire
if (isset($_FILES["photo"])) $photo=$_FILES["photo"]; else $photo='';
//if (isset($_FILES["photo2"])) $photo2=$_FILES["photo2"]; else $photo2='';
if (isset($_POST ["description"])) $description=$_POST["description"]; else $description='';
//on enregistre la photo sur le serveur si elle existe:
if(isset($photo) && is_uploaded_file($photo['tmp_name']))
{
//on crée le nom du fichier
$photo_name=$photo['name'];
//on écrit le fichier sur le serveur
$origine=$photo['tmp_name'];
$destination=dirname($_SERVER['SCRIPT_FILENAME']).'/../images/'.$photo_name;
move_uploaded_file($origine,$destination);
}
else
{
$photo_name='visiteur.jpg';
}
//on se connecte à la base de données en appelant la connexion:
require(RACINE.'parametres/connexion.php');
//on indique la requête SQL désirée:
$sql="INSERT INTO colliers(photo,description) VALUES ('$photo_name','$description')";
// ça donne un resultat :
mysql_query($sql);
//fermeture de la connexion
mysql_close($liendb);
//on retourne versla page afficher:
header("Location:".RACINE."composants/colliers/afficher.php");
echo $sql;
?>
Le problème : on dirait que mon fichier de traitement ne récupère pas la donnée type 'file' et donc on ne rentre pas dans le 'if' qui permet d'enregistrer le fichier.
--
Pouvez vous me dire d'où cela provient?
Merci de votre aide, espérant avoir été claire et pas trop vague. Je suis very novice!
A voir également:
- [PHP] Enregistrement d'un champ type 'file'
- .Dat file - Guide
- Host file - Guide
- .Bin file - Guide
- Iso file - Guide
- File renamer - Télécharger - Gestion de fichiers
11 réponses
oui ce se que je pense si non tu crée un variable $photo=$_FILES["photo"]["name"] et ensuite tu peut just utiliser $photo["name"] ou $photo["tmp_name"], $photo["size"]..
j'ai essayé de mettre $_FILES['photo']['name'] à la place de $_FILES['photo'] mais ça ne marche pas non plus. je ne comprends pas pourquoi le traitement arrive à récupérer le $_POST['description'] et pas le $_FILES['photo'] !
:-(
:-(
Merci scriptiz.
Je suis le tutoriel, comment puis je : "Première chose à faire, vérifier que l'opération s'est bien passée en vérifiant la présence du fichier dans le dossier temporaire; pour cela, nous avons à notre disposition la fonction is_uploaded_file(). " ? Je ne sais pas comment utiliser la fonction pr vérifier?
Je suis le tutoriel, comment puis je : "Première chose à faire, vérifier que l'opération s'est bien passée en vérifiant la présence du fichier dans le dossier temporaire; pour cela, nous avons à notre disposition la fonction is_uploaded_file(). " ? Je ne sais pas comment utiliser la fonction pr vérifier?
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
Lis le tuto en entier il y a un exemple de code où il montre comment utiliser le is_uploaded_file() plus bas.
En gros lit tout 2-3 fois avant de poser des questions ^^
En gros lit tout 2-3 fois avant de poser des questions ^^
vérifiant la présence du fichier dans le dossier temporaire
tu faire echo $_FILE['photo']['tmp_name']
si le nom s'affiche (.tmp) c'est a dire que le chargement a été bel et bien effectué, si non..
J'ai vérifié, l'upload ne se fait pas. Je ne comprends vraiment pas pourquoi alors que le $_POST passe sans souci!
qqs commentaires et rectifssur une partie de ton code:
// on récupère les variables crée dans le formulaire
if (isset($_FILES["photo"])) $photo=$_FILES["photo"]; else $photo='';
//if (isset($_FILES["photo2"])) $photo2=$_FILES["photo2"]; else $photo2='';
if (isset($_POST ["description"])) $description=$_POST["description"]; else $description='';
//on enregistre la photo sur le serveur si elle existe:
///////if(isset($photo) && is_uploaded_file($photo['tmp_name']))
//la tu testes si la variable $photo existe hors elle existe dans tous les cas puisque 3 lignes plus haut tu lui donnes une valeur par defaut même si $_FILES n'existe pas
//donc mets plutot:
if($photo!='' && is_uploaded_file($photo['tmp_name']))
{
//on crée le nom du fichier
$photo_name=$photo['name'];
//on écrit le fichier sur le serveur
$origine=$photo['tmp_name'];
$destination=dirname($_SERVER['SCRIPT_FILENAME']).'/../images/'.$photo_name;
////// move_uploaded_file($origine,$destination); //la d'ou vient $destination ?
move_uploaded_file($origine,$photo_name);
}
else
{
$photo_name='visiteur.jpg'; //la je ne vois pas ce que tu en fait après
}
alain_42, merci de prendre le temps de me lire !
donc le $destination est défini ici :
et après je dis que si le $photo existe pas et qu'il est pas uploadé dans le 'tmp_name' alors je l'appelle visiteur.jpg.
je sais pas si c'est très clair, je ne fais que recopier ce qu'on m'apprend en cours.
donc le $destination est défini ici :
$destination=dirname($_SERVER['SCRIPT_FILENAME']).'/../images/'.$photo_name;
et après je dis que si le $photo existe pas et qu'il est pas uploadé dans le 'tmp_name' alors je l'appelle visiteur.jpg.
je sais pas si c'est très clair, je ne fais que recopier ce qu'on m'apprend en cours.
houps excuses j'avais pas vu $destination deux lignes au dessus
mais la variable $phot_name chargée par défaut plus bas ne sera pas prises en compte dans $destination
mais la variable $phot_name chargée par défaut plus bas ne sera pas prises en compte dans $destination
Je t'invite à suivre ce tutoriel :
http://phpcodeur.net/articles/php/upload
Ainsi tu auras tous les détails pour réussir ton upload.
http://phpcodeur.net/articles/php/upload
Ainsi tu auras tous les détails pour réussir ton upload.