Gribouille26 Posté 16 Février 2005 Posté 16 Février 2005 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.... 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... 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?). Merci d'avance de votre aide. Gribouille
Dan Posté 16 Février 2005 Posté 16 Février 2005 BOnjour Gribouille, Tu ne dis pas si tu crées une banque d'images pour le Web ou sur ton PC ? Si c'est pour le Web, des scripts tels que Gallery peuvent t'aider, non ? http://gallery.menalto.com/modules.php?op=...News&file=index Dan
Gribouille26 Posté 16 Février 2005 Auteur Posté 16 Février 2005 (modifié) Oh, oui, pardon ! C'est pour mettre sur un site web... 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... Personne ne devra ajouter ou enlever de ma base, à part moi, donc pas besoin de tout ce côté administratif... 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... J'espère que j'ai été plus clair sur mon projet. .... et que vous pourrez m'aider. [/édit] Modifié 16 Février 2005 par Gribouille26
-ZN- Posté 16 Février 2005 Posté 16 Février 2005 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)
Gribouille26 Posté 16 Février 2005 Auteur Posté 16 Février 2005 ACDSee est, à ma connaissance, pour un usage sur PC.... Dan me l'a, en effet, fait précisé: c'est une application pour un site web. Gribouille
Titag Posté 16 Février 2005 Posté 16 Février 2005 Salut Gribouille, Regarde chez Comscripts Il y a plein de script en tous genres... Peut-être trouveras-tu ton bonheur ?
Gribouille26 Posté 16 Février 2005 Auteur Posté 16 Février 2005 ZN- J'ai trouvé ça PhpWebGallery chez Framasoft. Ca à l'air bien.... Je vais essayer. Titag: merci de l'adresse, je vais voir... Gribouille
Gribouille26 Posté 16 Février 2005 Auteur Posté 16 Février 2005 ACDSee est payant... Et PhpWebGallery semblait pas mal, mais il ne gère pas les .ico, malheureusement.... Gribouille Ca serait mieux que je fasse ça moi-même. Enfin, avec votre aide.... Je pense savoir comment m'y prendre... 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. Pourriez-vous m'aider à bien cerner la méthode de travail pour arriver à ce résultat? Mon raisonnement est-il correct jusque là?
Gribouille26 Posté 16 Février 2005 Auteur Posté 16 Février 2005 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. 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.... Gribouille
MarvinLeRouge Posté 16 Février 2005 Posté 16 Février 2005 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.... 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.
Anonymus Posté 17 Février 2005 Posté 17 Février 2005 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.
Gribouille26 Posté 17 Février 2005 Auteur Posté 17 Février 2005 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... 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? Gribouille
MarvinLeRouge Posté 17 Février 2005 Posté 17 Février 2005 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 ?
Gribouille26 Posté 17 Février 2005 Auteur Posté 17 Février 2005 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é? Merci Gribouille
Anonymus Posté 17 Février 2005 Posté 17 Février 2005 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'.
Gribouille26 Posté 17 Février 2005 Auteur Posté 17 Février 2005 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". Clef_image, ce serai des mots clefs qui permettrai une recherche dans la base de données par mots clefs.... Gribouille
Gribouille26 Posté 17 Février 2005 Auteur Posté 17 Février 2005 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
Anonymus Posté 17 Février 2005 Posté 17 Février 2005 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.
Gribouille26 Posté 18 Février 2005 Auteur Posté 18 Février 2005 Merci de toutes ces précisions !!! 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.... Gribouille découvre les bases de données
Anonymus Posté 18 Février 2005 Posté 18 Février 2005 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.
Gribouille26 Posté 18 Février 2005 Auteur Posté 18 Février 2005 Oulala !!!! Je suis perdue encore une fois ! Mais c'est bien, au moins, ton explication est complète. 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... 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
Anonymus Posté 18 Février 2005 Posté 18 Février 2005 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'>
Gribouille26 Posté 18 Février 2005 Auteur Posté 18 Février 2005 OK, c'est très clair, merci !!! 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.... Merci milles fois (c'est plus vite écrit que dit )
Gribouille26 Posté 18 Février 2005 Auteur Posté 18 Février 2005 Comme je le pensais, me revoilà ! Mais encore plus vite que ce que j'imaginais.... 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à? 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. 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.... Gribouille
Sujets conseillés
Veuillez vous connecter pour commenter
Vous pourrez laisser un commentaire après vous êtes connecté.
Connectez-vous maintenant