OK I understand what you mean.
(but don’t know how to do this for now, I’ll search…)
Concerning multi-voting, I haven’t given you all the information…
In fact, each visitor (adult or child) receives a (tombola) ticket at the entrance, with a unique number.
The only mandatory field in the questionnaire is this ticket number. So the only thing I need to figure out is how to get the app to check that the number isn’t already in the data tables. Is this possible?
(If not, in truth, it’s not a big deal - it’s a small (700 visitors over 2 days), friendly board game festival, so there won’t be much cheating (if any)!
Okay, given the above and that security isn’t a real concern, I think I’d suggest a completely different approach.
What I would do is create a separate table just for capturing votes. In that table you just need two columns:
Ticket Number
Photo ID
Each time somebody wants to vote for a Photo, prompt for their ticket number and capture that in a User Specific column in your Photos table. Build a relation to your Voting table match the entered Ticket Numbers in both cases. If that relation is empty, you know that Ticket Number hasn’t been used and so you can go ahead and add a row to the Voting table.
To get a count of votes per Photo, create another (multiple) relation in the Photos table that matches the PhotoID with the same column in the Voting table, and then do a Rollup->Count through that table.
This method uses more rows, but is much simpler. And as you’re expecting less than 1000 votes, row limits shouldn’t be an issue, even on a free plan.
Since Pangol mentioned he doesn’t speak English fluently, I’ll answer in French — I hope that’s OK! Please let me know if you’d prefer me to stick to English instead
Avant tout, bienvenue sur la communauté Glide et félicitations pour ce beau projet (aussi bien pour l’idée de l’application que pour le festival de jeux)
À mon avis, ton problème actuel n’est pas technique, il réside plutôt dans la définition de ton besoin. J’entends par là que dans Glide, la réponse apportée dépend souvent du contexte et de la façon dont l’application va être utilisée : l’exemple de la création ou non d’un compte utilisateur en est un bon exemple étant donné que cela peut - dans un cadre professionnel par exemple - être un point crucial (d’où la réponse allant dans ce sens de la part @Darren_Murphy
avec la table Utilisateurs au début de l’échange)
Comme tu l’as précisé, de ton côté, tu cherches simplement à organiser un concours placé sous le signe de la bienveillance dans le cadre d’un festival convivial et sans enjeu (mais avec des jeux [désolé, c’était tentant de faire un jeu de mots en français pour une fois !]).
Pour t’aider au mieux, je me permets donc de te poser quelques questions qui nous aideront à te guider dans la bonne direction
Questions pratiques
Est-ce que tu as une idée de la façon dont les personnes vont voter ? Devront-elles télécharger l’application ou laisseras-tu - par exemple - une tablette tactile pour permettre aux gens de voter ?
Comment envisages-tu la partie une personne au hasard parmi celles ayant voté pour l’image gagnante ? Est-ce qu’une liste des personnes (des numéros de tickets plus exactemnt) ayant voté pour l’image en question serait suffisant pour toi ? J’imagine d’ailleurs que c’est pour cela que tu avais besoin de la liste des noms des votants non ?
Combien auras-tu d’images parmi lesquelles faire un choix ? Tu as 8 lignes dans ta capture d’écran mais peut-être que ce n’est pas la version finale si ? Et est-ce que l’utilisateur doit pouvoir mieux voir l’image avant de voter (en cliquant dessus par exemple) ?
Est-ce que c’est toi qui assurera la partie technique lors de l’évènement ? Ma question c’est de savoir si tu auras accès au back-office de Glide (la partie où tu développes actuellement l’application) ou non… (notamment pour accéder à la liste des votants)
J'en profite également pour t'apporter quelques explications techniques, notamment sur ce que Darren a évoqué ;)
Précisions techniques
L’idée est de stocker chaque vote dans une table qui n’aura que ce rôle-là. Les deux informations dont on a alors besoin sont : le numéro de ticket et l’ID de la photo choisie (ID qui peut être artificiel dans Glide, il est très facile d’ajouter un identifiant unique, c’est souvent une bonne pratique d’un point de vue technique, ça consiste simplement à créer une colonne de type Row ID)
La Relation est un type de colonne dans Glide qui permet de faire le lien entre plusieurs tables. Ici, tu pourrais créer une colonne Relation dans la table des images, et qui ferait le lien avec la table des votes que l’on vient d’évoquer. C’est la manière technique de dire "trouve-moi tous les votes associés à cette image).
Une fois la Relation créée (encore une fois, c’est simplement une colonne dans la table ), tu peux faire une nouvelle colonne de type RollUp qui te permettra de compter le nombre de vote. Ainsi, tu auras le nombre de votes pour chaque photo et cela se mettra à jour au fur et à mesure des votes.
Potentiellement, cela te permet aussi d’obtenir très facilement la liste des tous les numéros de tickets qui ont voté pour cette image. Par exemple, si l’image A a 3 votes, tu pourras savoir que c’est le vote du ticket 42, 68 et 345
Avec cette logique très adaptée, tu n’as plus besoin de faire une action Increment value puisque tu stockes tous les votes et c’est la colonne RollUp qui se charge du décompte
Dernier point, en procédant ainsi, il est assez aisé de contrôler qu’un numéro de ticket n’a pas déjà voté (même si encore une fois, ce n’est pas vraiment un sujet) puisque nous avons l’historique de tous les votes avec les numéros de tickets associés (il faudra faire 2 ou 3 colonnes complémentaires, mais nous te détaillerons cela bien volontiers si c’est bien ce que tu souhaites). Tu pourras même faire en sorte que le bouton de vote n’apparaisse alors pas, ce qui empêchera un deuxième vote par inadvertance !
Cela fait beaucoup d’informations, j’espère que ça reste digeste
Très belle réponse, merci beaucoup !!! Merci aussi pour les encouragements et les jeux de mots !!!
Merci aussi aux contributeurs précédents… (@Darren_Murphy@Jeff_Hager )
Allez, je veux bien continuer en français, c’est plus facile.
Pour répondre à tes questions :
les gens voteront depuis leur téléphone : un QR code et hop !
alors je l’envisageais à l’arrache : extraction de la liste des personnes ayant voté pour le jeu, et un gamin aurait dit un chiffre au hasard… Ou alors on lancera des dés pour rester thématique… (oui, c’est pour cela que j’ai besoin de la liste des votants).
pour le moment il n’y a que 8 images, ce sont les jeux déjà reçus (des nouveautés envoyés par les éditeurs, qu’on fait ensuite gagner via une tombola). Habituellement on a une trentaine de jeux.
Eventuellement le visiteur peut agrandir l’image, mais ce n’est pas très important si ce n’est pas le cas, il y aura une affiche avec toutes les illustrations.
oui, j’assurerai la partie technique (ce qui n’est pas le plus malin, il y a des informaticiens parmi les animateurs… Mais comme je me tape toute l’orga, ce sera quand même le plus simple !). On aura un ordi branché pour gérer le stand de bourse aux jeux.
Alors, je comprends bien le principe de ce que tu m’expliques, j’ai essayé de faire par moi-même hier soir, mais chou blanc (trop crevé…).
Je vais réessayer un peu ce soir, et je te demanderai après plus de détails !!!
Pour le moment je bloque sur le bouton VOTE. Dans ma version, il existait parce que j’avais l’incrémentation, mais sans ça je ne sais pas comment/vers quoi le renvoyer…
Avant de regarder la partie technique, est-ce qu’une approche comme celle-ci te conviendrait ? Après prise en compte de mes modestes compétences et de tes explications, je me suis permis d’apporter quelques changements par rapport à ton point de départ afin d’éviter d’inutiles contraintes techniques. Par exemple, un bouton “Vote” unique plutôt que sur chaque jeu.
Un exemple de rendu
Le bouton de vote n’est cliquable que si le numéro de ticket n’a pas déjà été utilisé pour un vote Une famille avec plusieurs ticket peut tout à fait utiliser un seul smartphone pour voter plusieurs fois (ça évite aux jeunes enfants de moins de 8 ans d’apporter leur propre matériel ) Au plan pratique, rien n’empêche d’utiliser un ticket qui n’est pas le sien (mais le risque est acceptable, comme tu l’as déjà expliqué) Les utilisateurs ont accès à la fiche du jeu, ce qui te laisse la possibilité d’ajouter des informations complémentaires (nombre de joueurs, description du jeu voire règles sommaires, temps d’une partie etc.) voire même un carrousel de plusieurs images/photos/illustrations du jeu si tu le souhaites (très simple à faire, dès lors que tu as plusieurs images bien sûr)
Côté Data
Dans la partie back-office de Glide, tu obtiendrais ceci pour la table des Jeux, avec le nombre de votes calculés automatiquement ainsi que la liste des numéros de tickets ayant voté pour le jeu en question
Et en complément, l’application étant publique, les utilisateurs n’ont pas besoin de se créer un profil utilisateur. Le bonus pratique, c’est le QR code automatiquement créé par Glide au moment où tu publies ton application (je l’évoque par rapport à ta réponse)
Dis nous ce que tu en penses et en fonction de ça, on ajuste et/ou on te guide pour y parvenir !
Merci à toi pour toute cette aide !!!
Désolé, je n’ai pas eu le temps de me pencher dessus…
Très chouette ce que tu as fait !!!
La seule interrogation que j’ai, c’est qu’avec 30 jeux, quand le votant arrive sur la page avec la liste des noms, il ne sache plus quel nom correspond à quelle image. C’est pour cela que j’avais mis le bouton vote sur chaque image… Mais c’est vrai que c’est un peu trop présent…
La gestion du n° est bien mieux que la mienne. Est-ce qu’il est possible d’ajouter à cet endroit également le nom et un moyen de joindre la personne, je ne pense pas qu’on ira chercher la souche du ticket pour retrouver les gagnants s’ils ne sont pas là au moment du tirage.