Bonjour,
J'ai repris l'administration d'un site que je n'ai pas conçu (je ne suis pas développeur à la base non plus..)
J'ai comme projet actuel de refondre une page (et le code PHP associé) qui permet d'afficher une liste de personnes inscrites à un évènement.
Pour présenter un peu l'existant :
On passe comme argument, au formulaire "evenement.php", un ID (unique) de l'évènement que l'on souhaite consulter.
Ceci nous affiche alors une page, comprenant les détails de l'évènement, ainsi qu'une liste d'inscrits à l'évènement.
#### Infos techniques ####
La liste des inscrits est récupérée via une requête SQL, sur une base MariaDB, dans la table "inscription", en filtrant sur l'id de l'évènement, de manière à ne récupérer que les inscrits de l'évènement consulté.
Cette table contient plusieurs_colonnes, dont celles qui suivent : id_inscription, id_evenement, id_user, licence, mail, timestamp, type
id_inscription : numéro unique d'une inscription dans la table
id_eveènement : id_de l'évènement auquel l'inscription correspond
id_user : identifiant de l'utilisateur qui s'est inscrit (si existant dans la table "user", j'y reviendrai plus tard), sinon "0".
licence : numéro de licence de l'utilisateur (c'est un club sportif, chaque inscrit possède une numéro de licence national unique);
mail: l'adresse mail donnée lors de l'inscription
timestamp : le date et l'heure de l'inscription
type : le type d'utilisateur (parmi 3 : encadrant, encadré, autonome), choisi lors de l'inscription
l'id_user est "recherché" au moment de l'inscription, dans la table des adhérents, à partir du numéro de licence, demandé de le formulaire d'inscription.
Si aucun numéro de licence en base ne correspond, alors l'id_user attribué est 0.
####
#### Contexte ####
A ce jour, la liste des inscrits est affichée dans un vulgaire tableau unique, dans l'ordre des inscriptions (timestamp en base), avec un affichage différencié à partir de la N-ième inscription, pour simuler une liste d'attente.
Il n'y a pas non plus de différenciation entre le type d'utilisateur (encadré, encadrant, autonome), ni sur le caractère adhérent ou non (gestion des "externes")
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13 Liste des inscrits : 1- Alice 2- José 3- Bob 4- Nicolas (exerne) 5- Jacques (externe) 6- Alex 7- Jérome 8- Martine ---- Liste d'attente ---- 9- Léo (externe) 10- Raymond 11-Lucie (externe)
####
#### Objectif ####
Ce que je souhaite faire c'est :
- Créer un affichage de 3 listes séparées, selon le type d'utilisateur (pas compliqué en soi, il suffit éventuellement de faire 3 requêtes SQL séparées avec une condition WHERE sur le type d'utilisateur)
- Gérer l'ordre des inscrits dans chaque liste, selon les deux critères suivants : caractère adhérent/externe, puis ordre d'inscription ==> Les adhérents sont automatiquement prioritaires devant les externes et on les affiche systématiquement en liste d'attente, puis c'est l'ordre d'inscription qui fait foi ensuite.
Exemples de ce que je souhaite obtenir (imaginons ici que la liste "principale" n'aie que deux slots avant d'être mis en liste d'attente; en réalité, le nombre de slots disponibles pour chaque évènement et chaque type est indiqué en base)
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6 Encadrants : 1- Alice 2- José ---- Liste d'attente ---- 3- Alex 4- Nicolas (exerne)
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5 Encadrés : 1- Jérôme 2- Martine ---- Liste d'attente ---- 3- Raymond####
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6 Autonomes : 1- Bob ---- Liste d'attente ---- 2- Léo (externe) 3- Jacques (externe) 4- Lucie (externe)
A ce jour, la liste des inscrits est mise dans un array suite à la requête SQL de récupération des inscriptions.
Je n'ai aucune idée de la façon de procéder pour atteindre ce que je souhaite.
Dois-je créer des tables temporaires en fonction du type d'utilisateur de façon à pouvoir gérer la différenciation et l'ordonnancement des inscriptions ensuite ?
Est-il possible (et souhaitable) de créer des array à plusieurs colonnes, en PHP, qui simuleraient des tables SQL, dans lesquelles il serait ensuite possible de manipuler les données ?
Dois-je calculer le statut de l'adhésion avant de mettre les données dans l'array ou est-il préférable de le faire ensuite, en passant une fonction PHP sur chaque élément du tableau ?
Est-il préférable d'utiliser une librairie PHP (et si oui avez-vous des exemples) qui permettent de manipuler des données issues de requêtes SQL ?
Pour la partie codage, je pense pouvoir me débrouiller, mais je sèche déjà sur la partie algorithmique, ne sachant pas trop les possibilités offertes par PHP, et donc les choix qui en découlent.
Merci pour votre aide
Partager