Aller au contenu

Ranger une banque d'images


Sujets conseillés

Posté

Bonjour, :)

Je suis en train de faire une banque d'images.

Je commencais à les classer par catégorie (comme un annuaire), et à faire une page par catégorie. Puis je me suis rendue compte que certaines images pourraient aller dans plusieurs catégories.... :unsure:

Je voudrais donc trouver un script, ou tout du moins une base, pour pouvoir mettre tout ça dans une base de données qui pemettrait de classer chaque image avec plusieurs critères.

Je voudrais aussi pouvoir rajouter des images sans devoir revoir toute ma numérotation... :whistling:

Connaissez-vous quelque chose du genre?

Je suis allée voir un peu notre ami Google, mais je ne sais pas bien quoi chercher (quel terme pour définir ce que je veux faire?). :blush:

Merci d'avance de votre aide.

Gribouille

  • Réponses 52
  • Créé
  • Dernière réponse

Contributeurs actifs dans ce sujet

Contributeurs actifs dans ce sujet

Posté (modifié)

Oh, oui, pardon ! :blush:

C'est pour mettre sur un site web... :hypocrite:

Merci de l'adresse, je file voir...

Gribouille

[édit] Je suis allée voir.... Mais c'est trop complexe, trop complet, plutôt....

Ce ne sont pas des photos qui ont à être rétaillées, ce sont des icones, en fait. Donc pas besoin de toutes ces fonctions de redimensionnement, de rotation et autres... :nono:

Personne ne devra ajouter ou enlever de ma base, à part moi, donc pas besoin de tout ce côté administratif... :nono:

Je voudrais juste pouvoir faire une base de données de mes images avec leur caractéristiques pour pouvoir les trier de différentes façon. Et pouvoir facilement intégrer de nouvelles entrées dans cette base... :D

J'espère que j'ai été plus clair sur mon projet. :blush:

.... et que vous pourrez m'aider. :whistling:

[/édit]

Modifié par Gribouille26
Posté

Il me semble qu'acdsee a une fonction qui fait ca ... genere des thumbnails et tout ... Il me semble aussi avoir vu un p'tit soft sympa chez framasoft (je ne me souviens pas du nom du soft desole)

Posté

Salut Gribouille,

Regarde chez Comscripts

Il y a plein de script en tous genres... Peut-être trouveras-tu ton bonheur ? :)

Posté

ACDSee est payant... :nono:

Et PhpWebGallery semblait pas mal, mais il ne gère pas les .ico, malheureusement.... :whistling:

Gribouille

Ca serait mieux que je fasse ça moi-même. Enfin, avec votre aide.... :whistling:

Je pense savoir comment m'y prendre... :hypocrite:

Mettre toutes mes icones dans une base de données avec une description contenant:

- des mots clefs (pour faire une recherche);

- l'icone;

- et plusieurs catégories auxquelles elle peut appartenir (pour la présentation par catégories.

Mon problème est la base de données. Je ne sais pas trop bien les gèrer. :blush:

Pourriez-vous m'aider à bien cerner la méthode de travail pour arriver à ce résultat?

Mon raisonnement est-il correct jusque là? :huh:

Posté

Alors, je débute dans ma quète, et je tombe sur ça:

Avant toute chose, il faut savoir qu'il est totalement déconseillé de stocker des images dans une base de données. C'est très lourd, absolument inutile et cela peut même ralentir le serveur de données. Il ne faut pas perdre de vue que le but premier d'une base de données est de stocker des données à des fins de recherches, d'indexages ou de calculs. Ce qui n'a absolument aucune application dans le cas d'images. En bref, mieux vaut toujours stocker à la place le chemin (relatif, absolu, distant, ...) de l'image.

Première découverte.... qui s'est confirmée dans la suite de mes lectures sur le sujet. :D

Donc, je ne vais pas stocker les images, mais leur chemin d'accès.

Question: Je dois marquer leur url sous quelle forme? Je pense, entière, car je ne sais pas bien où peut se trouver ma base de données.... :unsure:

Gribouille

Posté
Question: Je dois marquer leur url sous quelle forme? Je pense, entière, car je ne sais pas bien où peut se trouver ma base de données....  :unsure:

Gribouille

<{POST_SNAPBACK}>

Salut,

Tu n'as pas besoin de savoir où se trouve ta base de données : le chemin en question sera lu par une page php qui se trouvera sur ton site. La seule chose que tu as besoin de savoir, c'est où sont situés les images sur ton site. Tu stockes le chemin en question dans un fichier genre config.php, et tu stockes uniquement le nom de l'image.

Conseil concernant ta base de données :

- tu vas avoir plusieurs images

- tu vas avoir plusieurs catégories d'images

- une catégorie contient potentiellement plusieurs images

- une image est potentiellement classée dans plusieurs catégories

Tu ne peux donc ni stocker le nom des images dans la table catégorie, ni le contraire : tu t'exposerais à coup sûr à une surcharge de données dans ta base (redondance) et à des problèmes à court terme.

Il va te falloir utiliser des tables de jointure. J'explique :

- tu as ta table image avec notamment la clé que j'appellerai idImage

- tu as ta table categorie avec notamment la clé que j'appellerai idCategorie

- tu dois créer une table imageCategorie qui contiendra l'ensemble des couples de clés idImage, idCategorie pour toutes les valeurs effectivement associées, puis travailler sur des jointures entre les différentes tables.

Euh si quelqu'un a l'adresse d'un bon cours de bdd en ligne pour Gribouille, ce serait sympa, parce que là je ne suis pas du tout sûr de m'être fait comprendre.

Posté

Cours de mysql pour débutant ? Ca se trouve sur le Hub ;)

