Upload Image pour un espace membre.

Darkmans Messages postés 19 Date d'inscription vendredi 16 avril 2010 Statut Membre Dernière intervention 31 janvier 2013 - 31 janv. 2013 à 21:46
cs_stay Messages postés 493 Date d'inscription jeudi 7 juillet 2005 Statut Membre Dernière intervention 24 mai 2017 - 19 févr. 2013 à 02:14
Bonjour,

Excusez moi de vous demandez votre avis en ce qui concerne le upload d'une image de profile pour un membre.
Le membre va certainement uploader plusieurs images, mon problème est comment vais je régularisé les photo de chaque membre. Est ce que je vais mettre dans une base de données le chemin de chaque image, si cela est la meilleur solution, comment vais je enregistrer plusieurs chemin en base de donnée Mysql, dont je croit que le nested table n'est pas possible?

Merci pour vos réponses.

13 réponses

cs_stay Messages postés 493 Date d'inscription jeudi 7 juillet 2005 Statut Membre Dernière intervention 24 mai 2017 4
31 janv. 2013 à 22:02
Salut, tu as plusieurs solutions, ou tu enregistres le contenu de l'image dans un champ de type longblob dans une table.
Il te faudra créer un script pour créer l'image à partir des données enregistrer.
Ou bien, tu récupères uniquement le libellé de l'image que tu enregistres dans une table en liaison avec le user.
Par la suite, le chemin pour tout les membres sont les mêmes.

Exemple :



stéph
0
cs_stay Messages postés 493 Date d'inscription jeudi 7 juillet 2005 Statut Membre Dernière intervention 24 mai 2017 4
31 janv. 2013 à 22:28
Pour plus de précision, pour les tables.

Table membres:
members.m_id = 1
members.m_id = 2

Table avatar:
members.a_m_id = 1
members.a_label = toto-1.png
members.a_status = 0

members.a_m_id = 1
members.a_label = toto-2.png
members.a_status = 1

members.a_m_id = 2
members.a_label = darkmans-1.png
members.a_status = 1

Si le statut est égal à 1, l'image serra sélectionné.

stéph
0
BBFUNK01 Messages postés 1310 Date d'inscription jeudi 16 juillet 2009 Statut Membre Dernière intervention 20 juin 2014 6
18 févr. 2013 à 20:35
Hello,

Soit Darkmans a retenu la solution de Stay et omis d'accepter la réponse, soit il a égaré ses identifiants de connexion à CS, soit il souhaite éventuellement d'autres solutions.
Pour ma part je ne stockerai pas les noms des images dans une BDD mais simplement le nombre d'images qui se rapportent à chaque utilisateur, et ce avec un champ de type INT dans la BDD.
Ensuite par exemple il suffit lors de chaque upload d'image de renommer l'image uploadée avec un timestamp histoire d'identifier chaque image (peu de probabilités qu'un utilisateur parvienne à charger 2 images la même seconde), puis mettre à jour le nombre d'images se rapportant à l'utilisateur. Le tout ensuite consiste à parcourir le dossier où sont stockées les images et d'afficher celles-ci dans l'ordre chronologique des timestamps utilisés s'il doit y avoir un affichage par date et heure d'upload. Pour supprimer une des images il suffit alors de renseigner le nom de chaque image soit dans un attribut id ou name du bouton de suppression d'une image.
J'utilise cette solution pour un de mes sites et ça marche très bien.

A+

BBFUNK01

//C'est en forgeant qu'on devient forgeron... ;-) ;
0
cs_stay Messages postés 493 Date d'inscription jeudi 7 juillet 2005 Statut Membre Dernière intervention 24 mai 2017 4
19 févr. 2013 à 00:13
Salut, je trouve que ton explication est incohérente dans la logique.

Je ne vois comment avec le champ "nombre d'image" et "une date", tu retrouves les fichiers dédiés.
A la rigueur, tu ajoutes l'identifiant du user_id-date, pour retrouver le libellé ou un sous-dossier avec le user_id en libellé.

Mais ta méthode consiste à updater toutes les images liées au user pour que par la suite, on retrouve la bonne image à utiliser, "bizarre".
De plus, tu dois m’expliquer comment tu fais sans identifiant pour le libellé de l'image et uniquement avec une date.
Et comment avec le nombre d'image dans un champ et une date; Tu vas faire quoi ?

