Using the Participants Database 1.5 Plugin

Shortcodes this Plugin Uses

This plugin uses a number of different shortcodes to place it’s functionality in your content. Here is a list of all the shortcodes with a brief description:

  • [pdb_signup] – This prints out the signup form including only those fields selected for inclusion. On submission, it creates a new record and optionally notifies the admin and the person signing up by email.
  • [pdb_list] – This shortcode prints out a list of records from the database. Which records get displayed and how can all be determined in the settings or in the shortcode. You can optionally show a search and/or sort control with the list.
  • [pdb_single] – This shows a single record as determined by the record ID present in the URL used to access the page. It is possible to set a link to the single record in the record list, allowing for a detail display of a single record.
  • [pdb_record] – This shortcode only displays when accessed with a URL including the record “private id” number. It allows the user to edit and add to their own record, while others won’t have access to it. A private link to this record can be included in the “thankyou” email they will receive on submission.
  • [pdb_signup_thanks] – If you want to send the people who use the signup form to another page after they submit, you can use this shortcode to display the thank you message. This is not needed if you have them just go back to the signup page, the signup shortcode will take care if it.
  • [pdb_search] – will show a search form which can be placed anywhere. When the search is performend, the user is taken to a page with a [pdb_list] shortcode and shown the result of their search.
  • [pdb_request_link] – shows a form for requesting the private link to be resent.
  • [pdb_total] – shows the either the number of records matching a given filter or the numeric total of a given column of values.

Take a look at this article for a full explanation of all the shortcode attributes you can use: Shortcode Attributes Explained

Showing a list of records

You can use the [pdb_list] shortcode to show the records on your site. Just put the shortcode where you want it to show up. Here is the full list of parameters you can use with the [pdb_list] shortcode:

  • search – set to ‘true’ to show a list search field
  • sort – set to ‘true’ to show a list sort field
  • fields – a comma-separated list of fields to show (defaults to the display-column setting of the fields)
  • list_limit – sets the number of records to list per page (defaults to the plugin setting value)
  • class – lets you set the CSS class of the container (defaults to ‘participants-database’)
  • filter – lets you determine which records are shown (see the usage notes for an explanation)
  • orderby – order the list by one of the columns
  • order – determines whether the list is ordered in ascending (asc) or descending (desc) order
  • display_count – if set to ‘true’ will display a total of all records

You can set the number of records to show per page with the ‘list_limit’ setting.

List Columns

Which columns are shown by the shortcode is set up on the fields management page. For each field there is a value called “display” that determines the order of the columns in your list display. You can also set the columns to display in the shortcode by including a list of the names (not Titles!) of the fields you want to show in the order you want to show them: [pdb_list fields="last_name, city, email, photo"] If you want to get tricky with the CSS, each header column has a class name that corresponds to the name of the field, you can use CSS to lay out the listing exactly as you want.

Searching and Sorting The List

You can activate list searching and/or sorting for your users with these attributes: [pdb_list search=true] or [pdb_list sort=true] These attributes will enable a search form and/or sort form displayed above the list. The user can select which field they want to search through a dropdown and type in a search term. Only fields that are displayed can be searched. For sorting, the fields offered for sorting must be checked as “sortable” and also be present in the list display. There are two search modes for the list: strict or not strict. If the “Strict User Searching” setting (this is in the plugin settings) is checked, the search term must match exactly the whole contents of the field in order to be found. If unchecked, the search will show any records where any part of the searched field contains the search term. The search function is pretty simple, only searching only one field at a time. If you need more control over the search functionality you offer your users, you will need to create a custom search function for that purpose. I have created an API to make this kind of custom functionality easy to create, but knowledge of PHP and HTML will be needed to take advantage of that. In the future, I will be offering auxiliary plugins that can add enhanced search functionality.

Search Wildcards

The search from will accept wildcards for more control over the results. The asterisk stands for any string of characters, while the question mark stands for a single character. To search for all entries that begin with the letter “b” for instance, you would use the search term “b*”

Filtering which Records Get Shown with the List Shortcode

There are 3 parameters for the [pdb_list] shortcode that allow you to determine which records get shown. It’s a little complicated, but here’s how you do it. There is a parameter called ‘filter’ which determines which records to show. The general format of the parameter is this: field operator value So, for instance, if you wanted to show all records from the state of New York, you would put [pdb_list filter='state=NY'] . “state” is the field (it must match exactly the field name as listed on the Manage Database Fields page in the plugin) “=” is the operator and “NY” is the value. The filter is grabbing all records where the state is NY. The operators can be ‘=’, ‘!’, ‘<‘, ‘>’ and ‘~’ only. ‘!’ means “NOT”, so if you wanted everything except a certain value. ‘<‘ and ‘>’ mean “less than” and “greater than” and can be used to compare values, like this: [pdb_list filter='last_name>k' ] That would give you all the records where the last name began with any letter coming after ‘k’ in the alphabet. The ‘=’ operator looks for a strict match, and the ‘~’ looks for a string inside the value. Careful with this one, it can give unexpected results. These comparisons can be made with dates and numbers too, of course.