http://www.webmaster-hub.com/publication/r...recherche=mysql

Si tu as besoin d'autres conseils, ou si tu n'as pas compris un passage, n'hésites pas à demander :)

pour info, et pour compléter ce que dit 'MarvinLeRouge', voici ce que ca donnerait :

table categorie =>

id_cat nom_cat

table image_cat =>

id_cat id_image

table image =>

id_image nom_image

Sachant que les chemins vers les répertoires image seront stockés dans un fichier config.php.

Posté

Anonymous: J'ai déjà lu tes cours. Ils étaient très bien, mais c'est mieux, ensuite, de pouvoir "en discuter", et se faire préciser certaines choses... :whistling: Merci

Marvin: C'est très clair. Il faut quand même que je relise et que j'approfondisse un peu... ;) merci

En fait, je ne pense pas avoir besoin d'un champ nom_image. Leur id me suffit, non? :huh:

Gribouille

Posté

Le champ nom_image est ici pour l'exemple : ça sert à montrer que l'identifiant de ligne est id_image, et qu'il y a d'autres champs dans la table. Ca pourrait aussi bien être nom_fichier par exemple ;)

NB : Si tes images n'ont pas de nom, tu vas leur présenter quoi aux internautes comme intitulé : 457 ?

Posté

D'accord, mais comme je ne compte pas mettre de noms à mes icones, je peux me contenter de:

table categorie => id_cat nom_cat

table image_cat => id_cat id_image

Par contre, je voudrais pouvoir faire une recherche dans le base avec des mots clefs. Je peux donc mettre, en plus:

table image => id_image clef_image

Ou est-ce que je peux le mettre dans des tables déjà faites?

Moi, j'aurrai fait une seule table:

id_image nom_cat clef_image

Ca n'aurrai pas marché? :huh:

Merci

Gribouille

Posté

Si, ca aurait marché, mais :

1/ Qu'est ce que : cle_image ?

2/ L'idée des bases de données, c'est aussi de stocker sous forme 'optimisée', des données qui se répètent. Donc, dans le cas que tu donnes, tu te retrouverais avec ceci :

id_image cat_image

1 humour

2 policier

3 triste

4 humour

5 Humour

6 tristre

7 humour

et quand tu vas chercher les différentes catégories, il ne les trouveras pas, à cause des différentes erreurs. La requète :

select id_image from image where cat_image='humour'

ne fera pas ressortir le site 5 par exemple ('H' majuscule).

Avec la méthode que je donne, ca parait un peu plus compliqué, mais la requète donnera toujours toutes les images qui correspondent à 'humour', vu que la catégorie sera 'unique' dans la base de données.

Pour ce qui est du 'nom_image', c'est dans l'hypothèse où tu donnes des noms à tes images. Ainsi, quand tu regarde ton répertoire, tu sais tout de suite ce qu'est telle ou telle image. Si tu veux mettre un identifiant numérique au lieu d'un identifiant et d'un nom, et si tu veux appeler les images avec cet identifiant, c'est possible aussi, pourquoi pas, mais c'est plus 'abstrait'.

Posté
Pour ce qui est du 'nom_image', c'est dans l'hypothèse où tu donnes des noms à tes images. Ainsi, quand tu regarde ton répertoire, tu sais tout de suite ce qu'est telle ou telle image. Si tu veux mettre un identifiant numérique au lieu d'un identifiant et d'un nom, et si tu veux appeler les images avec cet identifiant, c'est possible aussi, pourquoi pas, mais c'est plus 'abstrait'.

<{POST_SNAPBACK}>

C'est plus "abstrait", mais dans mon cas, ça suffit et ça simplifie.. ;)

J'ai compris pour le coup des erreurs. C'est clair.

Je comprend maintenant l'utilité de traduire les catégories en "chiffre". :hourra:

Clef_image, ce serai des mots clefs qui permettrai une recherche dans la base de données par mots clefs.... :D

Gribouille

Posté

Alors, je garde mes trois tables suivantes:

table categorie => id_cat nom_cat

table image_cat => id_cat id_image

table image => id_image clef_image

Mais, je lisais qu'il valait mieux stocker les url que les images.

Faut-il que je fasse une autre table? ou je peux le rajouter dans la table image?

Petite question:

Est-ce que je peux mettre plusieurs mots dans un champ?

Dans le champ clef_image...

Si oui, comment les agencer pour pouvoir faire une recherche (virgules, espaces, points virgules,...)?

Gribouille

Posté

Plusieurs mots dans un champ ?

Si c'est pour une recherche :

1/ sans caractères spéciaux,

2/ sans accents,