Cette phrase est très intéressante "puis mettre à jour le nombre d'images se rapportant à l'utilisateur".
Je ne comprend pas à quoi elle sert.

Par la suite, du coup il y a un attribut id pour supprimer une image.
Comment cela fait-il que l'id est utilisé nulle par au départ pour retrouver une image et puis tu gères plus, car tu as besoin d'un id pour retrouver une image à supprimer.

Il y a trop d’incohérence dans ton poste qui prouve que ce n'est pas possible.

stéph
0

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

Posez votre question
BBFUNK01 Messages postés 1310 Date d'inscription jeudi 16 juillet 2009 Statut Membre Dernière intervention 20 juin 2014 6
19 févr. 2013 à 00:25
Bonsoir,

certes j'ai manqué de précision dans mes explications : il va de soi que l'ID de l'utilisateur est nécessaire pour créer le lien entre les images et l'utilisateur en question.
En somme voilà en gros comment je procède : j'identifie le dossier "images" de l'utilisateur de cette manière :
$dos = $_SESSION['id_user'].'/images';

A chaque connexion je récupère le nombre d'images uploadées par celui-ci puis si celui-ci supprime ou charge une ou plusieurs nouvelles images je mets à jour le nombre d'images dans la base.
Pour ma part ça fonctionne bien et c'est assez souple d'utilisation.

A+

BBFUNK01

//C'est en forgeant qu'on devient forgeron... ;-) ;

musichrono
0
cs_stay Messages postés 493 Date d'inscription jeudi 7 juillet 2005 Statut Membre Dernière intervention 24 mai 2017 4
19 févr. 2013 à 00:52
Re, pour moi, ton idée est très bonne. Mais tu n'as pas besoin de sauvegarder dans la db, le nombre d'images que l'utilisateur à uploder dans son dossier, car ses sont dossier. Pour retrouver le fichier tu n'as cas retrouver la date la plus récente dans le dossier du user, le champ "dernière_date" dans la db te suffit avec le user_id pour le sous-dossier.

Vois-tu ?

Mais bon, mon idée n'est en moins performante et tout aussi simple à mettre en place.
Car il y a un id, un libellé (toi une date), et j'ai ajouté un statut qui offres plus de possibilité.
désactiver 0, activer 1, supprimer = 2.
Mais cela dépend de ce que l'on veut faire, le status supprimer n'est peut-être pas utile dans cette situation.

Bien à toi,

stéph
0
BBFUNK01 Messages postés 1310 Date d'inscription jeudi 16 juillet 2009 Statut Membre Dernière intervention 20 juin 2014 6
19 févr. 2013 à 01:15
Oui bien entendu, de mon côté je stocke le nombre d'images dans la BDD pour une simple question d'archivage au niveau de mon interface d'administration. Après il est tout à fait possible de récupérer le nombre d'images en listant le nombre de fichiers contenus dans le dossier utilisateur mais il me semblait plus pratique d'accéder directement à ce nombre en interrogeant la base (un simple champ INT peu couteux en terme de poids dans la BDD).
Après concernant le statut tout est envisageable suivant les besoins respectifs de chacun : dans mon cas si l'utilisateur supprime une de ces images celle-ci est réellement supprimée, donc je n'ai pas configuré de statut dans mon application car le statut de chaque image c'est tout simplement la présence de l'image ou l'absence de l'image.
Pour ce qui est de renommer l'image avec un timestamp c'est également ce qui me paraissait le plus logique au niveau du classement et de l'affichage des images dans la mesure où je souhaitais que les images soient affichées dans leur ordre chronologique : si l'utilisateur supprime par exemple la 3e image qu'il a uploadée, en admettant qu'il ait uploadé une 4e image, cette 4e image devient alors la 3e image... Et ainsi de suite.
M'enfin j'espère simplement au moins que notre échange permettra à Darkmans de définir quelle sera la méthode qui lui conviendra le mieux :).

A+

BBFUNK01

