Pages :
Bonsoir à tous
Comme je 'ai déjà mentionné, je suis en train de refaire l'administration d'un site de chorale.
Actuellement la base de données se trouve sur mon PC sous la forme de fichiers Excel, je veux mettre l'administration sur le site avec une base de données mySQL
Le problème est de faire une interface conviviale pour l'administrateur. Tant que j'étais le seul administrateur, ce n'était pas nécessaire, mais si je dois déléguer à d'autres personnes il faut qu'elles puissent s'y retrouver.

La principale difficulté est de donner une interface pour la définition d'un concert.
La définition d'un concert c'est
1) des informations spécifiques (date, titre, photo de l'affiche, etc.) faciles à saisir dans des balises <input> ou <textarea>
2) un lieu
3) une liste d’œuvres

Première difficulté: désigner le lieu où aura lieu le concert:
nous avons au cours des 20 années passées donné des concerts dans une centaine de lieux; ces lieux sont répertoriés dans une table de la base de données.
Quelle interface donner à l'administrateur pour qu'il puisse désigner le bon lieu ?
Si je mets tous les lieux sous la forme d'un <select> il n'est pas très facile de retrouver une salle de concert dans cette liste, même en mettant des <optgroup>.
J'ai pensé à une <section> en popup ce qui donnerait plus de possibilités d'y voir clair.
Avec une centaine de lieux, je peux les mettre tous dans cette <section>, ou bien faire une recherche progressive:
Région (Paris, Région Parisienne, Autres régions, Autre pays)
Sous-région: arrondissements pur Paris, villes pour RP et autres régions, Pays pour les autres pays
L'utilisateur pourrait arriver progressivement à la salle choisie, cliquer dessus, et l'identifeur de la salle serait recopié dans la zone "lieu" de la description du concert.
Ça me semble un peu compliqué...

Deuxième difficulté: désigner les œuvres au programme du concert.
Nous avons actuellement un catalogue de près de 600 œuvres de plus de 200 auteurs.
Il s'agit d'en choisir un nombre variable, dans un ordre donné.
Il ne me semble pas raisonnable d'envoyer depuis le serveur une liste d'objets aussi grande en JSON (ou autre). Il faut donc -- encore plus que pour les lieux de concerts -- travailler par chargement de tables partielles en AJAX.
Mais contrairement au lieu du concert qui est unique nous avons à saisir une vingtaine d’œuvres de divers compositeurs.

Avant de me mettre à réinventer le fil à couper le beurre j'aimerais quelques conseils pour ne pas errer pendant des semaines à la recherche de la moins mauvaise solution.

Merci de partager votre expérience.
Modifié par PapyJP (10 Jun 2020 - 20:15)
Salut,

Voilà une méthode que j'ai déjà employé par le passé et qui fonctionne très bien dès qu'il s'agit de sélectionner des entités complexes (plus qu'un simple champ) et dont le nombre est potentiellement élevé.

Le principe c'est d'employer un simple champ de recherche qui te retourne maximum 5 (chiffre choisi arbitrairement) entrées à chaque fois que l'utilisateur entre un caractère. On affiche ensuite ces entrées à la manière d'un "auto-complete" et c'est à toi de décider ce qu'il faut faire lors de la sélection d'une entrée (en fonction de ton interface). La requête SQL côté serveur est simple et tu peux faire en sorte de la rendre insensible à la casse et aux accents. Cette méthode part du principe que l'entité existe déjà au préalable. Si ce n'est pas toujours le cas, il faut prévoir un petit formulaire pour en ajouter un nouveau.

Et c'est facile à rendre générique si besoin...
Modifié par Anymah (10 Jun 2020 - 22:22)
Merci de ta réponse
Dans mon cas précis ça ne me semble pas approprié
Supposons par exemple que l’on veuille choisir comme salle de concert « l’église Saint Théodore et Saint Pancrace » de la ville de « Les Beaux en Thierache » (ça n’existe pas mais il y a des villes et des églises de nom similaire). Ce n’est pas en entrant des informations au clavier s’on peut y parvenir. Il faut que l’utilisateur ait sous les yeux des portions de table conséquentes et qu'il puisse affiner: c’est une histoire de menus à plusieurs niveaux. Comment présenter ça de façon ergonomique ?
Pourquoi ne pas décomposer l'adresse en Villes (voir en Pays/Villes s'il le faut) ?
Ça va drastiquement réduire les choix proposés...
PapyJP a écrit :
Supposons par exemple que l’on veuille choisir comme salle de concert « l’église Saint Théodore et Saint Pancrace » de la ville de « Les Beaux en Thierache » (ça n’existe pas mais il y a des villes et des églises de nom similaire). Ce n’est pas en entrant des informations au clavier s’on peut y parvenir.