3/ en minuscules,

4/ séparés par un espace,

5/ rangés par ordre alphabétique (pourquoi ? parce que.. )

voilà à peu près..

Pour ce qui est des 'url', il y a 2 cas. Soit tu n'as pas 2 images stockées au même endroit, auquel cas il est intéressant de stocker les url, soit elles sont toutes au même endroit (par exemple dans le répertoire /images) , auquel cas tu peux mettre ce chemin dans un fichier config.php

Nico.

Posté

Merci de toutes ces précisions !!! :up:

Si je ne met pas d'accents, ça va pas poser de problèmes quand la recherche va se faire avec un mot contenant un accent?

soit elles sont toutes au même endroit (par exemple dans le répertoire /images) , auquel cas tu peux mettre ce chemin dans un fichier config.php
Elles seront stockées dans un dossiers avec des sous dossiers, mais plusieurs dans le même sous-dossier.... :whistling:

Gribouille découvre les bases de données :D

Posté

A partir du domaine gribouille.com, par exemple.

Si toutes tes images sont dans le répertoire :

gribouille.com/images/

alors tu n'as pas besoin de stocker quoique ce soit.

Quand tu as besoin d'une image, tu mets :

<img src="images/".$nom_de_l_image.">

Si tes images sont stockées dans des répertoires différents, tu as plusieurs solutions.

Soit tu stockes l'url avec le nom de l'image dans la base de données, ca donnera :

id_image nom_image cat_image

avec nom_image correspondant par exemple à

/vacances/plage.jpg

Soit tu stockes juste le nom de l'image (plage.jpg), mais tu ajoutes une colonne repertoire_image, dans lequel tu mets /vacances, voir "1", avec dans ce cas soit un tableau dans un fichier configuration.php, qui renverrait $tableau_repertoires_images[1]="/vacances";

Soit tu créées un table sql, pour stocker les noms des répertoires, avec un 'id_repertoire, que tu répercutes dans la table 'images'.

Bref, il existe vraiment plusieurs solutions. Mais en fait, il faut prendre le problème à l'envers. Savoir exactement ce que l'on veut, et à partir de là, prendre des choix. Il n'y a pas de meilleur ou de moins bon choix, mais chacun d'entre eux implique des obligations. Exemple : Faire un tableau des répertoires dans le fichier config.php implique qu'il sera beaucoup plus difficile d'ajouter des répertoires, sans passer par un 'upload' du fichier.

D'un autre coté, mettre les répertoires dans la base de données peut avoir 2 inconvénients :

1/ rapidité d'accès (si tu sépares les répertoires dans une table externe

2/ place occupée, si tu stockes les répertoires avec les images.

Posté

Oulala !!!! :wacko:

Je suis perdue encore une fois !

Mais c'est bien, au moins, ton explication est complète. :thumbup:

Je crois que je vais opter pour la solution de mettre un champ url_image dans la table image. Et d'y stocker les url sous la forme avec le nom du répertoire et du sous-répertoire.

Ca prendra peut-être un peu plus de place, mais ça sera aussi plus rapide apparement... :whistling:

Mais comment écrire l'url?

Admettons que mes images se trouvent dans : gribouille.com/images/dossier/sousdossier/

Dois-je écrire:

h**p://www.gribouille.com/dossier/sousdossier/img01.ico

dossier/sousdossier/img01.ico

Posté

A supposer que toutes tes images se trouvent systématiquement dans le répertoire images/, alors tu n'es pas obligée de mettre ce nom dans la base. C'est inutile.

Pour l'image 1, tu afficheras

echo "<img src='http://gribouille.com/image/".$IMAGE1."'>";

et ca affichera

<img src='http://gribouille.com/images/dossier/img01.jpg'>

Posté

OK, c'est très clair, merci !!! :shake:

Je vais maintenant monter ma base et essayer un peu les requètes.

Mais je pense que j'aurrai encore besoin de ton (votre) aide plus tard.... :whistling:

Merci milles fois (c'est plus vite écrit que dit :lol: )

Posté

Comme je le pensais, me revoilà ! :hourra:

Mais encore plus vite que ce que j'imaginais.... :huh:

J'ai créer mes trois tables avec les différents champs.

table icone => id_icone & clef_icone & url_icone

table categorie => id_cat & nom_cat

table icone_cat => id_cat & id_icone

J'ai mis les champs id_ en "smallint unsigned not null" et tous les autres en "text not null".

J'ai bon jusque là? :whistling:

Puis, il fallait définir des clefs...

D'après ce j'ai pu comprendre de la logique des bases de données et de ce qu'on veut faire, ce sont elles qui font le lien entre les différentes tables. B)

J'ai donc mis en clef dans la table icone: id_icone

dans le table catégorie : id_cat,

Mais dans la table icone_cat, je ne vois pas trop....

Je serai tentée de mettre le champ id_cat car ce sera depuis le nom de la catégorie que les icones seront appellées sur la page, mais je suis pas très sûre.... :blush:

Gribouille

Veuillez vous connecter pour commenter

Vous pourrez laisser un commentaire après vous êtes connecté.



Connectez-vous maintenant

×
×
  • Créer...