Ajouter path d'une photo

abbeilleee Messages postés 43 Date d'inscription dimanche 3 novembre 2013 Statut Membre Dernière intervention 9 février 2014 - 3 janv. 2014 à 14:34
jordane45 Messages postés 38138 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 17 avril 2024 - 10 févr. 2014 à 09:35
Bonjour,
j'ai une formulaire ajout, (id, nom, prenom, image...)et dans le champ image, ca se peut qu'elle ajoute plusieurs photos, j'ai pensé a prendre le path a chaque fois de l'image ) et lors de la modification du formulaire, (prenons l'exemple qu'il ya 3 IMAGES sur l'id "1")lors de la modification, il y aura un picturebox, et les fléches de defilement pour voir tout les images de cet id !
merci de bien vouloir m'aider, quelle méthodes utiliser !

5 réponses

cs_Robert33 Messages postés 834 Date d'inscription samedi 15 novembre 2008 Statut Membre Dernière intervention 14 janvier 2017 33
Modifié par cs_Robert33 le 3/01/2014 à 17:56
bonjour

Je te conseille d'utiliser un flowLayoutPanel avec un auto scroll, tu ajoutes tes images dans le panel et la barre de scroll automatique permettra de voir toutes les images

ex:
string ImagePath = @"c:\test\image1.jpg;c:\test\image2.jpg;c:\test\image3.jpg;c:\test\image4.jpg;";
flowLayoutPanel1.FlowDirection = FlowDirection.TopDown;
flowLayoutPanel1.AutoScroll = true;

foreach (string s in ImagePath.Split(new char[]{';'}, StringSplitOptions.RemoveEmptyEntries))
{
 PictureBox pb = new PictureBox();
 pb.Height = flowLayoutPanel1.Height;
 pb.Image = Image.FromFile(s);
 flowLayoutPanel1.Controls.Add(pb);
}


Bob.
C# is amazing, enjoy it!
0
abbeilleee Messages postés 43 Date d'inscription dimanche 3 novembre 2013 Statut Membre Dernière intervention 9 février 2014
28 janv. 2014 à 00:20
merci pour ta réponse robert, mais, il faut que j'ajoute les photos manuellement, genre a chaque fois, elle peut ajouter une photo dans la base (lien)de donnée et elle pourras les afficher dans une forme afficher !
0
jordane45 Messages postés 38138 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 17 avril 2024 344
28 janv. 2014 à 00:35
Bonjour,

Bien sur tu as d'un côté une talbe pour ton formulaire (id, nom, prenom) et d'un autre côté une table pour tes images ( id_image,id_formulaire,chemin_image..)
La relation se faisant entre ton formulaire.id et ton image.id_formulaire

De cette façon tu peux stocker autant d'images que tu le souhaites pour un formulaire donné...


PS: attention.. cette question.. une fois de plus..semble plus relever d'une question concernant les BDD que le C# !!! (je te le redis..il existe une section dédiée pour ça ... SQL ! )
0
cs_Robert33 Messages postés 834 Date d'inscription samedi 15 novembre 2008 Statut Membre Dernière intervention 14 janvier 2017 33
29 janv. 2014 à 08:25
Bonjour

Donc le problème n'est pas de visualiser les images sur une forme, avec un scroll, mais de les ajouter/récupérer d'une base de données ?

------
Bob
0
abbeilleee Messages postés 43 Date d'inscription dimanche 3 novembre 2013 Statut Membre Dernière intervention 9 février 2014
30 janv. 2014 à 01:22
oui, c'est ca, mais comment faire ? merci bcp
0
jordane45 Messages postés 38138 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 17 avril 2024 344
30 janv. 2014 à 10:19
le problème [...] c'est de les ajouter/récupérer d'une base de données

oui, c'est ca, mais comment faire ? merci bcp


Comme tu le fais pour le reste des choses que tu insères dans ta BDD....
Je ne comprend pas où se situe la difficulté.

Encore une fois je te le demande.... SOIS EXPLICITE DANS TES EXPLICATIONS !

Merci de lire attentivement le contenu du lien ci-dessous :
http://codes-sources.commentcamarche.net/contents/11-charte-de-commentcamarche-net-conseils-d-ecriture

0
cs_Robert33 Messages postés 834 Date d'inscription samedi 15 novembre 2008 Statut Membre Dernière intervention 14 janvier 2017 33
31 janv. 2014 à 19:23
Bonsoir

J'imagine que si tu voulais stocker le "Path" de l'image tu saurais faire, après tout ce n'est qu'une chaine de caractères

Si tu veux stoker l'image elle même, dans SQL server il te faut une colonne de type varbinary(max). depuis ton code tu y stockeras un tableau de byte (byte[]) que tu peux récupérer depuis le fichier disque, ou depuis l'image elle même via un MemoryStream par exemple.
Pour récupérer les images tu récupères les tableaux de bytes que tu transformes en Image via un MemoryStream par exemple.

bon code
0
jordane45 Messages postés 38138 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 17 avril 2024 344
31 janv. 2014 à 23:17
Bonsoir Rob.
La solution de stocker les images directement dans la BDD a déjà été abordée à maintes reprises sur le site ( et je crois même déjà avec cet utilisateur).
Je pense que la question concerne réellement deux choses :
- Quel modèle mettre en place dans sa BDD pour pouvoir stocker PLUSIEURS images pour une même personne ( réponse déjà donnée).
- Quel code doit-il écrire pour réaliser la sauvegarde ( puis l'affichage ) des ces images.


Il me semble... que concernant sa BDD actuelle..le souci est qu'il stocke dans une même tables toutes les infos de ses users + le path de l'image... il n'arrive donc pas à mettre plusieurs images pour un même user_id.

PS:
stoker l'image elle même
Je déconseille fortement de stocker les images directement dans la BDD.
Surtout si, comme le laisse supposer Abbeillee, il risque d'y en avoir une grosse quantité...(donc grosse volumétrie dans la BDD..donc ralentissements...etc...)
La sauvegarde des Path est largement suffisant à mon sens.

0
cs_Robert33 Messages postés 834 Date d'inscription samedi 15 novembre 2008 Statut Membre Dernière intervention 14 janvier 2017 33
Modifié par cs_Robert33 le 1/02/2014 à 09:15
Bonjour Jordane

Oui je suis d'accord avec toi, il nous manque des info pour une aide efficace.
PS: le stockage d'images dans un champ varbinary est assez optimisé dans SQL 2008 R2 et d'expérience cela donne des résultats satisfaisants tant qu'on ne fait pas d'update sur ce champ. le stockage du path a ses limites si la BDD est distante.
0
abbeilleee Messages postés 43 Date d'inscription dimanche 3 novembre 2013 Statut Membre Dernière intervention 9 février 2014
9 févr. 2014 à 23:50
alors, il me faut une requete sql, pour défiler les images avec le bouton,
select image from table where nom like%' bernard'%
, la suivante image de bernard ...j'éspére que j'ai été clair, maitenant
merci
0
cs_Robert33 Messages postés 834 Date d'inscription samedi 15 novembre 2008 Statut Membre Dernière intervention 14 janvier 2017 33
10 févr. 2014 à 08:02
Bonjour

Alors ce qu'il te faut c'est une bonne définition de ton model de données.
Par exemple une table "Utilisateur_Image" avec une colonne "Utilisateur" ( relation sur la table des utilisateurs) un colonne "Index" pour numéroter les images et la colonne "Image" (path ou binaire de l'image)
Une première requête pour récupérer la liste des images pour un utilisateur
puis les requêtes pour en récupérer les images

-----
Bob
0

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

Posez votre question
jordane45 Messages postés 38138 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 17 avril 2024 344
10 févr. 2014 à 09:35
Salut Bob... ça ne fait que 10 fois que ce modèle de données lui est proposé....#3.

De plus... il demande très clairement une requête SQL.. hors il pose sa question dans C#.....

Abbeillee, comme tu peux le constater, je ne suis pas le seul à te faire part de la conception de ta bdd...
C'est le point principal sur lequel tu dois d'abord travailler.
Ensuite, tu pourras "facilement" les requêtes qui t'interessent.


Après... pour répondre à ta question telle qu'elle est posée (avec le modèle de données que tu as actuelement mis en place) je dirais :
Faire une requête comme celle que tu proposes toi même
SELECT * FROM  table 
where nom like '%bernard%'

* Tous les noms contenant le mot BERNARD vont alors ressortir. ( bernardo, bobernard,bernardin...etc...).
Ce n'est donc pas très pertinent.
Il vaudrait déjà mieux se baser sur l'ID de l'utilisateur plutot que sur son nom..

SELECT * FROM  table 
where id = 'xxxx'

xxxx étant l'id de l'utilisateur dans la table. ( ce n'est possible si tu n'as qu' UN id par utilisateur... on en revient donc au modèle de la BDD...).

Bref...
Une fois ton select réalisée, ta requête te donne TOUTES les images existantes pour cet utilisateur ( ou ces utilisateurs si tu garde ce modèle).

Il te faut maintenant coder dans ton programme d'afficher les images issues de ta requête.. l'une puis l'autre..etc...
Regarde du côté des recordset :
rs.movenext(), rs.movefirst(), rs.moveprevious()...
http://www.w3schools.com/ado/met_rs_movefirst.asp
0
Rejoignez-nous