Both sides previous revisionPrevious revisionNext revision | Previous revisionNext revisionBoth sides next revision |
en:create:functions:dbset [24.01.2015 14:14] – [dbSet()] alexander.ritter | en:create:functions:dbset [24.01.2015 14:31] – [Example 3] alexander.ritter |
---|
====== dbSet() ====== | ====== dbSet() ====== |
| |
Data can be written into the **Database for Contents** during the survey with ''dbSet()''. If an entry already exists with the same key, this will be updated -- otherwise, a new entry will be created. | Data can be written into the **Database for Contents** during the survey with ''dbSet()''. If an entry already exists with the same key, it will be updated -- otherwise, a new entry will be created. |
| |
An entry can also be deleted from the database with this function. | An entry can also be deleted from the database with this function. |
* ''false'' -- Database entry is deleted, if it exists | * ''false'' -- Database entry is deleted, if it exists |
* <string> -- If text is specified, this is saved as the first (and only) element for the key | * <string> -- If text is specified, this is saved as the first (and only) element for the key |
* <array> -- If an array is used as //data//, all elements will then be saved as the entry for the key. | * <array> -- If an array is submitted as //data//, all elements will be saved as the entry for the key. |
| |
**Note:** Each entry in the database has a timestamp with the date and time of the most recent change. By updating with ''dbSet()'', the timestamp will also be updated (even when the data stays the same!). If you only want to update the timestamp, use ''[[:en:create:functions:dbtouch|dbTouch]]''. | **Note:** Each entry in the database has a timestamp with the date and time of the most recent change. By updating with ''dbSet()'', the timestamp will also be updated (even when the data stays the same!). If you only want to update the timestamp, use ''[[:en:create:functions:dbtouch|dbTouch]]''. |
===== Example 2 ===== | ===== Example 2 ===== |
| |
The following PHP code checks if an entry exists with the transmitted reference ([[:en:survey:url|URL to the Questionnaire]]). The reference encodes a company. The participant is only allowed to continue with the survey when a max. of 10 people from the company have participated up to now. | The following PHP code checks whether an entry with the submitted reference ([[:en:survey:url|URL to the Questionnaire]]) exists. The reference encodes a company. The participant is only allowed to continue with the survey if a max. of 10 people from the company have participated so far. |
| |
<code php> | <code php> |
</code> | </code> |
| |
The counter is incremented only from the last page in the questionnaire -- otherwise, it would count incompleted ones as well. | The counter is incremented on the last pages in the questionnaire onlt -- otherwise, it would count incomplete questionnaires as well. |
| |
| |
<code php> | <code php> |
// Counter increments one | // Counter increments by one |
if (isset($counted)) { | if (isset($counted)) { |
$info = dbGet(reference()); | $info = dbGet(reference()); |
$info[1]++; | $info[1]++; |
dbSet(reference(), $info); | dbSet(reference(), $info); |
// Together with isset() it ensures it only counts once | // Together with isset() it ensures it is counted once only |
$counted = true; | $counted = true; |
registerVariable('counted'); | registerVariable('counted'); |
===== Example 3 ===== | ===== Example 3 ===== |
| |
Perhaps the entry for the reference from example 2 should also just be deleted when the first participant from the company has filled out the questionnaire. To do so, the second PHP code is modified as follows. | Perhaps the reference entry from example 2 should just be deleted when the first participant from the company has filled out the questionnaire. To do so, the second PHP code is modified as follows. |
| |
<code php> | <code php> |
dbSet(reference(), false); | dbSet(reference(), false); |
</code> | </code> |