You can use the filter to exclude records that are missing a field or have a blank value by using the not operator and no value: [pdb_list filter="phone!"] You can of course chain this with other filers, all you’re doing is omitting the “value” part of the filter statement.

Chaining Filters

You can use more than one filter by stringing them together like this: [pdb_list filter='last_name>c&last_name<h' ] (note ampersand between filter statements) This gives you all records with last names that start with d through g. Upper case or lower case doesn’t matter.

Filters can be also be chained by an “or” operator by using the “|” (pipe) character. For instance, to get all the records with either “New York” or “Brooklyn” you could use: filter="city=New York|city=Brooklyn" And they can be combined: filter="color=red|color=orange&size=large" will give all large items in red or orange. Note that items separated with an “or” operator will be parenthesized, meaning that the above example would not return a list of all the red items plus all large orange items. This is because the parenthesized part is resolved first, so “red or orange” is resolved as a unit before the rest of the filter is included.

Filters accept wildcards (same as described above for user list searches) so you can set up a shortcode to show, for instance, all the entries beginning with a certain letter. This could be useful for breaking a list up into alphabetical groups.

Filtering Dates

To correctly compare dates, the field must be defined as a date field form element on the manage database fields page. Date values should be a regular date string like this: [pdb_list filter='date>jan3,2012'] It’s best not to use a number for the month (and maybe you have to use English month names) because the date/month/year order is different on different servers. If you really want to use numbers for the date, just try it to see what the correct order for your web server is. The “Strict Date Format” setting affects how the shortcode filters are interpreted, so if this is checked, the date format in your filter argument must match the date format set in your WP General Settings.

Approving Records for Public Display

One application for the list filtering option allows you to control whether a record gets displayed, giving you an approval process for new records. Create an administrative field (one that is not displayed or edited on the frontend) called “approved” that is a checkbox. Put this (without the quotes) in the values for the field: ‘yes,no’ with a default value of ‘no’. Then put this in the shortcode: [pdb_list filter='approved=yes'] Now, only records that have been approved will be included in the list display. You may need to do something like this if you get a problem with spam, for instance.

Admin List Filter

The admin listing now allows a range of dates to be entered in the search field: just type in the first and last dates you want to see, separated by the word “to” like this:

July 1, 2013 to Aug 1, 2013

This works for timestamp fields as well.

Showing a Single Record

To show an individual record on the website, use the [pdb_single] shortcode. You must include the id of the record in the URL, so there must be ‘pdb=1333′ at the end of the page URL. The ‘1333’ in this example would be the actual id number of the record you want to show.

Adding a Link to the Single Record to the List

While a list is a good way to show a lot of records, you can only show a limited amount of data from each record. A good way to deal with this is to add a clickable link to each record in the list that, when clicked, takes the user to all the details contained in that record. You can set this up by defining the page on which the [pdb_single] is placed, and the column where you want the link to appear. In the plugin settings, under the List Display tab, look for “Single Record Page”: set that to the page where your [pdb_single] shortcode is. Then, in “Single Record Link Field” choose which field will be the link to the single record page. You can set the link on any text field or an image field. If you want to make a field that is just for linking to the record, create a field called “link” or something and then put as the default value the text you want to use for your link like “VIEW”. You must use the “detailed” list template for this to work. If you are good with CSS, you can easily make the link look like a button.

The Signup Form

To create a new record on the frontend of your site, you must use the “signup” form. The fields included in this form are defined in the “signup” column on the Manage Database Fields page. It is also possible to define which fields are presented in the form in the shortcode itself using the “fields” attribute as described above. This is one way it is possible to have different types of signup form. When a user fills out a signup form, the can be sent a receipt email confirming the submission. This email may also contain a private link to a page where their record may be edited. It is also possible to have an email notification sent to an admin when a signup occurs. These actions are set up in the settings under the “Signup Form” tab. When a signup form is submitted, the user can be directed to a “thank you” page acknowledging their submission.


If you need a simple way to stop registration bots from sending in spam submissions, there is a CAPTCHA field that asks a random simple math question. For coders, the plugin API provides an easy way to add your own custom test.

Resending a Lost Private Link

If you want to give the user the ability to receive their private link again, check “Enable Lost Private Link” under the Resend Link tab on the settings page. Check the other settings there to complete setting it up. The user will be asked to supply a piece of information that will identify their record. Their private link will be sent to the email address saved with the record.

Hidden Signup Fields

There is a field type called “hidden” that can be used to add dynamic values to the signup form submissions. For instance, if you had the signup form in multiple locations on your blog, you could know which page the user was on when they signed up because the page name would be placed in a hidden field. Here is a quick tutorial showing how to add a field that tracks the page the signup form is on:

  1. Add a new field with a descriptive name, like “source page”
  2. Make that field a hidden type
  3. For the default value, put “post->post_title”
  4. This will fill in the title of the page the signup form appears on.

