Upload d'image et post de commentaire lié avec mysql

Signaler
Messages postés
22
Date d'inscription
lundi 22 mai 2006
Statut
Membre
Dernière intervention
20 décembre 2008
-
Messages postés
22
Date d'inscription
lundi 22 mai 2006
Statut
Membre
Dernière intervention
20 décembre 2008
-
Bonjour à tous ceux qui liront ce petit bout de texte,

Voilà je souhaite créer une page qui permettra à mes visiteurs d'upload une image et ensuite de laisser un commentaire lié à cette image.

Pour l'instant j'ai un script PHP qui upload l'image dans un dossier sur mon serveur.
Ensuite j'ai un autre script PHP qui parcour ce dossier et qui affiche les images trouvées.
Pour l'histoire du commentaire j'ai créer un script qui crée une table portant le nom du fichier uploadé avec comme champs "id" et "commentaire". Le problème c'est que je n'arrive pas à afficher le bon commentaire en face de la bonne image.

Quelqun à une idée, une autre solution ?

On m'a parlé de créé un script qui insèrerai les infos de mon image dans une base mysql puis pour l'affichage il suffirai d'afficher ce que contient la base mysql. Mais je ne voit pas comment.

Merci

10 réponses

Messages postés
138
Date d'inscription
vendredi 28 février 2003
Statut
Membre
Dernière intervention
29 février 2008

Salut,

La meilleure solution d'apres moi est de créer une table de ce genre : "id_image","chemin_image","commentaire" et a chaque fois qu'un visiteur upload une image, tu enregistres dans la table les info de cette image : "chemin_image" correspond au chemin de l'image sur le serveur; "commentaire" correspond au commentaire laissé par le visiteur.

Apres le tout est de savoir si il peut y avoir plusieurs commentaires pour une meme image ou pas.
Dans ce cas il faudrai créé une autre table.
Messages postés
233
Date d'inscription
jeudi 4 juillet 2002
Statut
Membre
Dernière intervention
5 juillet 2008

si plusieurs commentaires :

tbl_images :
--------------
id : unsigned int autoincrement primarykey   -- id unique de l'image
titre : varchar(255) not null                           -- titre le l'image
chemin : varchar(255)                                   -- chemin du fichier uploadé

tbl_commentaires :
-------------------------
id : unsigned int autoincrement primarykey   -- id unique du commentaire (pratique pour supprimer)
image_id : unsigned int                                 -- clé étrangere vers id de tbl_images
auteur : varchar(255)                                    -- auteur du commentaire
texte : text                                                      -- texte du commentaire
...

++
Messages postés
22
Date d'inscription
lundi 22 mai 2006
Statut
Membre
Dernière intervention
20 décembre 2008

Merci beaucoup à vous deux, ça m'aide énormement surtout le coup de la clé etrangère (j'avais completement oublié). Sinon je vais tester et je vous tiens au courant.

Merci beaucoup
Messages postés
22
Date d'inscription
lundi 22 mai 2006
Statut
Membre
Dernière intervention
20 décembre 2008

Bon j'avance à grand pas le seul "ique" c'est que je n'arrive pas à afficher l'image.
J'ai deux tables : images et commentaire
Lors de l'upload j'inscrit dans la table images l'id (auto increment), le titre et le chemin ou elle se trouve (ex: http://site.fr/image/fichier.jpg) puis en parallele dans la table commentaire j'inscrit l'id, le commentaire et l'auteur.

Ensuite pour l'affichage je fait un select dont je met les infos récuperées dans un tableau avec mysql_fetch_array et ensuite j'affiche via un truc du genre echo $donnees['commentaire'];
Or l'affichage de l'imaqe ne fonctionne pas puisqu'il affiche la reference de la case du tableau.

SOS

Encore merci
Messages postés
22
Date d'inscription
lundi 22 mai 2006
Statut
Membre
Dernière intervention
20 décembre 2008

C'est bon j'ai corrigé le problème, il suffisait de définir une variable intermédiaire.
Messages postés
22
Date d'inscription
lundi 22 mai 2006
Statut
Membre
Dernière intervention
20 décembre 2008

Encore un soucis :

Comment afficher tous les commentaires sans pour autant afficher plusieurs fois l'image ?
Car les commentaires ont un id différents, seul l'image_id (clé etrangère se rapportant à l'id de la table images) est identique.
Messages postés
233
Date d'inscription
jeudi 4 juillet 2002
Statut
Membre
Dernière intervention
5 juillet 2008

fait rapido ça donnerait un truc du genre ...

// connect
//...

// requetes
$result = mysql_query("SELECT id,titre ,chemin FROM tbl_image;");
while ($row = mysql_fetch_row($result))
{

   // affiche l'image
   echo "
";

   $result2 = mysql_query("SELECT texte,auteur FROM tbl_commentaires WHERE image_id=$row[0];");
   while ($row2 = mysql_fetch_row($result2))
   {
      // ecrit le commentaire
      echo "$row2[0] par $row2[1]
";
   }
   mysql_free_result($result2);
}
mysql_free_result($result);

// déconnecte
// ...

++
Messages postés
507
Date d'inscription
mardi 18 février 2003
Statut
Membre
Dernière intervention
22 juin 2012
2
fait extremement attention si tu autorise des internaute a upload quelque chose sur ton serveur (en l'occurence ici des jpg)
peut tu me faire voir cmt tu verifie si le fichier est bien un jpg ?

L0rD...
Messages postés
22
Date d'inscription
lundi 22 mai 2006
Statut
Membre
Dernière intervention
20 décembre 2008

Pour vérifier le type de fichier ça donne un truc comme ça:

//fixe le type d extension de fichier
$allowed_types = array("image/gif", "image/pjpeg", "image/jpeg", "image/jpg");

//stockage des proprietes ds des variables
$fname = $HTTP_POST_FILES['fichier']['name'];
$ftype = $HTTP_POST_FILES['fichier']['type'];
$fsize = $HTTP_POST_FILES['fichier']['size'];
$ftmp = $HTTP_POST_FILES['fichier']['tmp_name'];

//verifie si le type de fichier est bien autorise
if(in_array($ftype, $allowed_types))

{
Messages postés
22
Date d'inscription
lundi 22 mai 2006
Statut
Membre
Dernière intervention
20 décembre 2008

Voilà c'est terminé, en revanche j'ai abandonné le projet de pouvoir déposer plusieurs commentaires, les visieurs peuvent déposer une image en laissant un commentaire, un titre, leur nom et il renomment le fichier.

c'est par ici : http://www.macadame.fr (rubrique "Votre Espace"

Ciao