Bonsoir à tous,

Pour le cours de Php (étant étudiant en première info gestion) j'ai à préparer un projet qui consiste en créer un site d'upload d'images avec système de sessions et de galerie d'image.
Le tout est de stocker dans des fichiers .txt les infos des images. Pas possibilité d'utiliser une base de donnée, sauf pour les informations des utilisateurs inscris..

Je dois réaliser une page de galerie d'image avec possibilité de filtrage par utilisateur, par ordre croissant décroissant, tailles d'images, etc. Les images répertoriées comme "privées" ne doivent être vues que par les utilisateurs connectés.
Je possède un fichier .txt avec la liste de toutes les images dans ce format..
Chaque ligne correspond à une image et ressemble à :
ID NOM_FICHIER UTILISATEUR_QUI_A_UPLOAD PRIVEE_OU_PUBLIQUE MOTS_CLES DIMENSIONS
Par exemple :
18 13.png KyoZz public a,b,c,d 1920x1080
Le problème étant qu'en réalisant ma galerie avec un fichier de ce type, si je veux par exemple filtrer pour afficher les images qu'un utilisateur a posté, je dois analyser avec un for chaque ligne du fichier pour voir si après le premier espace, le nom correspond..

Par exemple :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
		if(!isset($_GET['page_nb'])) //On regarde si une variable get montre à quelle page nous sommes, sinon on indique qu'on est page 1
			$page_nb = 1;
		else
			$page_nb = $_GET['page_nb'];
 
		if(!isset($_GET['max_page']))
			$max_page = $config['default_max_page']; //On regarde si une variable indique le nombre d'image a afficher par page, sinon on prend dans les configs.. Par défault 9.
		else
			$max_page = $_GET['max_page'];
 
                /* On calcule à combien on doit commencer dans la boucle en fonction d'à quelle page on se trouve et combien on affiche par page */	
		$i = $max_page;
		$i *= $page_nb;
		$i -= $max_page;
		$i += 1; 
 
               /* On ouvre le fichier et on sépare chaque ligne du fichier dans un emplacement de tableau */
		$data = file_get_contents($config['data_file']."img_list.txt", true); 
		$data_info = explode("\n", $data); 
 
		if($user == "all") //Si on affiche les images de TOUS les utilisateurs
			$nbr_image = count($data_info);
		else
		{
                        /* On compte le nombre d'images de l'utilisateur.. */
			$nbr_image = 0;
			for($i = 1; $i < count($data_info); $i++) 
			{
				$info_img = explode(" ", $data_info[$i-1]);
				if($info_img[2] == $user)
					$nbr_image++;
			}
		}
 
		$max_afficher = $i + $max_page; //A quelle image on s'arrête dans cette page là
 
		$col = 4;
 
						while($i < $max_afficher && $i <= $nbr_image) //Tant qu'on ne dépasse pas l'image maximum de la page et le nombre d'images possibles
						{
 
							$info_img = explode(" ", $data_info[$i-1]);
 
							if($user == "all" || $info_img[2] == $user) // On regarde si on affiche les images de tout le monde ou bien si l'image en question est celle de l'utilisateur
							{
								$data2 = file_get_contents($config['user_dir'].$info_img[2]."/".$info_img[1].".txt", true);
								$img_info = explode("\n", $data2);
 
								echo '<div class="col-md-'.$col.'">';
								echo '<article class="panel panel-info" style="width:350px; height:250px;">';
								echo '<div class="panel-heading">';
								echo '<div align="center"><a href="?page=img_info&id='.$info_img[0].'"><h2 class="panel-title">'.utf8_encode($img_info[0]).'</h2></a></div>';
								echo '</div>';
								echo '<div class="panel-body">';
								echo '<div align="center"><a href="?page=img_info&id='.$info_img[0].'"><img alt='.$img_info[0].' src="'.$config['user_dir'].$info_img[2].'/'.$info_img[1].'" style="max-height: 180px; max-width: 300px;"></a></div>'; 
								echo '</div>';
								echo '</article>';
								echo '</div>';
							}
							else
								$nbr_image++; //Si c'est pas l'image de l'utilisateur, on incrémente de 1 le nombre d'images possibles
							$i++;
						}
 
						if($nbr_image == 0) // Si il n'y a aucune image a afficher
						{
							echo '<div align="center">';
							echo '<h3>Vous n\'avez pas encore posté d\'images..</h3>';
						}
					?>
Vous verrez que ce n'est déjà pas joli joli.. Sans parler si on doit combiner plusieurs filtrages telles que images par ordre décroissant ou croissant, choisir si on affiche tout ou celle d'un utilisateur, cacher les images privées aux personnes déconnectées, choix de la résolution par l'utilisateur, choix du format du fichier, ... ça va être un peu difficile de tout combiner..

Alors n'étant pas un expert en php et n'ayant pas énormément pratiqué la gestion de fichiers par le passés mais plutôt l'utilisation de MySql, avez-vous une idée de comment je pourrais faire plus simple pour ma galerie d'image ?

Merci d'avance.

Bonne soirée.