Pourquoi pas ? Si tu entres "Pancrace" ou "Thierache" le champ te proposera ces deux entrées. S'il en existe beaucoup qui contiennent ces termes, alors il suffit d'affiner la recherche.

J'ai utilisé cette méthode dans le cadre du développement d'une application web de gestion de jardin botanique. L'utilisateur devait sélectionner un nom de plante figurant dans la nomenclature (famille, genre, espèce, etc). On parle de plusieurs centaine de milliers d'entrées avec beaucoup de ressemblance dans les noms. Je précise : ça marchait au poil.

En revanche, c'est nécessaire que l'utilisateur sache déjà à l'avance quoi chercher (au moins un ou deux termes).
Modifié par Anymah (11 Jun 2020 - 10:05)
sneazzy95 a écrit :
Bonsoir.
Que voulez-vous dire par "ergonomique" ?

Dans ce contexte, je veux dire "facile à utiliser pour l'utilisateur", c'est à dire un minimum de clics et de navigation
Voici ce que j'ai fait dans un premier temps:
voir https://www.alma-musica.net/tests/admin/locations.html

En parcourant des yeux la liste des lieux classés par emplacement géographique on peut trouver assez facilement le lieu désiré.
On peut alors cliquer sur le bouton qui recopie les informations dans le champ "lieu" du formulaire de saisie.
Ce n'est pas très bon, mais ça peut encore aller pour les lieux. Mais pour les œuvres cette technique n'est pas utilisable, il y en a trop
Modifié par PapyJP (11 Jun 2020 - 13:11)
Anymah a écrit :


Pourquoi pas ? Si tu entres "Pancrace" ou "Thierache" le champ te proposera ces deux entrées. S'il en existe beaucoup qui contiennent ces termes, alors il suffit d'affiner la recherche.

J'ai utilisé cette méthode dans le cadre du développement d'une application web de gestion de jardin botanique. L'utilisateur devait sélectionner un nom de plante figurant dans la nomenclature (famille, genre, espèce, etc). On parle de plusieurs centaine de milliers d'entrées avec beaucoup de ressemblance dans les noms. Je précise : ça marchait au poil.

En revanche, c'est nécessaire que l'utilisateur sache déjà à l'avance quoi chercher (au moins un ou deux termes).

Je vais regarder de ce côté. Tu peux me donner l'adresse de ce site que je voie la chose en action?
Merci de ta proposition on en reparlera le moment venu.
Pour l’instant je réalise que l’approche que j’avais en tête n’est pas la bonne et qu’il faut que je repense mon plan de travail, en gros inverser phase 1 et phase 2
Je repars au turbin Smiley smile Smiley sweatdrop
PapyJP a écrit :

Je vais regarder de ce côté. Tu peux me donner l'adresse de ce site que je voie la chose en action?

Il s'agit d'une application web privée. Tu ne pourras malheureusement pas y accéder.
PapyJP a écrit :
En parcourant des yeux la liste des lieux classés par emplacement géographique on peut trouver assez facilement le lieu désiré.
On peut alors cliquer sur le bouton qui recopie les informations dans le champ "lieu" du formulaire de saisie.
Ce n'est pas très bon, mais ça peut encore aller pour les lieux. Mais pour les œuvres cette technique n'est pas utilisable, il y en a trop

