Allow users to only submit once

Hi there, I’m relatively new to Glideapps and I’m struggling to solve an issue.

I’m looking to allow users to only submit a form once. I’ve looked at a couple of tutorials and followed them without success.

Could somebody provide me a tutorial on how to allow users to only submit a form once?

I’m assuming there’s some way to look up the user’s submission info and then subsequently revoke access to the form.

Ideally, I’d love to follow a video tutorial or detailed screenshots

Many thanks,
Mark

Your best bet is to set a visibility condition on the form button itself. What you’d do is create a relation between your responses sheet to your user profiles sheet. Basically, if that relation is not empty, then the user appears in the responses sheet (so they’ve submitted the form). You can then put a visibility condition on the form button to have it only show if that relation is empty.

2 Likes

Ok cool. Do I have the setup correct? I’ve currently got 3 tables of information.

Users | Events | Submissions

The current user journey is that they go to an event, submit a form for a specific event, and then it appends the form submission table.

I’m looking for users to be able to submit forms for multiple events. Would what you suggested work for that use case?

In that case, the user needs to be able to submit the form more than once.

It sounds like you want to remove events from the list of event choices if the user has already submitted the form for a particular event. Is that right?

If that’s the case, your best bet is to gather the choice of event prior to the form submission — make a choice component in a details page, then have a form button underneath it. In the form, that choice a user makes can get passed to the form through a Column value.

In that choice component itself, you should be able to filter it to exclude choices that the user has already made. You can then set a visibility condition on your form button to only show if the choice component is not empty.

Check out this post:

1 Like

I’ve currently got a list of events. and what I want the user to do is to choose an event and then submit a match prediction. The user should be able to predict results for multiple events.

Ideally I’d like them to still see details of the event after submission.

Create a relation from your user profiles sheet to your submissions sheet, matching the email, returning multiple matches.

Then in your profiles sheet, create a joined list column that takes the event ID value from the relation above, separated by a comma.

Show the button when the signed-in user’s joined list column doesn’t contain the screen’s event ID.

The setup should be:

User profiles:

  • Name
  • Email
  • Image
  • Rel_to_submissions (matching User profiles - Email to Submissions - Email)
  • Joined list (Rel_to_submissions - taking Event ID separated by commas)

Events:

  • RowID (EventID)
  • Event name
  • Event time
  • In the details view, add a Form button that sends to Submissions RowID (via Screen Columns), Signed-in user’s email (Special Value), Prediction (input).

Submissions:

  • Event ID
  • Emai
  • Prediction
2 Likes

That looks great! I’ll give that a bash and let you know how I get on!

I tried the above but I seem to not be able to get it to work as expected :upside_down_face:

Would you be able to create a demo of what you specified above? I’ve spent the last 2 hours trying to get this to work without any luck!

Thanks for your help!
Mark

If you can send me a copy of your app here or in private message I can jump in and make quick edits.

This is what I would do.

  • Create a template column in the events sheet that joins the event ID to the email of the signed in user from the user profile sheet (assuming you have enabled user profiles). So it should look something like this. "Event123 - email@email.com"
  • Next create a similar template column in the Submissions sheet, but instead of getting the user email from the user profile, you will join the Event ID to the email column in the submission. (This is assuming you have used Column Value components to pass the event ID through the form, as well as use the Email Special Value to save the signed in user’s email to the form submission sheet).
  • On your Events sheet, create a relation that joins the template column you created in the event sheet to the template column you created in the submission sheet.
  • Set visibility on the form button to only display if the relation is empty.
1 Like

Hi Jeff,

Thanks for your help with this. I setup the tables in the following way but I can’t seem to get the relation column to display in my table.

I’ve attached an image listing out the columns I currently have setup.

Also, I’ve attached screenshots of the data tables in Glideapps.

Can you help with this at all? Apologies for not understanding this yet. I’m finding this a bit trickier to get working than I imagined.

FYI - I’ve redacted the emails from the photos but they are appearing in the expected places except the relational table in the events page.

Many thanks,
Mark

I’m a little confused by your images compared to your last image. Are you using the literal value ‘email@email.com’ in the template you are using for the relation? You should be replacing that with the value of the signed in user email from the user profiles sheet.

Also, you can make your replacement values a lot simpler. Something like ‘Event - Email’ is a lot less wordy.

1 Like