web-dev-qa-db-fra.com

Stockage de l'ordre des images sans base de données

La question classique est de savoir s'il faut stocker des images dans une base de données ou sur le système de fichiers. Dans mon cas, j'estime qu'il est probablement préférable de le stocker sur le système de fichiers.

Cependant, l'ordre spécifique des albums et des images est très important. Au départ, je pensais pouvoir le faire en affichant les images dans l'ordre de leur date de dernière modification, puis modifier artificiellement cette valeur pour modifier l'ordre. Cependant, cette méthode est erronée, car l'ajout de nouvelles images à un album réorganisera toutes les images à mesure que le temps modifié est modifié à volonté.

Quelqu'un peut-il me donner des conseils sur la manière de suivre la commande sans utiliser de base de données?

(Je ne suis pas sûr à 100% si cette question appartient ici ou peut-être sur stackoverflow, mais je prends mes risques et si je me trompe, n'hésitez pas à le corriger.)

3
Chaim

Vous pouvez utiliser un simple fichier texte pour simuler une base de données réelle . Si folder = album, enregistre l'ordre des images dans un fichier texte de chaque dossier (même nom de fichier, par exemple: order.txt.db).

Format de fichier possible:

  • ligne simple de texte que vous devez analyser après la lecture du fichier (par exemple: file1.jpg|file2.jpg|file5.jpg|file3.jpg) - il est facile à analyser si vous sélectionnez un délimiteur de droite ne faisant pas partie du nom de fichier réel;

  • une ligne par fichier (chaque fichier sur la nouvelle ligne) - peut-être même mieux, car la nouvelle ligne est un délimiteur unique qui ne fera pas partie du nom du fichier;

  • format spécifique au langage de script (par exemple: tableau sérialisé pour PHP - à l'aide de la fonction serialize (=) ) - peut facilement être désérialisé et prêt à être utilisé sans analyse supplémentaire (comme la routine de non-sérialisation fera tout le travail d'analyse pour vous).


Si votre plan d'hébergement ne permet pas/prend en charge MySQL ou un moteur de base de données similaire .., il peut prendre en charge SQLite - il est rapide et une base de données = un fichier. qui peuvent être stockés comme n'importe quel autre fichier sur votre site (juste besoin d'un accès en lecture-écriture).


Une autre approche serait de renommer les noms de fichiers pour y inclure le numéro d'ordre de tri (par exemple, 001-file1.jpg, 002-file5.jpg etc), mais il s'agit davantage compliqué à gérer (genre de problèmes similaires à l’utilisation de l’heure de modification de fichier).

5
LazyOne

Une option de programmation serait de stocker l'ordre des images dans les données EXIF ​​des fichiers jpg.

Vous pouvez utiliser une propriété UserComment ou ImageDescription - en supposant que celles-ci n'ont pas déjà été utilisées dans l'image, bien sûr.

Cela sera plus lent que d'utiliser un fichier/une base de données externe ou de modifier les noms ou les horodatages des fichiers, mais cela est autonome.

2
ChrisF