Chemin de li'image uploader en php dans mysql

Résolu/Fermé
Utilisateur anonyme - 4 août 2009 à 00:53
 visiteur - 29 juil. 2010 à 17:03
Bonjour a tous ,

alors voila j'ai bêtement recopier(apres avoir essuyer des echecs pendant quelques jours) un script php pour uploader des images et c'est cool ça marche. oui mais voila comme j'ai fait tout ça betement je suis coincé au moment ou je dois inscrire le chemin de l'image dans ma base de données pour pouvoir les afficher en meme temps qu'un profil alors je me suis dit que quelqu'un pourrait m'aider a identifier quelque partie de mon code et me mettre sur la voie pour cette lourde tache voici mon code et je souhaiterais savoir comment trouver la variable qui indique le chemin de la photo et comment l'indiquer a ma bdd mysql en y ajoutant le nom de la personne qui l'a envoyer grace a une variable de session merci d'avance .

page profil.php
<h3>ajouter une photo</h3>

<form method="POST" action="upload.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>

page: upload.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;
}
?>






PGC is not dead

4 réponses

Utilisateur anonyme
5 août 2009 à 00:35
merci pour cette réponse simple mais efficace , c'est vrai qu'en lisant la réponse je me suis dit que " mais c'est biensur", peut etre trop regarder se code.donc maintenant ça marche je met la fin du code si ça peu servir a quelqu'un j'ai rajouté la petite variable de session mais vous remplacer par ce que vous voulez :
a la fin de upload.php:
<?php
mysql_connect("","","");//connexion bdd
mysql_select_db("");//ça veut dire ce que ça veut dire

mysql_query("INSERT INTO images VALUES('',''".$_SESSION['prenom']."'','".$dossier.$fichier."')");//table images champ id, prenom,chemin

peut etre faut il ajouter quelque chose pour eviter de refaire une entrée dans la base de donnees en cas de rafraichissement de la page mais la je ne suis pas sur de mon coup alors je cherche encore un peu et je reviendrais faire un petit tour au cas ou quelqu'un aurait une brillante idée

voila je donnerais bien le nom de celui a qui j'ai piqué ma source mais je ne me souviens plus a qui ni ou
6
imw Messages postés 233 Date d'inscription vendredi 17 juillet 2009 Statut Membre Dernière intervention 8 septembre 2011 42
4 août 2009 à 15:18
a priori, l'adresse de l'image c'est $dossier.$fichier

il faut juste vérifier que ce soit la bonne adresse pour l'affichage
6
imw Messages postés 233 Date d'inscription vendredi 17 juillet 2009 Statut Membre Dernière intervention 8 septembre 2011 42
5 août 2009 à 08:18
tout simplement, dans ta base de donnée, tu met le champ 'chemin' en unique (ajout d'une clé unique dans phpmyadmin)
et dans ta ligne insert, tu fait : insert ignore into ...

L'intéret, c'est qu'a priori, tu ne pourra pas avoir 2 fois le même nom de fichier. Donc, on limite directement dans la base de donnée.
Le ignore, sert juste à ne pas générer d'erreur si tu insère 2 fois le même fichier (le 2eme est ignoré) ...

Pense à mettre le +1 et résolu ...
5
pour ce code page profil.php attention "$dossier = 'upload/'; " ca marche pas mais avec
$dossier=../upload/ cé parfait
0