When the form is submitted, the information in the hidden field will be included. At the moment, only two WordPress objects are available: $post and $current_user. You can look these up in the codex to see what properties you can access. The way this works is simple: just put the name of the property in the default value field for the hidden field. For instance “current_user->user_login” will put in the user login of a logged-in user. You don’t need the dollar sign, it will ignore it if you do put it in.

You can also access some PHP “Superglobals.” For instance, to get the IP of the user, put this into the default: “SERVER:REMOTE_ADDR” You can access these superglobals: POST, GET, REQUEST, COOKIE, SERVER, SESSION. This means you can get a value from a cookie and put it into the form, saving it when the form is submitted. You don’t need the ‘$_’ that is used in PHP. The PHP site has a good reference for using superglobals. Superglobal arrays can be accessed with an index like this COOKIE:location[city] where “city” is the index in the array $_COOKIE[‘location’].

If you just want to put in a fixed value, the hidden field will include any string you put into the “default” for the field. This can be useful as a place to put links in a list or single record display.

For those with some Javascript skills, you can use these hidden fields to store dynamic information about a signup. The template file makes a convenient place to include your custom Javascript. Dynamic hidden fields also work in the form presented by the [pdb_record] shortcode. These fields are visible and editable in the admin edit page.

Setting Up the Signup Form “Thank You” Page

To have your visitors go to another page after they submit a signup, go to the settings page and set the “Signup Thanks Page” setting to point to your page. Place the [pdb_signup_thanks] shortcode on that page to display the thank you message. You don’t have to use the shortcode, but it gives you a way to thank them using their name. It’s also possible to use this feature to make filling out the signup form required in order to get to another (hidden) page on your website.

It’s also possible to determine which page the user goes to after a successful submission in the shortcode, by using the “action” attribute. For instance, of you were using more than one signup form, this makes it possible to send users to a different thank you page depending on which signup form was used.

The Search Shortcode

This shortcode gives you a way to show a search form without the list and send the user to another page (or the same page) to see the results of their search. The shortcode has an attribute named “target_page” which tells the search form where the search results page is. You don’t need to use this if the search shortcode is on the same page as the target list, but if you put the search shortcode into a widget that can be on any page, you’ll need it.

[pdb_search target_page="search-results"]

The “Total” Shortcode

This shortcode provides an easy way to show stats and totals from the database. In it’s simplest form , it shows the total number of records, but you can use the filter attribute to show other totals such as the totals from a certain location, or just to show only approved records and stuff like that.

This shortcode can also be used to show a calculated total from the data stored in any field. Put the name of the column to be totaled in the “fields” attribute and all the numbers stored in that field will be summed and displayed. The “filter” attribute can be used to limit which records are included in the total.

The shortcode template is where all the math happens, and this gives you the flexibility to show things like cumulative standings, earned totals, or the time elapsed since a date stored in the database (for instance, an age based on the birthday field). Because it’s in a custom template any kind of calculation that you can think of is possible. Take a look at the template file for this shortcode (pdb-total-default.php) for a simple demonstration of how that can be done.

The output of this shortcode is simply a number, so it can be used inline or you can  put a bunch of them on a page to show several things at once. For instance:

There are [pdb_total filter="approved=yes"] signups so far!

The Groups Attribute

The new “groups” shortcode attribute greatly simplifies managing which fields are shown. For the ‘signup’, ‘record’, and ‘single’ shortcodes, when the groups attribute is defined, only those fields contained in the groups named will be shown. For the “signup” forms, the fields must also be enabled for the signup form.

Form Templates

All shortcodes use a template to determine how they are presented. Plugin default templates are found in the “templates” directory in the plugin directory. There are several examples to show you a little of what is possible. I have created a page to guide you through the process of creating a plugin template here. Please note that using templates will require some understanding of HTML, CSS and PHP.

>>How to use plugin templates…

The default and example template files include comments to help you develop your own templates easily.

Single Record Templates

Templates for the single record shortcode include an array that can be used to prevent some fields from displaying. Let’s say you wanted to exclude the city, state and postcode. In that case the array would be filled with those names like this: $exclude = array('city','state','postcode'); These fields will now be excluded from the display. Of course it is also possible to determine which fields are shown in the shortcode using the “fields” attribute. The template offers many other opportunities to customize the output of the [pdb_single] shortcode to match your theme.

Image and File Uploads

Images and files can be uploaded through the “image upload” or “file upload” form element types. The allowed file types are set globally in the settings (General tab) or they can be set for each field by listing the allowed file extensions in the “values” field for the field. Please note that file uploads can present a security risk. The plugin offers some protection from malicious use by renaming the uploaded files to insure that only an allowed file extension is present in the filename. It is important to make sure your web server is configured so that your allowed file types cannot be executed as scripts. Ask your web host tech support if you are unsure about this.