//C'est en forgeant qu'on devient forgeron... ;-) ;
0
BBFUNK01 Messages postés 1310 Date d'inscription jeudi 16 juillet 2009 Statut Membre Dernière intervention 20 juin 2014 6
19 févr. 2013 à 01:18
Et pour conclure ton idée est tout à fait efficace également et pas plus coûteuse en ressources ;).
Après je sais que je me méfie de ce qu'uploadent les utilisateurs : on voit parfois des noms de fichiers abracadabrantesques donc je mets toujours un soin particulier à renommer complètement les fichiers uploadés afin d'éviter toute "coquille" indésirable.

A+

BBFUNK01

//C'est en forgeant qu'on devient forgeron... ;-) ;

musichrono
0
cs_stay Messages postés 493 Date d'inscription jeudi 7 juillet 2005 Statut Membre Dernière intervention 24 mai 2017 4
19 févr. 2013 à 01:19
En effet, :)
A+

stéph
0
BBFUNK01 Messages postés 1310 Date d'inscription jeudi 16 juillet 2009 Statut Membre Dernière intervention 20 juin 2014 6
19 févr. 2013 à 01:25
Non pas pour pourrir le post initial de Darkmans mais comme je vois que tu n'es pas encore couché Stay j'aimerai savoir comment tu procéderais dans le cas suivant :
je bosse actuellement sur un site que je vais traduire en 30 langues, chaque langue correspondant à un sous-domaine et le domaine principal étant attribué à l'anglais, j'utilise mon framework maison sur le modèle MVC et j'envisage de faire la traduction sur quelconque mot qui sera affiché.
Je n'envisage pas de procéder en stockant les traductions dans la BDD mais plutôt de créer des fichiers "langues" en PHP au niveau des modèles et de les appeler suivant le domaine ou sous-domaine ciblé.
Qu'en penses-tu et comment procèderais-tu si tu avais ce type de projet à traiter ?

(désolé Darkmans )

BBFUNK01

//C'est en forgeant qu'on devient forgeron... ;-) ;
0
cs_stay Messages postés 493 Date d'inscription jeudi 7 juillet 2005 Statut Membre Dernière intervention 24 mai 2017 4
19 févr. 2013 à 01:55
Je travail également avec un Framewok, le Zend Framework.
Pour la partie view, j'ai couplé Smarty qui est un moteur de Template très puissant.
J'ai crée une classe fille se nomment Smarty dans ma bibliothèque.
Elle contient des fonctions pour rendre possible l’accouplement des deux librairies.
J'ai créé une fonction qui me permet de gérer les variables de traduction dans le controlleur et par défaut Smarty le gère dans le Template.
Dans le template : {#nom_du_module1_toto#}
Dans le controller : $toto = $this->view->i18n('nom_du_module1_toto');
Dans le fichier modules/nom_du_module_1/lang/bo-fr.conf : toto = """Toto"""
Dans l'une de mes classes mères, le langage courent dans le B-O ou F-O est pris en compte avec une constante.

stéph
0
BBFUNK01 Messages postés 1310 Date d'inscription jeudi 16 juillet 2009 Statut Membre Dernière intervention 20 juin 2014 6
19 févr. 2013 à 02:11
Hum ok, j'avais essayé de me coller à Zend il y a quelques temps mais j'avais abandonné car trop impatient pour prendre le temps d'étudier correctement le Framework :).
Je ne connaissais pas Smarty mais après un très rapide coup d'œil ça m'a l'air plutôt sympa, à voir si je pourrai dans le futur l'adapter à mon framework.
Dans ma logique de construction je fonctionne un peu comme Smarty mais à ma manière (plus ou moins artisanale...), je récupère toutes mes données de contenu en amont dans mes modèles avant d'afficher mes pages. Par conséquent je pense que je vais fonctionner en stockant toutes mes traductions sous formes d'arrays dans des fichiers.php isolés et relatifs à chaque module (c'est ce qui me paraît le plus simple et à mettre en place et à maintenir à l'instant T, mais je garde Smarty sous le coude pour étudier cette solution).

Merci pour ton point de vue ;-).

A+

BBFUNK01

//C'est en forgeant qu'on devient forgeron... ;-) ;

musichrono
0
cs_stay Messages postés 493 Date d'inscription jeudi 7 juillet 2005 Statut Membre Dernière intervention 24 mai 2017 4
19 févr. 2013 à 02:14
Avec plaisir :)

stéph
0
Rejoignez-nous