Upload d'images

Résolu
Pritax Messages postés 333 Date d'inscription   Statut Membre Dernière intervention   -  
Azraka Messages postés 252 Date d'inscription   Statut Membre Dernière intervention   -
bonjour, j'ai voulu up une image, saulement une seul images s'upload et les autres non ....
Puis je n'arrive pas a les stocker dans ma base de données (stocker leur chemin relatif).
mon PHP :

<?php
$dossier = 'upload/';
$fichier = basename($_FILES['avatar']['name']);
$taille_maxi = 100000;
$taille = filesize($_FILES['avatar']['tmp_name']);
$extensions = array('.png', '.gif', '.jpg', '.jpeg');
$extension = strrchr($_FILES['avatar']['name'], '.');
//Début des vérifications de sécurité...
if(!in_array($extension, $extensions)) //Si l'extension n'est pas dans le tableau
{
$erreur = 'Vous devez uploader un fichier de type png, gif, jpg, jpeg, txt ou doc...';
}
if($taille>$taille_maxi)
{
$erreur = 'Le fichier est trop gros...';
}
if(!isset($erreur)) //S'il n'y a pas d'erreur, on upload
{
//On formate le nom du fichier ici...
$fichier = strtr($fichier,
'ÀÁÂÃÄÅÇÈÉÊËÌÍÎÏÒÓÔÕÖÙÚÛÜÝàáâãäåçèéêëìíîïðòóôõöùúûüýÿ',
'AAAAAACEEEEIIIIOOOOOUUUUYaaaaaaceeeeiiiioooooouuuuyy');
$fichier = preg_replace('/([^.a-z0-9]+)/i', '-', $fichier);

if(move_uploaded_file($_FILES['avatar']['tmp_name'], $dossier . $fichier)) //Si la fonction renvoie TRUE, c'est que ça a fonctionné...
{
echo 'Upload effectué avec succès !';
}
else //Sinon (la fonction renvoie FALSE).
{
echo 'Echec de l\'upload !';
}
}
else
{
echo $erreur;
}
?>

mon HTML :

<form method="POST" action="enregistre.php" enctype="multipart/form-data">
<!-- On limite le fichier à 100Ko -->
<input type="hidden" name="MAX_FILE_SIZE" value="100000">
Fichier : <input type="file" name="avatar">
<input type="submit" name="envoyer" value="Envoyer le fichier">
</form>

5 réponses

jeremy.s Messages postés 1226 Date d'inscription   Statut Membre Dernière intervention   79
 
Salut,

Qu'entends tu par : "Seulement une image s'upload et pas les autres" ?
Car la ton input type="file" ne contient qu'une seule image donc logique. Et tu n'as qu'un seul input. Donc une image en tout.

Sinon, pour stocker le chemin dans ton BDD, il faut faire un insert !
0
Pritax Messages postés 333 Date d'inscription   Statut Membre Dernière intervention   19
 
Nn , je peux uploader une image , exemple j'upload image A , tres bien je la vois dans upload/ , j'upload maintenant image B , ca marche pas , image C idem echec , et quand je reviens a l'image A que je la supprime ou non , ca marche . Quant au insert , je peut pas inserer l'image . Vu que c'est inspire d'un tuto je comprend pas tout sur ou est stocker mon chemin a la fin ...
0
jeremy.s Messages postés 1226 Date d'inscription   Statut Membre Dernière intervention   79
 
T'as un message d'erreur ?

Pour stocké ton chemin en BDD, un simple insert into fichier set nom image = "image A", chemin = $_FILE['avatar'][realpath] (pas sur pour le real path !)
0
Pritax Messages postés 333 Date d'inscription   Statut Membre Dernière intervention   19
 
Nn mais en faite , ce que je souhaitais faire , c'est lors de l'inscription d'une personne , il met une photo et elle est uploader dans un dossier et sur la bdd pour qu'apres je puisse lui afficher . Les deux pb que j 'ai c'est

1) comment uploader un photo ?
2) comment stocker le chemin relatif de la photo dans la bdd
3) la restitue apres ( mais ca je sais faire )
0
jeremy.s Messages postés 1226 Date d'inscription   Statut Membre Dernière intervention   79
 
Ton code la haut permet d'uploader un fichier. Donc ton 1) est fait ! (Mis à part ton problème)
Pour le 2), le chemin que tu défini es ici
if(move_uploaded_file($_FILES['avatar']['tmp_name'], $dossier . $fichier))
, ca veut dire que tu vas mettre le fichier à $dossier/$fichier, donc dans ton cas : upload/nomdufichier.png
Alors pour ce que tu veux faire, tu t'y prend un peu mal. Je m'explique :
Tu veux attribué une photo à un utilisateur, mais comment gère tu ta BDD ? As tu un champ pour stocker le chemin de l'image dans ta table utilisateur ? Ou as tu une table image ?
Dans ton cas, tu prends le nom de l'image que l'utilisateur avait sur son ordi. Je te conseil de la renommé soit avec le nom de l'utilisateur, soit son id, c'est beaucoup plus simple !
0
Pritax Messages postés 333 Date d'inscription   Statut Membre Dernière intervention   19
 
Merci de votre aide , donc oui je veux attribue une photo a un user dans ma table compte ou un champ "photo" est dispo pour accueillir un type varchar
0
jeremy.s Messages postés 1226 Date d'inscription   Statut Membre Dernière intervention   79
 
Donc dans on champ photo de ta table compte, tu vas faire un :
UPDATE compte SET photo = 'cheminVersLaPhoto.jpg' WHERE id_compte = id_compte
0
Pritax Messages postés 333 Date d'inscription   Statut Membre Dernière intervention   19
 
Je comprend pas , j'ai fait cette action mais ca marche pas . Sur le code que j'ai mis au debut , faut que je rajoute ca sur quelle parti ?
0
jeremy.s Messages postés 1226 Date d'inscription   Statut Membre Dernière intervention   79
 
A la fin. T'as bien une base de données ? Tu sais t'en servir ?
0
Pritax Messages postés 333 Date d'inscription   Statut Membre Dernière intervention   19
 
Ben j'ai creer les tables ac un fichier texte , et je voudrais que quand mon formulaire d'inscription soit remplit , la photo s'upload et le chemin se met dans la bdd dans la table compte.photo
0
jeremy.s Messages postés 1226 Date d'inscription   Statut Membre Dernière intervention   79
 
Tu as déjà trité les autres infos de connexion ? login, mdp, etc.
Si oui, alors tu les a inséré dans ta BDD non ?
Bah c'est pareil pour le chemin de l'image :)
0
Azraka Messages postés 252 Date d'inscription   Statut Membre Dernière intervention   13
 
Je ne sais pas si le problème d'upload a été finalement résolu, mais si ce n'est pas le cas : est-ce que ça ne serait pas une histoire de poids ?
Ton image A est-ce elle plus légère que les autres ?
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Pritax Messages postés 333 Date d'inscription   Statut Membre Dernière intervention   19
 
Merci de vos reponses , nn elle est plus legere mais c'est la seule en JPG c'est peut etre pour ca
0
Azraka Messages postés 252 Date d'inscription   Statut Membre Dernière intervention   13
 
Peux-tu nous donner les noms des trois fichiers que tu essaies d'uploader ?

Dans ton code il faudrait que tu passes les extensions en minuscules avant de les tester. Comme c'est fait actuellement une image en .JPG ne passera pas mais une image en .jpg oui. Ça pourrait être ton problème.

Il te suffit de faire :
$extension = strtolower(strrchr($_FILES['avatar']['name'], '.')); 
0