Image and file uploads can be stored anywhere in the WP install directory, and can be moved without breaking image sources and links. The ‘File Upload Location’ setting will always determine the location for the images and files. IMPORTANT: Don’t store images or any other custom information in the plugin directory because they will be deleted by automatic upgrades. The default location for plugin uploads is in “wp-content/uploads/participants-database/” and for most installations this is a good place to keep them.

Importing & exporting CSV Files

CSV is a common file format for exporting or importing databases and spreadsheets. You can export a CSV file from your spreadsheet or database and import the records into the plugin. It can be a tricky process, so I’ll offer a few hints here on getting it to work.

The import will work most reliably if the CSV file has it’s fields delimited by a comma and the text enclosed by double quotes. (this is actually only required for a field that contains a delimiter character) The first row should be a header row containing the column names (which are the same as your field names). The encoding of the file must be UTF-8. On the CSV import page is a button to export a blank CSV file in the correct format to get you started. It is critical that your database or spreadsheet application be able to export the CSV in the proper format for the process to work. In some cases, you may have to open your CSV file (as exported from your spreadsheet or database) in a text editing application for further modification to get everything working. This must be a plain-text editor, don’t try this with a word processor! In particular, if your data has both double and single quotes (which are also apostrophes!) in it, it will be very difficult to import because one of the two will need to be used as the text delimiter. This does not apply to “curly” quotes and apostrophes, which are not enclosure characters. I suggest you convert quotes and apostrophes that are part of blocks of text into their HTML equivalents: &#39; for apostrophes and single quotes and &quot; for double quotes. This way, the text delimiter can do it’s job without other characters interfering. You will probably have to use a text editing application to make these substitutions.

The “Image Upload Location” setting in the plugin is important here because that is where the plugin will place the uploaded CSV. The default setting for this is ‘wp-content/uploads/participants-database/’ If the plugin does not find the directory specified in the “Image Upload Location” setting, it will attempt to create it. It should notify you if it fails, and you may have to create the directory manually (using an FTP client, for instance) to get the CSV import to work.

The plugin can also export a CSV file from the “List Participants” page. The same fields that are selected to import with the CSV will be exported. If the list is getting filtered (for instance, with a date range) only those records will be exported. If you are planning to export records from the plugin and then re-import them (for instance, if you wanted to edit them in a spreadsheet application) you should export them with the record ID numbers. Then, when you re-import them, make sure the setting under the “Signup Form” tab is set to overwrite matching records and that the matching field is “Record ID.

Multiple-page Forms

Multiple-page forms are now easily implemented using the new “action” shortcode attribute. When a signup or record form is submitted, the user will be taken to the page named in the “action” attribute. If that page has a [pdb_record] shortcode, it will show an edit form for the same record, allowing additional data to be added to the record. Check this post for a tutorial: Creating Multiple-page Forms in Participants Database.

Plugin Support

I do monitor the WP forums and comments page on my own website for support requests. I very much appreciate bugs being brought to my attention, so please let me know if things are broken or not working as expected. I only ask that you read the documentation before posting with support requests because it will save us both valuable time. Many of the issues people have are due to improper setup or use of the plugin…this is partly due, I know, to shorcomings in the documentation. It is a complex plugin with lots of options, so it can be difficult to explain how it works in a way that everybody will understand.

About Plugin Display and CSS

I get a lot of questions about how to make the plugin’s output look like the site it’s on or how to make things look different. I have made efforts to set up the plugin output to work most of the time out-of-the-box, but with so many themes out there and so many ways to control how things look, things don’t always look right. While I try to answer specific questions about formatting the output of the plugin, most questions about CSS are far too general for me to answer with a fix. If you are responsible for what things look like on a website, I think you should have an understanding of how the CSS and stylesheets work on the site. The single most helpful thing you can do if you want to understand how the CSS is working is use Firefox with the Firebug extension. It will show you what CSS rules are affecting any element of the page and also allow you to edit the CSS and see the effects of your changes right away without breaking the display for other users. You can learn a lot that way. If you want to get help with a particular aspect of the display, be specific, say what you want to see, and if possible provide a link for people to see what you’re talking about. Questions like “things are messed up, something’s wrong” will probably be ignored.


Send forgot private link option works BUT the link in the resultant email message is EMPTY! What may be wrong? How do I fix this?

by Gordon Rickard on April 20, 2014 at 2:54 pm. Reply #

Be sure to set up your resend link: go to the settings page check all the settings under the “Resend Link Settings” tab.

by Roland on April 20, 2014 at 5:38 pm. Reply #

I’m having the same problem as Alex, I think. Since updating to 1.4 the pdb_list short code doesn’t display anything, in fact it breaks the page – nothing after the header and the page title display.
I’m not using multi-site. How/where do I add the ‘readonly’ column to my database.

by Andrew May on November 27, 2012 at 8:02 am. Reply #


Try this fix for the display error:

in the file classes/Image_Handler.class.php on line 138 you’ll find:
abstract function set_default_image( $image );
change this to:
abstract function set_default_image( $image = false );

I’ll have to issue a patch for the database…the code to update it automatically is not working and I don’t yet know why.