Ce que je te propose n'est pas bien différent de ton approche. Plutôt que d'afficher tous les lieux avant d'en choisir un, on affiche uniquement ceux qui se rapprochent du but. La liste est donc vide initialement, et lorsque l'utilisateur entre un terme de recherche, des suggestions apparaissent (d'où le terme "auto-complete" donné en exemple précédemment). Par conséquent, si tu dois sélectionner dans un set de données qui contient 50 ou 1000 entrées, cela ne changera rien à ton interface.
Modifié par Anymah (12 Jun 2020 - 13:11)
Techniquement comment fais-tu ?
Est-ce que tu charges toutes tes entrées depuis le serveur, ce qui fait beaucoup de données, ou est-ce que tu vas dynamiquement les chercher par AJAX, ce qui fait beaucoup d’interactions ?
C'est justement pour éviter ce genre d'interface que j'ai besoin d'aide.

Prenons la personne qui organise un week-end de travail vocal au Centre équestre et de loisirs "Les Fauvettes" à 78640 Neauphle le Vieux.
Cette personne ne sait pas exactement le nom du centre ni le nom de la ville.
Elle sait que c'est dans la région parisienne dans un endroit où il y a des chevaux, que ça fait quelques années que nous n'y sommes pas allés, etc.
Aucune recherche sur texte ne peut permettre de trouver cet endroit.
Une table comme https://www.alma-musica.net/tests/admin/locations.html permet d retrouver l'endroit à l’œil assez rapidement.

Si on fait une recherche progressive, il faudrait plutôt dire:
"donnez moi la liste des endroits où nous avons organisé des week-ends dans la région parisienne, et s'il y en a trop dire depuis + de 3 ans et - de 10ans"
Ce qui voudrait dire une interface assez différente.

Si on organise une répétition, il serait plus simple que l'interface donne les 5 derniers endroits où nous avons fait une répétition, avec une option pour en chercher davantage si ce n'est pas dans un de ces 5 endroits.
Pour le lieu d'un concert, c'est du même ordre que les répétitions.

Pour faire ça j'ai besoin de faire une requête appropriée sur la base de données.
"dans le calendrier (sur les 20 dernières années!) recherche les évènement de type week-end qui ont eu lieu de telle date à telle date dans des départements région parisienne"

Actuellement ma base de données n'est pas assez bien organisée pour que ce soit efficace, il faut donc que je la révise, que les mises à jours soient faites correctement à partir des fichiers xml constitués par ma méthode actuelle de traitement, etc.
J'avais pensé faire une interface qui aurait directement consulté les fichiers xml, mais je me rends compte que ce n'est pas approprié. Il me faut donc
1) concevoir l'interface sur le papier
2) organiser la base de données en conséquence
3) modifier mon interface actuelle pour que les fichiers xml permettent de nourrir la base de données
4) mettre au point l'interface
5) arrêter la méthode actuelle

Mais pour constituer la liste des œuvres à mettre dans le programme d'un concert, j'ai besoin de définir une interface similaire mais différente.
Mais compte tenu de l'interaction entre les sujets, je dois faire les 5 phases dans l'ordre pour tous les sujets.
Le plan précédent était
A) pour chaque sujet séparément les phases 1-3-4
B) phases 2 et 5
C'était du moins en apparence plus modulaire et progressif.

Mais au moins cette discussion m'a permis d'y voir clair et je pense pouvoir m'attaquer dès demain au chantier. Smiley biggrin
Bonjour PapyJp,
dès lors que les temps contemporains sanitaires sont critiques, chroniques ou fébriles, nous nous devons de reconsidérer une stratégie qui tandis qu'elle nous était acquise jadis, soit désormais inapte. Donc à repenser.

J'aurais une nouvelle approche géographique et temporelle, selon que l'utilisateur (et l'amateur d'une rencontre musicale) exprimera son intérêt et sa préférence selon qu'il sera à tel endroit et/ou à tel moment !

Ainsi GoogleMaps (très intrusif !) ou OpenStreetMap (beaucoup moins intrusif !) seront tes Amis pour inviter un amateur à préciser géographiquement dans un premier choix son propre intérêt à fréquenter un lieu à une date ...

Ainsi et successivement dans la méthode sélective offerte par le site-web :

0. selon la géolocalisation de l'amateur (un lieu pointé sur carte lui conviendrait !),
1. dans un rayon de ... 25, 50, 100 ou 500km il y aura ceci,
2. à telle date de juin, juillet, octobre ou etc. seront produites telles et telles rencontres musicales,

ce dont tu peux espérer par le pragmatisme de l'utilisateur.

Avec en bonus : l'itinéraire offert au client qui aura réservé en ligne sa place, son billet, son séjour ... auprès d'une centrale de réservation globale.

Pour moi, cela apparaitrait être un beau, un très beau programme alléchant, en discernement et en confiance. Et je ne doute pas que toutes les Régions, tous les Départements et autres Communautés de Communes aimeront en considérer un intérêt et une particulière pertinence.