by Roland on November 27, 2012 at 8:37 am. Reply #

Thanks for the swift response. I’ve made the edit you suggest, but still no joy. You can see the result. On my Teachers page.

by Andrew May on November 27, 2012 at 10:03 am. Reply #

Updated to 1.4.1 and all is working again. Thanks

by Andrew May on November 27, 2012 at 9:22 pm. Reply #

I use wp multisite. I upgraded to the newest version of pdb but then my pages was blank. I found that the update procedure did not add the new “readonly” column in the two mysql databases of my two sites. I had to add it manually. It may be because I use multisite and that pdb is not yet multisite compatible? I got pdb working originaly by creating the database of the second site manually. After creating the readonly column in both my pages displayed again. Others may experience this issue also.

by Alex on November 26, 2012 at 11:49 pm. Reply #


I do not know if the plugin is compatible with multisite, I have not yet tried to test it on that platform. Thanks for letting me know about this issue.

by Roland on November 27, 2012 at 4:03 am. Reply #

Hi Roland,
I’ve just noticed something in the creation/editing of records that will definitely cause a degree of annoyance from my client and subsequent embarrassment for me. The WYSIWYG editor for textarea fields refuses to convert line feeds to tags, or even tags. Yet other tags such as ordered/unordered lists, blockquotes and font attributes are supported.

Line feeds are being converted to non-breaking spaces ( ). Is there a reason why they can’t be converted to paragraph tags, or at least , instead of   ?


by Geoff H on November 26, 2012 at 2:25 pm. Reply #

Let me try that again (the html codes in my last comment were stripped from the text).

The WYSIWYG editor for textarea fields refuses to convert line feeds to paragraph tags, or even linebreak tags. Yet other tags such as ordered/unordered lists, blockquotes and font attributes are supported.

Line feeds are being converted to non-breaking spaces. Is there a reason why they can’t be converted to paragraph tags, or at least linebreak tags, instead of non-breaking spaces ?


by Geoff H on November 26, 2012 at 2:30 pm. Reply #


Are you using the latest version of the plugin?

I’m not seeing this problem here. Do you have any plugins installed which affect how regular posts work on the site? The plugin does the rich text fields using the same function as posts and pages do, so if you’ve got anything affecting how this works, it will affect the plugin’s rich text fields too most likely.

I set up the rich text fields to work exactly the same as regular WordPress posts and pages. In WordPress, paragraphs are not normally represented with ‘p’ tags, but with a double line feed. This can be changed by a plugin, though.

Where is it that you’re seeing this converted text?

by Roland on November 26, 2012 at 3:11 pm. Reply #

Just installed the latest update and now it’s totally broken.
No list, no RTF editor despite enabling it in settings, record 1325 now appears in List Participants.
I’ve removed all parameters from [pdb_list] shortcode, set up display colums in “Manage Database Fields”. Nothing but a blank page.

I’ll check for PHP errors and pass the details on if any occur.


by Geoff H on November 26, 2012 at 6:38 pm. Reply #


When you installed the update, did you use the automatic upgrade process? It should have deleted that default record. I’ll be looking for those errors for a clue.

All of my upgrades have gone without a hitch, so I’m very interested to learn what went wrong with yours.

by Roland on November 26, 2012 at 6:51 pm. #


I did the auto upgrade.

After seeing the problems, I decided to delete the plugin completely and re-install from scratch. That cured the major issues.

I can now see a list with links to the single-record page, but when I click on a link I get the blank page again.

The problem appears to be related to having an image upload link field in the database, as seen by the PHP error log:

[27-Nov-2012 07:47:07] PHP Warning: Call-time pass-by-reference has been deprecated in /home/itapps/qcatest/wp-content/plugins/participants-database/classes/PDb_Shortcode.class.php on line 264
[27-Nov-2012 07:47:07] PHP Warning: Call-time pass-by-reference has been deprecated in /home/itapps/qcatest/wp-content/plugins/participants-database/classes/PDb_Shortcode.class.php on line 293
[27-Nov-2012 07:47:07] PHP Warning: Call-time pass-by-reference has been deprecated in /home/itapps/qcatest/wp-content/plugins/participants-database/classes/PDb_Shortcode.class.php on line 294
[27-Nov-2012 07:47:07] PHP Fatal error: Declaration of PDb_Image::set_default_image() must be compatible with that of Image_Handler::set_default_image() in /home/itapps/qcatest/wp-content/plugins/participants-database/classes/PDb_Image.class.php on line 15

If I remove the photo field from the database, I no longer see the fatal error and the detailed record is displayed.

The warnings about deprecation still occur, but I guess they aren’t serious.

I still can’t enable the rich text editor for textarea fields while editing records within Admin, even with all other plugins deactivated. Has this been changed in 1.4?
(I sure hope not)

Would it be easy to add a setting that locks the sort field and asc/desc order in List Participants? It’s a pain having to reset it every time I return to the list from an edit.

Sorry to be a nuisance with all these questions, just under some pressure to get the client’s site completed this week.


by Geoff H on November 26, 2012 at 9:58 pm. Reply #


I am issuing a patch to fix this problem.

You can fix it now with this change:

in the file classes/Image_Handler.class.php on line 138 you’ll find:
abstract function set_default_image( $image );
change this to:
abstract function set_default_image( $image = false );

by Roland on November 27, 2012 at 4:15 am. #

One thing I have to track is meeting attendance so I need to be able to check off every month who showed up.
Does anyone have any great ideas on how to best accomplish this?

by Sabine on November 21, 2012 at 4:50 pm. Reply #

Hello. I agree with everybody else her – a great plug-in.
But i seem to have broken it:
1. I installed and it worked perfectly, sent emails and added records.
2. Then I deleted all the existing fields on the manage fields page and now it doesn’t create records or send emails.
3. I tried deleting (participants_database folder in control panel) and reinstalling but my entries are still there, it has not reverted to its original set up. And it still doesn’t work.
4. I added the first_name, last_name and email fields back in but no luck.

Where have I gone wrong? Is it possible to fix? Or failing this, how do I completely uninstall and reinstall?

Thank-you, Sally

by Sally on November 18, 2012 at 10:12 am. Reply #


Well, I’m glad you got it working. I was going to say that in order to remove the plugin , you should use the uninstall built in to WordPress (deactivate…then click uninstall) if you want to start with a clean slate.

To answer your question, as far as I know, there is no limit to the number of fields you can have in the signup form.

Probably, what happened is you tried to use a field with an illegal name. This isn’t your fault…I have this fixed in the next update…but it can cause problems if you have fields with certain names like ‘name’ or ‘source’

by Roland on November 18, 2012 at 10:51 am. Reply #

Hey there, great plugin! This is exactly what I have been searching for, and I’m sooo excited to have finally found it!

However, I am experiencing the issue where I can’t send email. I’ve installed the WP-Mail-SMTP plugin you recommend, and got that up and running with no issue. I’ve been able to send email with that plugin set to use SMTP and mail() with no problem. I also have three other plugins that are using the php mail() call with no issues, not to mention the normal WP signup confirmation email that is sent.

Is there anything else you recommend trying to get the email to work? If the activity is logged anywhere from this plugin, I’ll gladly capture that and send that as well.


by Mike on November 17, 2012 at 3:49 pm. Reply #


Have you had a look at your PHP error log? What email settings are you using for the signup form?


by Roland on November 17, 2012 at 4:41 pm. Reply #

Hey Roland, thanks for the quick reply. My settings are:

— Send receipt to email to people who sign up
— From: [email protected]

— Send email notification that signup has occurred
— Sends to: my email address

I turned logging on, and can send the logs to you if you want. However, I don’t see any PHP Notice or Error listings from Participants Database. The listing is there that all the fields went into the db fine, but no errors seem to point to the plugin.

If it helps, I can clear the log completely and then capture the full PHP log from the time I load the page until I submit the form.


by Mike on November 17, 2012 at 7:19 pm. Reply #

OK< well, we got the easy stuff out of the way. Logically, the only difference between the plugin and other ways of sending mail is the email settings. So, take a close look at the email, subject and email body settings to see if there isn't something there to trip things up. I don't really have an answer for why this might happen, and it's not unusual for mail to silently fail, so no clues there. Can you email me a link to your signup form so I may try it myself?

[email protected]

by Roland on November 17, 2012 at 9:39 pm. #


Did you try disabling other plugins to see if that helps? The wp_mail function I’m using is one that can be over-ridden by other plugins and that can cause problems if another plugin tries to use the function.

by Roland on November 18, 2012 at 8:07 am. #

Click and drag to reorder the fields doesn’t seem to work? Any ideas?

by Sabine on November 13, 2012 at 8:08 am. Reply #

And the delete options also doesn’t work
Using latest version of WP on Chrome

by Sabine on November 13, 2012 at 8:17 am. Reply #


Usually, the problem here is another plugin interfering. Try deactivating any plugin that affects how the admin works and see if that fixes the problem.

by Roland on November 13, 2012 at 9:19 am. Reply #

Tried that but no luck,
first I only deactivated each plugin once at the time and then tried to use the move/delete again.
Then I deactivated all of them including yours, enabled just participants DB and still no go.
Any other ideas of what I can try?

by Sabine on November 13, 2012 at 3:19 pm. Reply #

Are you getting other emails that your website sends? You may want to try installing an SMTP plugin (this is in the FAQ: I suggest WP-Mail-SMTP ) which gives you a way to test email functionality and also use SMTP which is another way to send email. Depending on how your website hosting is set up, this may be needed.

by Roland on November 13, 2012 at 3:42 pm. #

Hmm, not sure email should have anything to do with the sorting and deleting?

by Sabine on November 13, 2012 at 4:44 pm. Reply #