Avec en clef sublime : une plate-forme de communication active auprès des "clients" par l'expédition de sms d'actualisation temporelle opportune (attention : les annulations après paiement et réservation seront très très très mal vécues désormais par la clientèle !).

Voili-voilou ! Stratégie, stratégie, stratégie. Et haut respect du prospect.

Bon ! c'est un peu ce que la SNCF a mis 20 ans à mettre au point, et encore : car l'ergonomie ou sa logique de saisie en ligne n'est toujours pas (ou pas toujours) d'un abord facile ...

Or ici, je te souhaite de te rapprocher du Ministère de la Culture. Non ?
Modifié par Arrival (13 Jun 2020 - 17:32)
Merci de ta réponse
Le problème que je traite pour l’instant est beaucoup plus limité que celui que tu proposes de traiter. Il s’agit simplement de permettre à UNE SEULE personne d’administrer les données d’un site.
Aujourd’hui je fais ça par copier coller dans une feuille Excel, ça me prend à tout casser 5 minutes pour ouvrir le fichier Excel, ajouter les infos des prochaines activités, exporter les données vers le site.
Mais ce n’est faisable que parce que c’est moi qui fais tout et que les données sont réparties entre une demi-douzaine de feuilles Excel et que l’interface utilisateur d’Excel a été étudiée pour faciliter la saisie, rechercher des données etc.
Si je mets les données dans une base de données sur le site, la personne qui va devoir faire la même chose n’aura pas les mêmes facilités. Au lieu de quelques copier/coller, il va falloir ouvrir des boites de dialogue, au moins une par nouvelle activité et aller chercher dans des listes des données telles que le lieu de l’activité (mais pas seulement). Mon objectif est de faire que les 5mn actuelles ne demandent pas au malheureux administrateur plus de 30 minutes.
Alors, grâce à un choix de préférence minimaliste, par le jeu d'un menu et de sous-menus (que tu auras prédéfinis) où apparaitront de rigueur :

1. les Départements dispo
2. les Villes dispo

un visiteur/amateur n'échappera pas à sa réalité corporelle géographique : à un tel lieu, mais qu'il soira dans sa quête de convenir par lui-même d'une date non révolue mais proche ou prochaine !

Ainsi, à un "malheureux" Administrateur ne devrait pas échoir plus de 15 minutes à gérer quelques lignes, par mois ... en les ajustant de son crû.

Libre à toi de pré-programmer par .js ou .php qu'une date révolue ne puisse plus rien engager dans le menu et ne puisse s'afficher ...
Modifié par Arrival (13 Jun 2020 - 18:51)
Une chorale parisienne sort rarement de Paris et très rarement d’ile de France. Donc la recherche ne se fera pas souvent sur la localisation.
De plus un parisien ne connaît pratiquement jamais le nom de la ville de banlieue où se trouve la salle. Et s’il la connaît il ne sait pas l’écrire correctement.
Baser la recherche sur la date à laquelle on a utilisé précédemment cette salle est sans doute la chose à faire.
Simplement je dois faire en sorte que ces informations soient facilement accessibles dans la base de données.
Sur ce point j’ai passé quelques heures à préciser dans les données des infos complémentaires, je peux passer aux points suivants
Alors : la date musicale figurerait un prime menu !

Puis en sous-menu, la Ville/Arrondissement puis ... ce que tu veux.
Alors, un menu selon la date à venir (et par .js ou .php tu rends obsolète à l'écran les dates dépassées, et peu importeront des écritures antérieures) sera ton prime menu.

Restent les sous-menus qui renseignent les lieux (évidemment et automatiquement à venir) que de malheureux administrateurs pourront rédiger ... en 15 minutes sans désormais craindre d'erreur temporelle.
Alors, n'offre au malheureux Administrateur la possibilité par la feuille Excel que de modifier Lieu et Date dans un Menu et sous-Menu pré-définis. Lesquels apparaitront aussitôt modifiés, automatiquement sur la page-web : Où ? Quand ?

Selon les droits d'administration et d'accès au FTP, il est utile de considérer la confiance et l'autorité, voire que celles-ci soient restreintes par quelques modifications, celles qui porteront à quelques lignes très choisies d'une feuille Excel !

Et qu'aussitôt qu'une date soit révolue, l'annonce serait supprimée de toute apparition sur la page-web (par fonction .php pré-programmée par tes soins).

J'écris ceci pour faciliter l'éventuelle tâche d'un pauvre administrateur ...
Pages :