Oh, sorry…answering another question I guess. OK, for you, what you need to do is a little deeper debugging. If you have Firefox with Firebug this is pretty easy. Load the page with the net panel open and look for files it tried to load and couldn’t. Then, with the console panel open, reload the page and see if any errors come up.

Are you using a theme that customizes the admin?

by Roland on November 14, 2012 at 9:04 am. #

Thanks, I’m not all that technical but I will give it a try.
The theme I use is Atahualpa Version 3.7.7

and these are all the plugins I use:

Events Manager Version 5.2.9
Flexi Pages Widget Version 1.6.10
jQuery Collapse-O-Matic Version 1.4.9
My Page Order Version 3.3.2
NextGEN Gallery Version 1.9.7
Page Tree Version 2.8.1
Participants Database Version 1.3.7
Simply Show IDs Version 1.3.3
Subpage Listing Version 0.6.2
Ultimate TinyMCE Version 3.6
WP-Table Reloaded Version 1.9.3

by Sabine on November 15, 2012 at 4:06 pm. Reply #

Well, if you’ve tried turning off all your plugins and it still doesn’t work, then it must be your theme. Is it possible for you to try switching to a different theme and see if that helps?

by Roland on November 15, 2012 at 4:23 pm. #

Firefox and firebug installed
there are two that come up in red with ‘406 Not Acceptable’ when i click on ‘Manage database’

by Sabine on November 15, 2012 at 5:09 pm. Reply #


OK, that’s it. This is a security exception that happens on a few systems. The fix is in the next update, but to fix it yourself, do this:

First, you have to be able to change the name of a file–probably using FTP.
The file is in the plugin directory: “js/jquery.cookie.js”
Change the name of this file to: “jquery_cookie.js”
Go to the plugin editor and open “participants-database.php”
Find a line that looks like this: wp_register_script('cookie', plugins_url('js/jquery.cookie.js', __FILE__));
Change it to wp_register_script('cookie', plugins_url('js/jquery_cookie.js', __FILE__));

That will fix it.

by Roland on November 16, 2012 at 9:39 am. #

Thanks that did it :))
all seems to be working as it should now
Great support

by Sabine on November 16, 2012 at 5:04 pm. Reply #

I change the theme to the worpress default but still no luck. I guess I will have to get Firefox installed and see what happens with that

by Sabine on November 15, 2012 at 4:52 pm. Reply #

I do not get any email when a new person sign ups. Any idears?

by anders on November 12, 2012 at 1:40 am. Reply #


Check the FAQ, it may help:

by Roland on November 12, 2012 at 10:41 am. Reply #


I have a question about this: display_count – if set to ‘true’ will display a total of all records

In my web appears this: Total Records Found: 65

COuld I change “Total Records Found” for an other one character string?

by Taran on November 9, 2012 at 7:47 am. Reply #


Until the next update, you have to edit the plugin to change this. In the file classes/PDb_List.class.php in line 718 is the text you want to change.

by Roland on November 9, 2012 at 9:26 am. Reply #

Thank you

by Taran on November 9, 2012 at 9:44 am. Reply #

Is there a way for the user to access their page to edit their info via a log-in page? Instead of me having to send them the id.

Thank you,
Hope all is well

by Natalie on November 8, 2012 at 1:20 pm. Reply #


Possible, but your main problem is that the people signing up with the plugin are not WP users, so you’d have to find a way to connect the two. If they were logged in when they registered, you’d be able to get their username by using a hidden field. You’d have to grab their record ID from the database so when they logged in, the record ID could be used to show their record. In short, you’d need a programmer to make it work.

You might be better off using custom user profile fields for your WP users.

by Roland on November 9, 2012 at 9:17 am. Reply #

THank you Roland. You’re and your plug in are fabulous. :)

by Natalie on November 9, 2012 at 12:27 pm. Reply #

Where is the .css where i can edit the list of my registered people?

by Taran on November 8, 2012 at 6:20 am. Reply #


You just need to add a rule to your theme stylesheet that sets the color of your header. If you don’t know how to do that, you should visit the WordPress forums where this sort of information is easy to come by, it’s not really an issue with the plugin.

by Roland on November 8, 2012 at 9:37 am. Reply #

I must do it in the css of my theme so. I was talking about the bar with the list name: First_name, Last_name, etc

An other question, could I create two differents list with differents fields?

by Taran on November 8, 2012 at 9:47 am. Reply #

Yes, check this out:

the “fields” parameter will give you what you want.

by Roland on November 8, 2012 at 10:49 am. #

Look the photo. I show you what i need to change:

by Taran on November 8, 2012 at 9:55 am. Reply #


I’m sorry, this has nothing to do the the plugin, you must edit your theme CSS.

by Roland on November 8, 2012 at 10:47 am. #

Thank you for your atention

by Taran on November 8, 2012 at 10:49 am. Reply #

I’m a complete novice but I love learning this stuff. I’ve figured out the basics but I would like to set up multiple sign up/sign in pages that lead to different thank you pages in order to track where my participants have been on the site. I am hosting workshops on the different thank you pages and I want to verify their attendance. Is this possible with your plug in? I’m glad to make a donation!

by Jon Evans on November 8, 2012 at 4:04 am. Reply #


You can’t have multiple thank you pages, but if you just want to know which page someone was on when they signed up, I give a way to do that here:

by Roland on November 8, 2012 at 9:34 am. Reply #

I want to display many fields of data to my readers, but the data seems limited by the width of the page column. How can I get the displayed list to wrap so that readers can see all the fields for each record?

Thanks for creating and maintaining this plugin–seems to be exactly what I need as soon as I can tackle this one issue.

by Marc Hoffman on October 30, 2012 at 11:58 am. Reply #


OK this is all about getting the CSS right for your list display. Getting tables to display correctly can be a real pain, but here are a few hints…

Each column has a classname according to what field it is showing. You can use this to set the width of the column so you can optimize the columns according to what you’ve go in there. Next, in order to make a table wider than the page, you have to wrap it in a <div> tag that sets the width. You can’t set the width of the table directly, it won’t work. Sometimes, you have to wrap your table-wrapping <div> with another div in order to keep it from breaking your design. That <div> should be set to the width of your page, and have “overflow:hidden” If you do this, your table will get a scroll bar on the bottom so it can be scrolled. So your table is going to be wrapped like this:

<div style="width:900px;overflow:hidden">
<div style="width:1500px;overflow:auto">


by Roland on October 31, 2012 at 7:50 am. Reply #

Hey, thanks for the plugin. It’s just what we needed.

I wanted to point out two things. First, the link to the “how to use this plugin” page on the plugin information page is broken — it’s pointing to an old structure (“/wordpress-plugins/” rather than “/work-2/”).

Second, the shortcodes in these docs are being interpreted and the forms displayed, rather than the codes being displayed.

Again, thanks so much for creating this!

by ADeweyan on October 30, 2012 at 9:36 am. Reply #

Hey, thanks for the heads-up! Guess I better fix that.

by Roland on October 30, 2012 at 9:47 am. Reply #

Is there a way to retrieve a record using user input fields. For example, a user can retrieve a record by submitting the first/last name and dob used when creating the form?

by Tammy on May 30, 2012 at 12:58 pm. Reply #

How would I display a single record to a user without the user being able to change or alter that record?

by vio on May 27, 2012 at 5:07 pm. Reply #


See my reply to Tim…same question.

by Roland on May 27, 2012 at 5:35 pm. Reply #

I don’t see your reply to Tim anywhere

by vio on May 28, 2012 at 7:59 am. Reply #

Sorry… I didn’t realize your comment was on a different page. Here’s what I told him:

That is the purpose of the [pdb_single] shortcode. You can set up the [pdb_list] shortcode to offer a link for each record listed that will go to the page where the [pdb_single] is and show the full record. This is explained in the docs:


by Roland on May 28, 2012 at 8:41 am. #

Hello. Awesome plugin, love it.

Here is my page where pdb is placed:

Now, I have several different fields displayed, one of which is “Discpline(s).” I would like to make it so I can provide a URL that the user can click to search for a specific discipline. For example, I want the user to be able to click on a link I provide entitled “Search for Cell Biology” and results with Cell Biology will come up. Any thoughts?

Many thanks.

by Dan on May 24, 2012 at 9:30 am. Reply #

Also, would you please tell me what “Persistent” does if checked? Appreciated.

by Dan on May 24, 2012 at 9:35 am. Reply #

Dan, “persistent” is a way to help people manually enter new records, and stems from the original purpose of the plugin. When you enter a new record, you can save the record by clicking “next.” This gives you a new blank record to fill in…but the persistent fields will be copied from the previous record. Just a little time saver.

by Roland on May 24, 2012 at 10:36 am. Reply #


OK, well, without seeing too many details, one thing you can do is put the [pdb_list] shortcode into the template so you can receive a variable from the link. For instance, if they search for cell biology, they click a link with the search term attached like this ?search=cellbiology Then in the template, you do something like this: < ?php echo do_shortcode('[pdb_list filter="subject='.$_GET['search'].'"]'); ?>

Now, that’s just a rough idea, but it will work.

by Roland on May 24, 2012 at 10:33 am. Reply #

Thank you very much for your swift response. This stuff goes a little above my head though – could you tell me where I would put that line of code? I’m not sure which template I would have to edit.

by Dan on May 24, 2012 at 12:11 pm. Reply #


Sorry…I can’t really give you all the details without actually digging into your site, this kind of thing needs some programming skills to pull off, not really a thing you can easily do from instructions. You have to find the spot in your template (and you need to make sure it’s the template for only the page you want this on) and drop that code in there. But there’s always complications, hence the programming skills. Sorry I can’t be more helpful. If you have specific questions about getting this working, I should be able to answer those.

by Roland on May 24, 2012 at 5:07 pm. #

Leave your comment

Please note: comments are moderated by someone who is usually pretty busy and may not appear for several hours.


Required. Not published.

If you have one.