Electronic Manual - EasyData/SQL
© AtomicSoft - www.atomicsoft.com

 
Table of contents
 
Installation and configuration [go] Directory structure
[go] File transfer to the server
[go] Modules installation
[go] Configuration
General information about databases [go] Successful database planning
[go] Database size vs. system resources
Administration panel [go] Admin menu
Database creation and maintenance [go] Create a new database (table)
[go] Create table fields
[go] Edit or remove existing fields
[go] Table indexes
[go] Category handling
[go] Moderated user actions
[go] Table maintenance
[go] View, add, clone, update and delete records
[go] Search requests statistics
Advanced features in detail [go] User managed record modifications (record owner)
[go] Set user permissions and limitations
[go] Voting and comments
[go] Record time management
[go] Images / Binaries / Memos
[go] Temporarily blocking of records
[go] Send out mailings
[go] Searching of databases (tables)
[go] Re-randomization
[go] Sorting by record popularity
[go] Bookmarking records
[go] Sending records via e-mail
[go] Automatic backup generation
[go] Database import and export tools
Web-frontend and template management [go] Adjust table parameters
[go] Available templates and basic overview
[go] Customization of templates
[go] Create own HTML based forms
[go] Create own HTML based forms - perform an advanced search
[go] Create own HTML based forms - add a new record
[go] Create own HTML based forms - browse a table's specific category
[go] Create own HTML based forms - rating of resources
[go] Create URLs performing search operations
Helpful hints and technical reference [go] Internal database handling
[go] Forgot your admin password ?
[go] Web-frontend and template translations
[go] Field output formatting with display mask
[go] Some collected tips and tricks
Customer services [go] Need help ? Contact the AtomicSoft service department !

Smart tip: This handbook is also designed to be printed... set your printer's page orientation to landscape format, so there is enough space to place hand-written notes on the left and right margin easily.
 


 
Installation and configuration
 
AtomicSoft offers an optional available installation service.
When ordering product, please select "with installation", if you don't want to install the software yourself.
 
Directory structure...

The software can be installed at any place that allows the execution of CGI software: Most server systems provides a special directory called "cgi-bin" where you have to install the application, while others are not limited to a particular location.

On a common environment, we recommend to create a new sub-directory within the existing "cgi-bin" folder to separate the software from other already installed products.

Required "template.en" directory:

Inside the directory you desired for installation, please create a new sub-directory called "template.en". It's used to hold the content of "template.en" directory delivered with your software package.

Adjust path to Perl:

Open all program files (*.pl and *.cgi) in a text editor and change the first line "#!/usr/bin/perl" that it reflects the correct path to Perl 5 (or higher version) on your system. This is required to let your server know where the Perl interpreter is located.

Usage note: On most systems, /usr/bin/perl is already the default path to Perl and so no modifications are required.

Smart tip: Our installation helper install.cgi makes it easier... just call it from the command line or via your web browsing software (change path to Perl within this script before) and it will modify all program files at once.
 

File transfer to the server...

Upload all files to the created directories. If a ftp client is used, ensure to set the "ASCII transfer mode" for file submissions.

Detailed file table: Scheme: [filename | suggested place to upload (short description); file permission]:
 
Filename...
Description...
Filename...
Description...
* cgi-bin (program & data files); 755 template.en/* template.en (templates); 666

Important notes: Please double-check file permissions and transfer mode, otherwise the software may not work as intended. Depending upon the server configuration, different file permissions than the ones stated above may be necessary.
 

Modules installation...


Local perl installation must have following modules installed:
DBI - in any case;
DBD-mysql - for mySQL server;
DBD-ODBC - for MS SQL Server.

To find out if these modules are installed, request test.cgi script: type http://www._yoursite_.com/path/test.cgi in address line of your web browser. The result shows status near each test.
Ask your host administrator to install missing modules for you. If you are administrating your host yourself, read instructions below.

Installing module: Unix, regular method
1. Download module from CPAN site (http://search.cpan.org/).
2. Read the README file inside installation ".tar.gz" package for installation instructions.

Installing module: Unix, CPAN.pm

Perl comes with a very handy module called CPAN.pm that automates the process of downloading and installing a Perl module. You can load the CPAN.pm shell with the following command:

        perl -MCPAN -e shell

This also requires that you are root.

The first time that you run the CPAN shell, you will need to make some configurations. It's usually OK to select all the defaults.

To find a particular module, use the i command, followed by an expression that you want to search for:

        cpan> i /DBI/

CPAN.pm will go out to the CPAN mirror that you selected, download the list of modules, and tell you which ones match the search word.

To install a module, type:

        cpan> install DBI

CPAN.pm takes care of the whole process. It downloads the compressed file, unpacks it, builds it, and installs it all for you, unless there is a problem with the installation process. If there are other modules on which this module relies, it will also download and install those.

Installing module: Windows, PPM

ActiveState Perl comes with a command-line tool called PPM - the Perl Package Manager - that simplifies the process of installing Perl modules on NT. To get into the PPM, go to a DOS prompt, and type

        ppm

You should now see a prompt that looks like:

        PPM>

at which you can type commands. There are a large number of commands that can be used, type help command to see complete list of commands.

To search for a module, use the search function:

        search DBI

The search should, by default, be case-insensitive, although you can configure this.

This will return a list of all the modules that matched this search, and the file that the module is contained in. You can then install the module with the install command

        install DBI

PPM will take care of downloading and installing the module for you.

More information
For more information about installing Perl modules, please read following articles:
How to install Perl modules (perl.about.com)
perlmodinstall2 - Installing Perl Modules

 

Configuration...

After you have uploaded all files, you may wish to start the admin panel first time to initialize the system parameters. In order to do so, please call admin.cgi with your favorite web browsing software:
 
Action to perform...
URL to call (location varies on your system, of course)...
Open admin panel http://www.atomicsoft.com/cgi-bin/ed/admin.cgi

Before you proceed, it is highly recommended to set an administration password. After this is done, access to the admin panel is granted only by using "admin" as login together with the chosen password.

Now click on the button "Edit system parameters" and configure the shown parameters according your needs.

Usage note: Since all parameters are automatically filled with correct values, modifications on your side may not be required.

Directories and files:
 
Name of parameter to set...
Description...
CGI files directory
Example: /usr/www/cgi-bin/ed
Absolute path to the location of EasyData on your server.
"data" directory
Example: /usr/www/cgi-bin/ed/data
Absolute path to the location that holds databases and related files.
"binarydata" directory *
Example: /usr/www/cgi-bin/ed/bindata
Absolute path to the location that holds binary database content.
"templates" directory
Example: /usr/www/cgi-bin/ed/template.en
Absolute path to the location of web and mail templates.
"auth" directory
Example: /usr/www/cgi-bin/ed/auth
Absolute path to the location of session info files (e.g. passwords).

* Technical note: The software tries to create this directory at a web-accessible place (certain cgi-bin locations doesn't allow to deliver multimedia content). If you experience problems in content delivery, please move it manually to a suited location.

Platform specific settings:
 
Name of parameter to set...
Description...
Mailing program (for Unix only)
Example: /usr/bin/sendmail
Absolute path to Sendmail (or compatible) application on your server.
SMTP server
Example: smtp.atomicsoft.com
SMTP server for handling mails; when left blank, default mail application is used. This setting is required for non-Unix systems, otherwise optional.
Don't use flock
Example: Unchecked
"flock" is normally supported directly by the operating system; should it be unavailable for any reason (e.g. on Win9x, WinMe), mark this checkbox.
Admin e-mail address
Example: admin@atomicsoft.com
E-mail address of the system administrator (e.g. webmaster).

URLs:
 
Name of parameter to set...
Description...
Binary directory URL
Example: http://www.atomicsoft.com/cgi-bin/ed/bindata
URL to the location that holds binary database content.
URL of CGI files directory
Example: http://www.atomicsoft.com/cgi-bin/ed
URL to the location of EasyData on your server.
URL of user's help document (optional)
Example: http://www.atomicsoft.com/myhelp.htm
URL to an optional help document (not included); may also consist of an e-mail link (e.g. "mailto:support@atomicsoft.com").

Database setup:
 
Name of parameter to set...
Description...
Database driver Type of SQL database you are using.
Database name
Example 1: test
Example 2: database=test;host=192.168.0.2;port=3306
Your database server administrator should create a database and give you following information: database name, database user and password.
If database is located on other phisical host, use following format of database name: database=databasename;host=hostname;port=1234.
Database user
Database password
Username and password to login into database. Assigned database user must have permissions to create tables, to add/update/delete records and to modify table structure. Optionally, database user may have permissions to delete (drop) tables; with "drop" permissions you'll be able to delete table.

Various parameters:
 
Name of parameter to set...
Description...
Authentication time (in seconds)
Example: 10800
Time frame keeping user authentications active (after expiration, people must log in again); recommended range: 1 to 12 hours.
Default records per page
Example: 25
Maximum number of records (unless specified exactly) appearing on one page; recommended range: 5 to 30 records.
Max. number of links
Example: 10
Max. number of selectable links on a page flicker when displaying search results; recommended range: 5 to 30 links.
Default table (optional)
Example: firsttable
Standard table used when no specific table is called.

After you have verified all settings carefully, click on the button "Save parameters" to take over modifications to the system. It is also possible to bring back previous values with the "Let the script restore defaults" button.
 

Congratulations - you have successfully installed the software :-)

 
General information about databases
Successful database planning...

1. Determine required database fields:

Write down all fields required for your database on a piece of paper to ensure having a consistent and logical data structure. For example, a database containing business contacts has other field demands than a product catalogue.

If you're very unsure which fields are needed, just think about the content you want to store in the database and create some sample records based upon this. Have still problems ? Don't worry, you can add, modify and delete fields later at any time.

2. Assign field types and edit controls:

Field types describes the content of the concerned fields closer. By default, EasyData uses the type "text" which accepts any input - but it can be wiser to be a bit more specific (e.g. a field like "Birthday" should be set to the type "date").

Edit controls determines how particular fields are displayed. By default, EasyData uses a single input line. But it is possible to use any edit control supported by HTML (like text boxes, radiobuttons, drop-down lists, checkboxes, ...).

Please take some time to work out suited field types and edit controls. Especially when having different people working on one database, meaningful settings will increase data consistency dramatically - and so, this makes also search operations easier.

Helpful hint: Confused about all this stuff ? Don't worry, the correct usage will be explained later. At this stage, you should just have a basic understanding of the database structure and your desired application.

3. Check all of your planning steps:

Last but not least you should go carefully through your planning and check it. It's a matter of course, that you can do changes to existing databases at any time, but it will save some time and trouble to start right away from the beginning.

Has your planning matched the application your database is intended to ? Try to perform some search operations on the sample records you invented previously and see how users are able to access particular records.

Furthermore you may think about some extras, like desired sorting, scheduled record availability, user permissions and other stuff. But for now, don't care about this too much. It will all be explained later step by step in this handbook.
 

Database size vs. system resources...

EasyData is highly optimized and supports databases of an unlimited size (number of records, data volume to handle), so the performance mainly depends upon the used SQL server type, CPU speed and server load.

Accesses to your databases are handled very efficiently, so also high traffic websites are generally managed fine by EasyData.

In a common system environment, you don't have to take care about this issue. However if you have more specific questions regarding this topic, please contact AtomicSoft's customer service department for personal assistance.
 


 
Administration panel

The administration panel is a convenient way to work interactively with EasyData. You can start the admin panel by calling admin.cgi with your favorite web browsing software:
 
Action to perform...
URL to call (location varies on your system, of course)...
Open admin panel http://www.atomicsoft.com/cgi-bin/ed/admin.cgi

How to access your databases:
 

Action to perform...
URL to call (location varies on your system, of course)...
Browse table http://www.atomicsoft.com/cgi-bin/ed/db.cgi                or
http://www.atomicsoft.com/cgi-bin/ed/db.cgi?tbl=<name>
Browse table (specific record) http://.../ed/db.cgi?tbl=<name>&id=<recID>
Browse table (specific category) http://.../ed/db.cgi?tbl=<name>&category=<catID>
Perform search operation http://www.atomicsoft.com/cgi-bin/ed/search.cgi            or
http://www.atomicsoft.com/cgi-bin/ed/search.cgi?tbl=<name>
Show table overview http://www.atomicsoft.com/cgi-bin/ed/tables.cgi
<name>: Desired table name (alternatively the default table will be used).
<recID>, <catID>: Record ID or category ID the request is intended for.

Helpful hint: Please refer to the chapter "Web-frontend and template management" for more information about web integration.
 

Admin menu...

This screen allows the following actions:
 
Main menu options...
Description...
Manage (existing) tables Select the desired action and click on the submit button.
Create new table This form is intended to create a new database.
Change password Change admin password.
Other administrative features
Edit templates Click on this link to edit the layout templates.
Edit system parameters Click on this link to modify system related parameters.
Import / export data Click on this link to import or export data and tables from/to EasyData.

The top menu line provides additional selections (depending on the current system status):
 

Top menu options...
Description...
Admin Go to the main admin menu.
Home Browse the currently active database.
Search Search the currently active database.
Search stats Show usage statistics of the currently active database.
Bookmarks Show bookmarks created for the currently active database.
Login / Logout Login or logout as administrator.
Moderate Approve or decline user modifications made to database.
Restructure Modify structures and parameters of the currently active database.
Mailings Send out mailings to record owners of currently active database.
Categories Manage categories for currently active database.
Add / Clone / Update / Delete Add, clone, update or delete records.
 

 
Database creation and maintenance
Create a new database (table)...

First of all, call the admin panel and go to the part "Create new table". Now just follow these steps:
 
EasyData asks...
Description...
Enter new table name Short internal name of the new table (alphanumerical chars, except spaces).
Set optional system fields
 
Available option...
Description...
Include category field Use categories inside the table.
Include record addition date/time field Time stamp of record creation.
Include record update date/time field Time stamp of last record update.
Include user feedback fields Voting and comments for records.
Include record owner e-mail / pwd. fields * User managed records.
Include expiration field Individual expiration of records.
Make additions moderated Moderation of public record additions.
Make modifications moderated Moderation of public record modifications.
 

After this is done, just click on the "Create new table" button in order to create the new database.

By the way: You can add and remove system fields manually later at any time; so if you are unsure about an optional setting described above, just leave it empty and read more about below in this manual.

* What exactly is a record owner ?

Each record can have an assigned e-mail address as well as a password (optional). In this way, people are able to modify their owned records. Additionally, the mailing utility allows sending of e-mails to all registered record owners.

Why is there an ID field in each table ?

This field is required for some internal functions of EasyData (mainly used to distinguish records); so you can commonly ignore it. If you like, you may also rename its label, hide it when showing records or even make it editable by users.

Technical note: Since each record must have a unique ID field value, this field is of autoincrement type by default.
 

Create table fields...

Choose the desired table and select "Restructure table". Alternatively click on "Restructure" in the upper right corner of the screen. If you just created a table, this screen appears automatically.

Go to "New field name", type in the desired name and select the data type. In order to finish action, click on "Create new field".

There are also various system fields available, required for advanced features. Type in the field names exactly as they appear in the following list to enable the concerned feature (refer to following chapters for details):
 

System field...
Description...
_email Record owner e-mail field; required for record modifications made through users (record owners) and for sending of mailings (see _subscribed field below).
_login Alternative to the record owner e-mail field; if both are available, this field holds the login information and _email stores the e-mail addresses for mailings.
_pwd Record owner password field (optional), requires record owner to specify a password before a record can be modified or removed.
_add_datetime Date/time stamp containing the date of record creation (auto-filled by EasyData).
_update_datetime Date/time stamp containing the date of last record update (auto-filled by EasyData).
_category Category field; required to handle categories (auto-filled by EasyData).
_blocked Flag to allow blocking of records (admin only).
_effective_since Individual appearance date for each record.
_expires Individual expiration date for each record.
_rating, _votes Rating fields; required to allow user ratings of records.
_comments, _comments_data Comment fields; required to allow user comments for records.
_views_number Auto-increasing field; shows number of total detailed record views.
_subscribed Flag to allow reception of mailings (in connection with _email).
_addbookmark Bookmarking field; creates the edit control to bookmark a record.

After a field was created successfully, the screen "Field properties" appears (see next part of this chapter).
 

Edit or remove existing fields...

Select the desired table and choose "Restructure table" from admin panel. Alternatively you can click on "Restructure" in the upper right corner of the screen.

How to delete a field:

Look for the field you wish to remove from the table and click on "Delete". However, please note that once a field is removed, all related content will get lost and cannot be recovered.

By the way: All table parameters are automatically updated and the concerned field becomes removed from these settings.

How to change sorting of fields:

Look for the field you wish to move around and click on either "move up" or "move down" to change the field's position.

Technical note: Sorting of fields takes effect only to various admin panel screens. Use "Table parameters and layout" settings to change the default field order for the web-frontend.

How to edit a field:

Look for the field you wish to modify and click either on "Edit" or the field name. Now the screen "Field properties" appears. Depending of the selected field, you can modify these options:
 

EasyData asks...
Description...
Field name Contains the name of the table field; you can change it at any time (table parameters are automatically updated with new field name).
Data type Select the type of content being stored in this field:
 
Type...
Description...
text Any content with unlimited size (default).
int Positive and negative integers.
float Real numbers.
date Date in format YYYY-MM-DD.
time Time in format HH:MM:SS.
datetime Date and time in format YYYY-MM-DD HH:MM:SS.
boolean Empty value = false; any other value = true.
image GIF, JPG, PNG & BMP pictures (stored in "binary" directory).
binary Binary content (stored in "binary" directory).
memo Textual content (stored in "binary" directory).
htmlmemo HTML-formatted content (stored in "binary" directory).
uploadmemo See "memo", but use with "upload (other files)" edit control only.
autoinc Autoincrement integer field.
URL Same as text, but URL validation and embedded HTML.
email Same as text, but e-mail validation and embedded HTML.
 
Display label Field label appearing instead of field name set above.
Display comment Comments which appears when adding or updating records, giving some hints to users.
Display mask Advanced users only: Active template for Perl scripts used to format concerned field value in HTML code or to make manipulations with value before output.

Available system variables are $id (contains record ID), $fields{FIELDNAME} and $value (contains the current field's value).

Sample application for display mask:
 

Description...
How to realize...
Field value in bold characters Type in: &"<b>$value</b>"
 
Default value Type in a default value you wish to use for this field, if it is kept unfilled by the user; can be also a Perl script.

Sample applications for default value:
 

Description...
How to realize...
Text based (no Perl scripting) Just type in the desired default value.
Current date & time Type in: &datetime2str(time)
 
Required Click here to mark this field as required.
Unique Click here to mark that this field's content has to be unique in the entire table.
Verification rules Type in rules to verify field's content (multiple rules separated by semicolon); if this is left empty, verification is done based upon used field type.
 
Rule...
Description...
int Positive and negative integers.
float All numbers ("+", "-", "." and digits).
alpha Characters only (A-Z, a-z).
alphanum Characters and digits only (A-Z, a-z, 0-9).
positive Positive numbers only.
negative Negative numbers only.
range:x,y All numbers from x to y.
values:val1,val2, ... Only given values are allowed.
min_size:x Minimum length of required input.
max_size:x Maximum length of allowed input.
valid_email E-mail address checking for correct format.
valid_URL URL checking for correct format.
accepted Required field (same as "required" in field types); e.g. used for checkboxes.
format:<x>::<error> <x> must match a Perl regular expression.
<error> may contain a customized error message, shown instead of the default one when verification failed.

Samples for field verification:
 

Rule...
Allowed content...
range:1,10 All positive numbers from 1 to 10 (e.g. 2, 9.35, ...).
values:yes,no Allowed input "yes" or "no" only.
min_size:5 At least 5 chars required, e.g. postal code check.

Refer to the chapter "Helpful hints and technical reference" for advanced samples.

Edit control Choose the intended edit control type:
 
Edit control type...
Description...
Automatic selection Let EasyData automatically select the matching edit control type based upon the field type.
Text input control Standard text input field.
Text input with dropdown list * Combined text input and dropdown list control (requires JavaScript enabled).
Password input control Password text input field.
Checkbox Checkbox (value = 1 when enabled).
Checkbox list * List of multiple checkboxes.
Upload (image) "Upload file" field for images (uploaded content will be stored in "binary" directory).
Upload (other files) "Upload file" field for binaries and memos (uploaded content will be stored in "binary" directory).
Text area Multi-line textbox (applicable for data types "text", "memo" and "htmlmemo").
Radio buttons * Radio buttons.
Combobox (Dropd. list) * Dropdown list.
List * Same as combobox, but items appears as listing.
Multiselectable list * Same as list, but allows to choose multiple items.
Hidden Hidden from users, but may have a value (as it is specified in "Default value")
* Values must be specified in field "Edit control data" below.
 
Edit control data Applicable for radio buttons, comboboxes, lists and multiselectable lists to determine the field content. Format: <Internal used value>|<Displayed value>

For example:
 
  01|Get YourAffiliates now
02|Get EasyData now
03|Get AccessGuardian now
...
 

Edit control width Applicable for text and password input fields as well as text areas. Type in the width of concerned field in characters (this does not set maximum length of field input).
Edit control height Applicable for text areas, lists and multiselectable lists. Type in the height of concerned field in lines (field content can contain more or fewer lines than set here).
Edit control template Advanced users only: Active template for executing Perl scripts.
Column width Type in the width of the table column concerned field appears in. Use either percentage value or pixels; leave empty for standard setting.
Column alignment Select alignment of the table column concerned field appears in.
Cell vertical alignment Select alignment of the table cell concerned field appears in.
Max. size Type in max. number of characters allowed for input.
Images, binary & memo fields: Type in max. file size (bytes) allowed being uploaded.

Important notes: If you edit a system field, some of the settings above may be not available for selection. Don't touch pre-filled settings for system fields; you may negatively affect their behavior.
 

Table indexes...


First field in a table is always considered as key field. Values of key field are used to identify records, so they must be unique within table. Index on key field is called primary index. EasyData automatically creates primary index.

Index on a non-key table field(s) is called secondary index. Secondary indexes are not created automatically.

Indexes on the relevant columns is the most important thing in getting queries on your database to run fast. Searching and sorting on an indexed field is performed much faster. This doesn't mean that you should index all fields. Please read the documentation on your SQL server software to find out more about indexes.

Select the desired table and choose "Restructure table" from admin panel. Alternatively you can click on "Restructure" in the upper right corner of the screen. Use the "Edit secondary indexes" dialog form to create secondary index(es). You can remove secondary index using the same dialog form.

How to create a new index:

EasyData asks...
Description...
Name of index Any string consisting of letters, digits and underscore. This is used for internal SQL engine porposes and for later identification of index (e.g. when you will want to delete it).
Helpful hint: Use names of indexed fields in index name.
Example:first_name_last_name
Field names to include in index Type in field name(s) to include in index. Separate field names with comma. Don't add spaces around comma.
Example:first_name,last_name
Unique "Unique" attribute allows to ensure that there is no other record with same value(s) of field(s) included in index. EasyData verifies each modification, and if user attempts to add/update a record with duplicate value(s) of indexed field(s), then error message is returned.
Check this checkbox if you disallow duplicate value(s) of field(s) included in index.

Now click on the button "Create new index".

How to delete an index:

Select existing index and click on the button "Delete".

Usage note: "Delete secondary index" option appears if you have at least one secondary index.
 

Category handling...

Usage note: Before you can use categories, ensure that the system field _category is available within your table.

From admin panel, select the desired table and choose "Edit table categories". Alternatively you can click on "Categories" in the upper right corner of the screen.

How to create a new category:

Type in a category name and short description (optional; can be displayed when browsing by categories).

Now click either on the button "Add new top-level category" to create a new main category or "Add new category inside current category" to add a sub-category within the currently selected category.

How to edit a category:

Click on the ID of the category you wish to modify:
 

EasyData asks...
Description...
ID (category code) Category codes are assigned automatically; but if desired, you can customize them (use alphanumerical characters only).
Name Type in a new category name or correct the old one.
Description Type in a new category description or correct the old one.

In order to take over the changes to the system, click on the button "Save".

Helpful hint: Since categories are sorted alphabetically by their IDs (category codes), changing their displayed default order is very easy by altering the concerned category codes according your desired arrangement.

How to delete a category:

Select the ID of the category you wish to remove and then click on the appropriate deletion button to remove the concerned category from the table (please be careful when doing so; once deleted, categories cannot be recovered).

Important note: Records related to removed categories are re-assigned to the concerned upper level category.

Category trees - overview:

EasyData comes with a feature allowing website developers to implement an interactive JavaScript-powered category tree to websites in just a few minutes. Ideally suited for easy database navigation on category-based tables.

Each tree is built with graphical elements and can be individualized to allow highest flexibility. It is also based upon an own template (treeview.htm), so even surrounding HTML elements are possible.

Category trees - website implementation:

Call treeview.cgi to display a table's tree:
 

Action to perform...
URL to call (location varies on your system, of course)...
Display a category tree http://www.atomicsoft.com/cgi-bin/ed/treeview.cgi?tbl=<name>
<name>: Desired table to display tree for (required parameter).

Implementation by using SSI-tags:

Example: <!--#include virtual="/cgi-bin/ed/treeview.cgi?tbl=TABLE"-->
Description: Replace "TABLE" with the concerned table's name.

Technical note: Remove all HTML initializing tags from template treeview.htm (mainly <HTML> and <HEAD>) to avoid display errors caused when inserting the category tree codes into an existing webpage via SSI.

Important note: In order to use category trees, at least the permission "Search" is required for anonymous users.

Category trees - available settings:

Choose the desired table and select "Restructure table". Alternatively click on "Restructure" in the upper right corner of the screen. If you just created a table, this screen appears automatically. Now click on the button "Edit treeview parameters".

Layout options:
 

EasyData asks...
Description...
Show number of records Mark this button to show the number of records available per category.
Show category description Mark this button to include available category descriptions.
Show "Expand all" link Mark this button to display a link at the end of the tree allowing to expand it entirely.
Show "Collapse all" link Mark this button to display a link at the end of the tree allowing to collapse it entirely.
Initial tree state Select the status of the tree when called (all expanded, all collapsed)
Target frame If the category tree is used in a frame-based environment, specify the target frame to display the table content (when tree element is clicked).

Keep this empty to open the content in the same window where the category tree is located in (this removes the category tree).

Usage note: Use "_blank" to open a new browser window for displaying table content.

Template of tree node Specify or edit a template file applicable to the web-frontend.

Drawing icons:
 

EasyData asks...
Description...
... URL Alternatively to the hardcoded icons, you can specify own images being displayed. Keep the concerned setting empty to use the default elements.

Technical note: Even images are located at the same server, please use full URLs only (starting with "http://...").

Use background vertical line Mark this button to display a filling element used for large categories (taking more than one line in space, e.g. when displaying category descriptions).

Folder/leaf icons:
 

EasyData asks...
Description...
Show folder/leaf icons Mark this button to show icons for folders and leafs.
... URL Alternatively to the hardcoded icons, you can specify own images being displayed. Keep the concerned setting empty to use the default elements.

Technical note: Even images are located at the same server, please use full URLs only (starting with "http://...").

Root category:
 

EasyData asks...
Description...
Root category label Type in the label used for the root category (at top of tree).
Root category icon URL Specify an image being shown as icon near the root category. Keep the setting empty to not show an icon for root.

Technical note: Even the image is located at the same server, please use full a URL only (starting with "http://...").

 
Moderated user actions...

If this feature is active, administrator can approve (or decline) changes submitted by users (mainly additions, modifications or deletions of records). Enable moderated modifications by configuring the appropriate fields on the screen "Table parameters".

Important note: It is strongly recommended to enable this feature, if you allow people adding their own records. Otherwise you have no control about the database content.

Enable moderation mode:

Check fields "Make additions moderated" and/or "Make modifications moderated" during table creation or go to "Change table parameters and layout" and modify "Permissions" according your needs.
 

EasyData asks...
Description...
Moderate additions Make all record additions to your table moderated (anonymous / registered users).
Moderate updates Make all record updates to your table moderated (anonymous / registered users).
Moderate deletions Make all record removements from your table moderated (anon. / registered users).

Usage note: For more details about permissions and user groups, please take a look at the next chapter.

How to moderate actions:

From admin panel (you must be logged in as admin), select the desired table and choose "Moderate table". Alternatively you can click on "Moderate" in the upper right corner of the screen.

Now you see a list containing all queued requests. Each request can be approved or declined by selecting the concerned radio button. Select "Hold" and the concerned record will be still kept in moderation queue.

After you moderated all requests, click on the button at the end of this screen to take over your decisions to the system.

How to edit records in moderation queue:

If you wish to modify records that are currently in moderation queue, mark the button "Remind to update" when approving the concerned records. Now the moderation result screen allows you to edit them right away (new browser window opens).
 

Table maintenance...

Select the desired table and choose "Restructure table" from admin panel. Alternatively you can click on "Restructure" in the upper right corner of the screen.

How to remove a table (be very careful):

Go to "Delete table" and then click on "Delete files". You can either remove parts of this table or the entire database structure.

How to clear selected table files (be very careful):

Go to "Empty table", select the appropriate files you wish to clear and then click on "Clear data" to carry out this action.

How to rename a table:

Go to "Rename table" and specify the new name. Click on "Rename" to take over the changes to the system.
 

View, add, clone, update and delete records...

Go to the admin panel, select the desired table and go to "View/Add/Update/Delete records".

On the following screen, you may browse through all categories, search for records, add new ones, remove, update or clone existing records and do all other database administration tasks (see menu on the upper right corner of the screen).

Technical note 1: When updating records (admin only), all fields are shown regardless of the "Visible fields" settings at the "Table parameters" screen for convenience reasons (however other screens in admin panel considers these preferences).

Technical note 2: Cloning a record means to take over all field values from an existing record to a new one showing the "Update record" screen. It is not possible to clone fields of type "image", "binary", "memo", "htmlmemo" and "uploadmemo".
 

Search requests statistics...

The search requests statistics shows how people are using your database regarding search queries. All search queries are logged and then presented in a comprehensive graphical report searchable by date/time and sorted by usage frequency.

You can use these statistics for various marketing and performance analysis (e.g. most popular search queries, behavior of the users when doing search operations) or just for your personal interest.

How to enable search requests logging ?

Go to the screen "Table layout parameters", "Search requests logging":
 

EasyData asks...
Description...
Log all modifications to file... Mark "Don't log" to disable logging or any other entry to enable it.

Sending of statistics via e-mail: See also "Table layout parameters" screen, but now part "Table automatic maintenance":
 

EasyData asks...
Description...
Search requests statistics mailing EasyData is able to send a summary of all statistics to the admin's e-mail address.

If you wish to receive mailed statistics, just decide for the mailing time period. If no option is checked, the mailing feature is disabled.

How to access the statistics ?

Click on "Search stats" available in the upper left corner of the screen to access the statistics of the currently active table.

Search requests statistics form:
 

EasyData asks...
Description...
Select time period The following selections are available:
 
Selection...
Description...
All available dates Display data for the entire time period parsed.
Date range Type in a start and end date of the time period you wish to receive reports from.
Month Select a particular month to display data (available selections bases upon the parsed logs).
Year Select a particular year to display data (available selections bases upon the parsed logs).
 
Limit number of top requests Keep the default "Unlimited number" entry to show all search queries or limit it to a more reasonable range of top requested search queries.

Smart tip 1: The generated reports can be printed easily: Depending upon the used paper size, you may need to set the printer's page orientation to landscape format. In this case, there is also space for placing hand-written notes at the margins.

Smart tip 2: Since EasyData doesn't use image files to create bar graphs, you can simply copy the report to a disk and carry it to other computers, still keeping the layout (reports are generated in HTML language).
 


 
Advanced features in detail
User managed record modifications (record owner)...

How to enable managed records:

As mentioned in the previous chapter, users can be assigned to records they added to a table. By using this feature, record owners are able to modify or delete their owned records online and even prolong the life of them (if expiration feature is active).

In order to enable managed records, just ensure that you have the system field _email (e-mail address) within your table. Higher security will be achieved by adding another system field called _pwd, which contains a user determinable password.

Registered users are required to log in by using the login screen of EasyData providing their e-mail address and password.

Usage note: Alternatively to _email, also the field _login can be used. While _email needs to contain an e-mail address, the _login field may hold any content (e.g. alphanumerical values). If both fields are available, _login has a higher priority.

Configure the password reminder utility:

If a record owner forgot the password, it can be re-send automatically by the system at request. In order to configure this utility, please go to the "Table parameters" screen:
 

EasyData asks...
Description...
Pwd. remember msg. body template Specify the mail message template or keep the default one.

Important note: Since the admin password is saved encrypted for higher security, it cannot be restored. See chapter "Helpful hints and technical reference" about information on how to reset the admin password.

Technical note: For this feature, the system field _email is required.
 

Set user permissions and limitations...

Available types of users:

Anonymous users are not logged in and just work with the system (e.g. searching or browsing a database).
Registered users refers to record owners logged in with their e-mail address and password.

Set permissions for anonymous users:
 

EasyData asks...
Description...
Search, View Allows to search table and/or view record details.
Add, Update, Delete Enables record additions, updates or removements.
Moderate add., updates, deletions User actions will be placed in moderation queue first to allow verification by admin.

Set permissions for registered users (record owners):
 

EasyData asks...
Description...
Search, View Allows to search table and/or view record details.
Add, Update *, Delete * Enables record additions, updates or removements (ANY record in table).
Moderate add., updates, deletions User actions will be placed in moderation queue first to allow verification by admin.
* Please be careful, since record owners can also modify or remove records they not own. So moderation of these actions is recommended, unless you restrict them (see following permission set).

Set permissions for (registered users') owned records:
 

EasyData asks...
Description...
Search own, View own Restricts users to search and/or view only their very own records (as logged in).

Technical note: When "Search own" is enabled, also browsing of not-owned records is disabled, while "View own" hides only detailed entry views of not-owned records. 

Update own, Delete own Users are able to update and/or delete own records.
Moderate updates, deletions User actions will be placed in moderation queue first to allow verification by admin.

Enable moderation for record comments:
 

EasyData asks...
Description...
Moderate visitor comments Mark the button to moderate comments done for records.

Usage note: Votings (numerical ratings) are always unmoderated.

Enable "flood" prevention (anonymous and registered users):
 

EasyData asks...
Description...
Max. number of daily record
additions per unique IP
Number of records, each single user (each IP address) is allowed to add per day. Keep this parameter empty to disable it.

If a user tries to add more records than allowed, an error message is shown and further record additions will be declined by the system.

Usage note: Especially suited to prevent abuse when allowing anonymous users to add records without enabled moderation.

By the way: Record additions done by the admin are not counted, of course.

 
Voting and comments...

How to enable voting and/or comments for a table:

Add system field _rating to the table to allow user ratings. Optionally add system field _votes to count number of ratings.
Add system field _comments_data to the table to allow comments. Optionally add system field _comments to count them.

Helpful hint: During table creation, mark "Include user feedback fields" to allow rating as well as comments; so you don't have to add the system fields above manually.

Voting and comments settings:

Select the desired table and choose "Change table parameters and layout" from admin panel. Go to the part "Voting and comment parameters".
 

EasyData asks...
Description...
View comments per page Type in the number of comments displayed per page when showing comments.
Rate choices Specify the choices a user can choose from to rate a record. You must use pairs of "Rating number | Rating display text" (higher number means better rating), for example:
 
  |Rate this resource
0|So-so
2|Okay
4|Good
6|Excellent
...

By the way: You can also use negative numbers (for very bad rating).

Default votes number EasyData uses the value of _votes field to calculate an average rating value. If this system field is not present, the number specified here will be used instead of.
Use fraud blocking (IP saving) Enable this option to save all IP addresses. One IP address is allowed to leave one rating per record only; so it prevents this feature from being abused.
Clear IP lock file when
doing maintenance
Enable this option to let EasyData automatically clear the IP lock file when doing maintenance. If disabled, you should clear this file from time to time by yourself.

Technical note:  Admin can remove unwanted comments by editing the field _comments_data of the concerned record.

Helpful hint: It is also possible to make comments moderated. Please refer to "Set user permissions and limitations" above.

Voting and comments web-frontend:

Please refer to the chapter "Web-frontend and template management" for more details.

Technical note: The default maximum size for _rating field is five characters. Since it is in float data type, digits are chopped off if field size exceeds the maximum size (however admin can adjust field properties).
 

Record time management...

General information:

EasyData provides the ability to schedule the appearance and disappearance of records. In case of removements, notification messages may be sent before and records are able to be prolonged by their concerned owners.

There are several ways to set appearance dates, expiration dates and periods (e.g. based upon record creation date or last record update, for the entire table or unique for each record).

Pre-requisites for automatic record appearance and expiration:

1. Maintenance interval: Ensure that a maintenance interval is specified. See screen "Table parameters", "Table automatic maintenance". Recommended range: 3.600 to 43.200 seconds (1 to 12 hours).

2. Record owner: If you wish to allow record owners to prolong the life of their assigned record(s), the system fields _email (alternatively _login) and _pwd are required (password field is optional).

Appearance... table-wide appearance date (valid for all new records):

Add system field _effective_since and type in the following string as "Default value" setting at "Field properties" screen:
  Appears in <x> days

<x>: Number of days counted from record creation till appearance.

Usage note: This string is a special command, only valid for the above particular application.

Technical note: Until appearance date, the record exists but is not allowed being shown when searching or browsing the table. While for the admin such records are always visible, registered users can update them only by using a direct link.

Appearance... individual appearance date for each unique record - absolute date:

Add the system field _effective_since which contains the date of first desired appearance (format: YYYY-MM-DD or YYYY-MM-DD HH:MM:SS). It must be filled during record addition; leave field empty to make the record available immediately.

Appearance... individual appearance date for each unique record - relative date:

Same procedure as done for a table-wide appearance date, but don't set a default value for _effective_since, just use "Appears in <x> days" individually for each created record.

Expiration... table-wide expiration date (valid for all records):

Ensure that either the system field _add_datetime or _update_datetime is present for the concerned table - based upon these date/time stamps, the expiration dates are calculated:
 
  _add_datetime contains the date/time stamp of record creation.
_update_datetime contains the date/time stamp of last record update.

Helpful hint: _update_datetime should be used, if you wish to allow record owners to prolong life of their records.

At "Table automatic maintenance" (see "Table parameters" screen), you'll find the record expiration settings:
 

EasyData asks...
Description...
Expiration time (days) * Type in the number of days records are kept in table before they expire.
Allow record life be prolonged Check this button to allow record owners to prolong the life of their record(s). A notification is sent by e-mail to the record owner when it's time doing so.
Warn on ... days before expiration In order to give record owners some time to prolong the life of their record(s), type in the number of days, notification message will be sent before records expires definitively.
* Leave this field empty to disable record expiration feature.

If you activated the setting "Allow record life be prolonged", notification mails are sent out to record owners with instructions on how to prolong the life of concerned record:
 

EasyData asks...
Description...
Warning msg. body template Specify the mail message template or keep the default one.

If you wish to notify the record owner as soon as a record is removed, fill out also these settings:
 

EasyData asks...
Description...
Notify about deletion Check the button to activate this feature.
Notification msg. body template Specify the mail message template or keep the default one.

Expiration... individual expiration of each unique record - absolute date:

Add the system field _expires which contains the date of expiration (format: YYYY-MM-DD or YYYY-MM-DD HH:MM:SS). This field must be filled during record addition; leave it empty to disable expiration for a particular record.

Important note: Setting an expiration time (see above) is required also here to determine a maximum applicable time frame; you may wish to set the expiration time parameter to a high value, like 3.650 days (about ten years).

Helpful hint: If you allow record owners to prolong the life of their assigned records, ensure that the system field _expires is accessible for updates (see "Table parameters", "Record update mode - visible fields").

Expiration... individual expiration of each unique record - relative date:

Alternatively to the date input described before, simply type in this as "Default value" setting for the field _expires:
  Expires in <x> days

<x>: Number of days counted from record creation till expiration.

Usage note: This string is a special command, only valid for the above particular application.

Expiration... combination of table wide and individual expiration dates:

If _expires and one date/time stamp as well as an expiration time exists, then the expiration date in _expires applies.
If both date/time stamps and an expiration time exists, then _update_datetime is used for calculating the expiration time.

Expiration... Templates (warning / notification mails):

Please refer to the chapter "Web-frontend and template management" for more details.
 

Images / Binaries / Memos...

You can have multiple image fields as well as binary fields and memos in each table. Just create a table field and set its data type to "image", "binary" or a memo one. Depending on your selection, the concerned field has a specific behavior:
 
Selected data type...
Description...
image Image fields (GIF, JPG, PNG & BMP formats); will show an image as field value.
binary Binary fields; will show a link to allow file downloads.
memo / htmlmemo Memo fields (for textual or HTML content); will show its content as field value.
uploadmemo Same as memo fields, but used together only with edit control "upload (other files)".

By using the parameter "Max. size" at "Field properties", you can specify the maximum file size in bytes allowed for uploads. Setting a file size limitation is strongly recommended, if you want to enable public record additions or modifications.

Important note: It is not possible to perform search operations upon these fields' content.
 

Temporarily blocking of records...

An existing record can be blocked, which means that it cannot be found during table browsing or search operations. In order to enable this feature, you must have the system field _blocked in your table.

How to block a record:

Search for the concerned record to block, click on "Update" (can be found in the upper right corner of the screen) and then just check the appropriate button (edit control of the field _blocked).

How to unblock a record:

Search for the concerned record to unblock, click on "Update" (can be found in the upper right corner of the screen) and then just uncheck the appropriate button (edit control of the field _blocked).
 

Send out mailings...

In order to create a mailing, select the desired table and choose "Send out mailings" from admin panel. Alternatively you can click on "Mailings" in the upper right corner of the screen.

You can send out mailings either to all record owners of a selected table (recipients filter set to "Send to all") or just mail such people who have allowed you to do so (recipients filter set to "Send to subscribed users only").

Mark "Do not send duplicate e-mails" in order to send only one single mail, even a particular address is found multiple times.

Custom recipients filter:

You can specify a search query that filters only recipients matching particular criteria. It is possible to use any field available in the table this mailing is intended for. Click on "view filter results" to get a listing of all selected records.

For example: income>=3000 AND education="high"
Only recipients will receive this mailing which have an income of more than 3000 currency units and a "high" education level.

Usage note: For more details about how to perform search operations, please refer to "Searching of databases (tables)" below.

Personalized mailings:

Personalized mailings contain an individual "To:" field for each recipient. In addition, you can include fields from the concerned table  (format: <!--$FIELDNAME-->) which are replaced by appropriate content.
 

EasyData asks...
Description...
Sender's name and e-mail Type in the name and e-mail address used in the header of outgoing mails.
Message subject Type in the subject line used in the header of outgoing mails.
Message format Select message format, "Plain text" or "HTML" (applicable to recipients' mail clients).
Message body Type in the content of your mailing here.

Sample personalized mailing:
 
  Dear <!--$first_name--> <!--$last_name-->,

you recently added your website <!--$URL--> to our database.

If you would like to increase the popularity of your <!--$BUSINESSTYPE--> company, you should take a closer look at our valuable offers !

With kind regards,
John Smith (my sample company).

Technical note: If "Do not send duplicate e-mails" is marked, a recipient with multiple records receives mail for the first found record only (and so will just see content of table fields for this specific record).

Quick mailings:

Quick mailings are used to send identical messages to all recipients (faster processing). However the usage of personalized elements is not possible (included table tags are removed automatically).
 

EasyData asks...
Description...
Mailing method Mark "Quick" to send out messages by using blind carbon copies.
 
EasyData asks...
Description...
"To:" field Specify one visible "To:" address for the mailing (user addresses are hidden).
Max. number of BCC recipients
per message
Max. number of recipients allowed per message; recommended value: 99.
 

Intelligent mail content delivery:

The most powerful feature is the delivery of intelligent message parts based on a record's content and "if/then/else" conditions. So a mailing can be written absolutely targeted, which leads to higher response rates and increased user convenience.

Important note: This works only with "Personalized" mailing method. "Quick" mailings will ignore intelligent message parts.

Each "intelligent message part" has the following structure:
 
  <!--if <expression>-->
Message delivered when <expression> is true.
<!--else-->
Message delivered when <expression> is false.
<!--endif-->

Usage notes: "if" and "endif" tags are required, while the "else" part is optional. Recurrent tags are not allowed.

<expression> can contain these operators:
 

Type...
Allowed operator...
Possible applications...
Mathematical operators +, -, /, *, == Any kind of calculations with numerical field content, e.g. indices, formulae.
String comparison operators eq (equal)
le (less than or equal)
ge (greater than or equal)
lt (less than)
gt (greater than)
ne (not equal)
Comparison of string based field content, e.g. names and selected options.
Numerical comparison operators =, <=, =>, >, <, <> Comparison of numerical values, e.g. age, size.
Logical operators AND, OR, NOT Relationships between fields, calculation and comparison results.

Format of field values: $fieldname (field names are handled case-sensitive).

Sample applications:
 
  <!--if $gender eq "m"-->
Ties for 5 Euro only.
Just a limited time, buy now !
<!--else-->
Parfums starting at 10 Euro.
<!--endif-->

<!--if $income < 20000 AND $intelligence_quotient <= 30-->
Hi <$name>,
participate in our "get rich fast" special offers !
This is your chance to live like the <rich & beautiful>.
<b><i>So start acting now - start today.</b></i>
<!--endif-->

<!--if $index * 10 / $basetax + 0.03 == 2 AND $taxstatus eq "high"-->
Save taxes by ordering our book "1001 (il)legal tax tricks".
<!--else-->
Increase your income by ordering our book "1001 ways to get wealthy".
<!--endif-->

Usage notes: Second sample does not have an "else" tag, which means that a false result will lead into not displaying anything. Should a field value be unavailable (spelling error, non-existing field), then the argument is considered as being empty.

Technical note: It is also possible to use HTML and client-sided scripts (like JavaScript) within intelligent message parts.

How to perform a test of personalized and intelligent mailings:

In order to let the system process a sample message, click on the button "Send test message to admin". The system then generates a mailing, which is sent to the administrator under real life conditions.

And these default values are used: Numerical = 0; date/time related fields = actual date/time; URLs = http://test.<fieldname>/; e-mail addresses = test@<fieldname>.test; fields in general = test-<fieldname>.
 

Searching of databases (tables)...

Supported search operators:
 
Search type...
Explanation...
Multiple keywords, auto-wildcards Single substrings (words, also partial) and combinations of them.

Sample search operations:

book
favorite radio station

Technical note: Keyword "book" also finds "books" and "bookstore" because of auto-wildcard search capability. Use phrases to find a substring exactly as it is.

Boolean operators
AND (&), OR (|), NOT (!)
Logical relationships within search operations.

Sample search operations:

love AND peace
dogs AND cats OR mice
"sweet fruits" NOT vegetables

Technical note: Instead of the words AND, OR and NOT you can also use the operator characters ampersand (&), pipe (|) and exclamation mark (!).

Parentheses
( )
Operations put within parentheses are processed first; its result is then used for the following operations of the search string.

Sample search operations:

knowledge OR (prejudice AND crime)

Phrases Sequences of words forming a syntactic unit, mostly with special meaning. Phrases are enclosed in quotation marks or inverted commas.

Sample search operations:

"to be or not to be"
'hello friends'
"Max said 'EasyData is a perfect database' happily"

Technical note: When searching for phrases within phrases, then use quotation marks and inverted commas to separate the phrases from each other.

Comparing operators
<, >, =, <=, >=, <>, ~, !~
 
= exact match < less than
> greater than <= less or equal than
>= greater or equal than <> or != not equal (filters)
~ contains text (default) !~ does not contain text
~~ whole word match  
Mainly used for filter operations, e.g. to check a field's content for matching results or results within the set range.

Sample search operations:

(field1="USA" AND city="LA") OR (field1="South Africa" AND city="Cape town")
lovewords!~hate
maximum_amount>=139.99
keyword~~"view"

Wildcards
*, ?, \
 
* star, asterisk (content mask)
? question mark (character mask)
\ left slash (escape character)
Wildcards are marking variable parts of a field value; they are helpful when looking for word variations and different spellings.

The asterisk (*) is considered as placeholder for none, one or more characters; the question mark (?) is considered as placeholder for exactly one character.

Sample search operations:

book? (may find "books", but not "book")
book* (may find "book", "books" and "bookstore")

Technical note: Place an escape character (\) before any symbol to disable its special meaning (e.g. a search for the string "book\*" will look for "book*").

Usage note: All search types can be combined together for powerful complex search operations.

Create advanced search forms for online usage:

Please refer to the chapter "Web-frontend and template management" for more details. Please also take a look at this chapter to find out how to search multiple tables at a time.
 

Re-randomization...

What exactly is re-randomization ?

When browsing categories or viewing search results, all shown records are presented in a given order. However in some cases, you may wish to achieve a random order (e.g. to provide a fair rotation of records).

The re-randomization feature allows to fill one or more table fields with random numerical values; these fields can be used for sorting records by chance. Each table maintenance, the field values are refreshed and so also records are sorted differently.

Pre-requisites for re-randomization feature:

Maintenance interval: Ensure that a maintenance interval is specified. Please see screen "Table parameters", "Table automatic maintenance". Recommended range: 3.600 to 43.200 seconds (1 to 12 hours).

Create a "randomizable" field:
 

Action to perform...
Description...
Create a table field Click on "Restructure table" and create a new table field (used name doesn't matter).
Hide field from being visible * Go to the screen "Table parameters" and remove its name from all "Visible fields" parameters (table browsing mode and detailed entry view mode).
Mark field for sorting * On the same screen, add the random field to "Sort records" parameters. Random fields can be used together with other fields for flexible sorting.
Set re-randomization parameters On the same screen, go to the "Field re-randomization" part:
 
EasyData asks...
Description...
Re-randomization interval (sec.) Time frame before refreshing random fields (same or higher value as maintenance interval).
Re-randomization fields Choose field(s) being intended as random ones.
 
* More details can be found at the chapter "Web-frontend and template management".
 
Sorting by record popularity...

What is meant with "popularity" ?

Popularity refers to the number of times, a particular record is shown in detailed entry view mode.

How to count the popularity of records ?

Add the system field _views_number to your table. Its numerical content is automatically handled by EasyData and becomes increased by 1 each time a record is shown detailed (as higher the value, as more popular the record).

How to sort search results by popularity ?

When wishing to sort records by popularity, just ensure that _views_number is added to all "Sort records" parameters at the "Table parameters" screen.

Usage note: You can also show the field's content (e.g. color it with "Display mask" parameter when it exceeds a given number to attract users) or embed it into search forms - there are many more types of usage than just sorting.
 

Bookmarking records...

What exactly is record bookmarking ?

Each time a user browses through a table, it is possible to bookmark records (a cookie is set on user's computer containing the table name and record ID) for finding them later again easily. It is possible to bookmark as many records as desired.

How to enable record bookmarking ?

You just need to add the system field _addbookmark to the concerned table. This will lead that the necessary links and screen elements are created automatically allowing records being bookmarked, bookmarked ones viewed and unbookmarked.

Each bookmark will kept stored for seven days to allow later visits without losing already found information.

View set bookmarks:

Click on "Bookmarks" available in the upper left corner of the screen to see a list with all bookmarked records of the actual table. In order to remove a bookmark, uncheck "Keep bookmark" of the concerned record and click on "Refresh bookmarks".

Usage notes: Records are shown as specified for table browsing mode (as first column, a "Keep bookmark" button is shown). All bookmarks are alive for about seven days before they will be removed automatically.
 

Sending records via e-mail...

EasyData provides the ability to send records via e-mail. This allows users to forward records very convenient to other people (or putting them into their own mailboxes, of course).

How to enable sending of records via e-mail:

Please select the desired table and choose "Change table parameters and layout" from admin panel. Go to the part "'Send records by e-mail' feature".
 

EasyData asks...
Description...
Mode of "send this record by
e-mail" feature
Allow users of this table to show records to other people by sending an e-mail message together with some personal greetings.
 
Selection...
Description...
Don't show anything Disable this feature.
Show popup when link clicked Form is shown at request (popup window).
Show form when link clicked Form is shown at request (on detailed entry views).
Always show form Form is shown on each detailed entry view screen.
 
Fields to be mailed Right box (available selections): Choose field and click on "Add" to select it.

Left box (current selections): Click on "Delete" to remove a field or "Up" and "Down" to change field order.

Alternatively you can type in a comma delimited list of fields manually.

Default "from" address of ... msg. Type in the e-mail address used in the header of outgoing e-mails.
"Record by e-mail" msg. template Specify the mail message template or keep the default one.

Technical notes: Any applying field formatting (defined in display masks) is ignored (plain text message is sent). Binary, memo and image typed fields are shown as links to their respective files.
 

Automatic backup generation...

What exactly is backup generation ?

EasyData is able to generate backups of its data files automatically to allow restoring them later. Generated backup files (extension .bak?) are located within the "data" directory.

Pre-requisites for generating backups:

Maintenance interval: Ensure that a maintenance interval is specified. Please see screen "Table parameters", "Table automatic maintenance". Recommended range: 3.600 to 43.200 seconds (1 to 12 hours).

Important note: The backup update period must be longer than the specified maintenance interval.

Enable / disable backup generation:

Select the desired table and choose "Change table parameters and layout" from admin panel. Alternatively you can click on "Restructure" in the upper right corner of the screen and then click on "Edit table parameters".

Go to the part "Table automatic maintenance" to find the appropriate settings:
 

EasyData asks...
Description...
Number of backup files Type in the number of different backup file levels generated (max. 5). Increasing this value gives you a better chance to restore elder data, but also requires more diskspace.
Backup file #1 update period (hours) Specify the time frame between backups are generated.
Rename backup file #x to #x
after this number of updates...
Type in the number of updates processed for the concerned backup file before it will be replaced by the next generation of backups.

Technical notes: In order to disable the backup feature, set "Number of backup files" to 0 or leave it empty. New backups are not generated for unchanged files (since backup already exists).

Recommended backup settings:

Maintenance interval = 3.600; number of backup files = 4; backup file #1 update period = 6
Rename backup file #1 to #2 after this number of updates of backup file #1: 4
Rename backup file #2 to #3 after this number of updates of backup file #2: 5
Rename backup file #3 to #4 after this number of updates of backup file #3: 6

<TABLENAME>.bak1 holds 0 to 6 hours old database content.
<TABLENAME>.bak2 holds 6 to 24 hours old database content.
<TABLENAME>.bak3 holds 1 to 5 days old database content.
<TABLENAME>.bak4 holds 5 to 30 days old database content.

<TABLENAME>: Name of the table, concerned backup file belongs to.

Retrieve data from backup:

If your SQL server crashed or your data was damaged, you may restore a corrupted data from EasyData backup file. Import latest error-free backup copy into SQL table (data import/export described in the "Database import and export tools" chapter). Format of backup file is "Tab-delimited text file, without field names". Please ensure first, that the chosen backup contains really the information you wish to bring back.

Helpful hint: It is recommended to store backups also on tapes or other storage devices (ask your system admin for details); in case of a physical server damage, you are able to recover the backups in this way.
 

Database import and export tools...

In order to import or export data, click on the button "Import / export data" available on the main admin menu.

Import data into database:

Click at the button "Start data import..." to begin reading in an existing 3rd-party database.
 

EasyData asks...
Description...
Determine data file being uploaded Choose the file holding the data intended for being imported to EasyData or select an already uploaded one * for processing.

* It is also possible to upload files directly to the server (e.g. via ftp) and then use the admin panel for importing them - please refer below for more information.

Specify data format Select the type of the importable file; alternatively to the pre-defined types, you can also set up a custom format in case of reading special database structures.

Please consult the manual of the 3rd-party database product you wish to import data. If it directly supports EasyData, mark "EasyData exchange format".

Important note: Please ensure to decide for the correct data format, otherwise the imported data may appear being destroyed.

Determine the target table New table:

Select this radiobutton to create a new table for the importable data.

Important note: Ensure to mark "Add autoincrement key field" to automatically add a key field (if not existing) - the first table field must be unique to allow identifying records.

Existing table:

Select this radiobutton and choose the desired table (must have the same structure as the one to import); decide either to replace or update already existing data.

Fields selection and post-processing Determine whether you want to import all fields or just selected ones.

If "Let me select fields after uploading" was chosen, a screen appears after the file was read in that shows a list with fields for being importable.

Mark "Delete uploaded file after processing" to remove the source file from the system as soon as the data import has been finished (recommended).

Click on the button "Import data" to start the importing process. After it is finished successfully, please check the read in data for consistency first. Before importing data into existing table, it is also recommended to export data from original SQL table to have a backup copy.

Technical note: Data formats "... with field names" requires that the first line of the importable file holds the names of the fields. Alternatively, default names are chosen you can rename later at any time.

Importing already uploaded source files:

This feature is useful especially when trying to import huge databases, because the file size allowed to read in through the admin panel may be limited by your server or webbrowsing software...

Just place the source file into the directory data/import.tmp. Now go to the admin panel, click on "Import / export data" and select the concerned file from the list (see parameter "Determine data file being uploaded").

Export data from database:

Select the appropriate source table and click on "Continue..." to go to the next screen.
 

EasyData asks...
Description...
Specify data format Select the type of file you wish to build: You can either decide for a pre-defined format or a custom one suited for special applications.

Usage note: If supported by the target database software, choose "EasyData exchange format" to achieve best results.

Select fields to export By default, all fields and their contents will be exported; however you can uncheck fields not required in your target application (e.g. the ID field may be of no usage there).
Set optional data filter Depending upon the available system fields, you are able to set additional filters.

Only records matching the filter criteria (multiple filters can be connected with AND / OR operators) will be exported. This may save additional diskspace.

For example, you can specify a range of records by using the key field filter (ID field) or enter a search query to export only a determined group of records.

Now click on "Export data" to start the exporting process. A "save file" dialog is shown by your web browsing software to store the exported data file on your computer.

Advantages of the "EasyData exchange format":

The "EasyData exchange format" is a tab-delimited text-based format also storing binary field content, like images or software files together with the textual data (URL-encoded).

Where possible, this format should be used for data import and export tasks to ensure best results when handling non-textual contents (all other supported formats cannot handle binary fields).

Technical note: If you are a programmer interested in implementing our exchange format into your own applications, please let us know. We are able to provide you with additional information upon request.

Helpful hint: Should you wish to manually back up an entire database or to carry an existing one over to an other EasyData installation, you may decide to create a "table package" as described more closer in the following.

Table packages - overview:

A table package contains an entire database (the table and all related elements) in one single file (TABLENAME.ede). So table packages are ideally suited for carrying an entire database to an other server or for generating manual backups.

Download table package:
 

EasyData asks...
Description...
Specify source table Select the table being intended for package downloading.
Include log files Mark this button to add all log files to the package (may become very large).
No compression Click here to not compress the table package.
Use internal gzip compression Use the internal compression utility (to pack the table package) or unmark this checkbox and specify external utility as followed.
Use external compression program Click here to compress the table package by using a server-sided tool.

"Compression command template": Contains the command used for compression. By default, EasyData tries to determine the standard compression utility of the server.

The compression command usually has two variables: $file_to reflects the compressed file, $file_from reflects the original source.

"Compressed file extension": Extension appended at file marking it as compressed.

Now click on "Download table" to save the table package. A "save file" dialog is shown by your web browsing software.

Upload table package:
 

EasyData asks...
Description...
Specify ".ede" file Select a local ".ede" file being intended for package uploading.
Decompression method
Compressed table packages needs to be decompressed first.
No decompression Click here to not decompress the uploaded package.

Important note: In the case a compressed package is uploaded but not decompressed correctly, an error message will be displayed and installation aborts.

Use internal gzip compression Use the internal decompression utility (to unpack the table package) or unmark this checkbox and specify external utility as followed.
Use external compression program Click here to decompress the table package by using a server-sided tool.

"Decomp. command template": Contains the command used for decompression. By default, EasyData tries to determine the standard decompression utility of the server.

The decompression command usually has two variables: $file_to reflects the compressed file, $file_from reflects the original source.

"Expected filename after decompression is complete": Select either to autodetect the package filename or specify one (has to end with .ede).

Now click on "Upload table" to copy the table package to the server.

Technical note 1: Should there already exist a table with equal name, EasyData chooses a new name for the uploaded table (may be changed later at "Restructure table" screen).

Technical note 2: The choices "Use internal GZIP compression" respectively "Use internal GZIP decompression" for table package down- and uploads are only available, if there is the Perl module "Compress::Zlib" installed.
 


 
Web-frontend and template management

With EasyData it's a matter of just minutes to create new databases and bring them online. We provide the following three ways to access data online and to work with the powerful web-frontend:

Important note: Ensure that you are logged out as admin, otherwise you may see a slightly different web-frontend.

1. Pre-defined web-frontend (default template scheme):

This is the easiest way, because you just need to add the following URLs as links to your website to allow people working with your tables (depending upon the set configuration).
 

Action to perform...
URL to call (location varies on your system, of course)...
Browse table http://www.atomicsoft.com/cgi-bin/ed/db.cgi                or
http://www.atomicsoft.com/cgi-bin/ed/db.cgi?tbl=<name>
Browse table (specific record) http://.../ed/db.cgi?tbl=<name>&id=<recID>
Browse table (specific category) http://.../ed/db.cgi?tbl=<name>&category=<catID>
Perform search operation http://www.atomicsoft.com/cgi-bin/ed/search.cgi            or
http://www.atomicsoft.com/cgi-bin/ed/search.cgi?tbl=<name>
Show table overview http://www.atomicsoft.com/cgi-bin/ed/tables.cgi
<name>: Desired table name (alternatively the default table will be used).
<recID>, <catID>: Record ID or category ID the request is intended for.

It's a matter of course, that the default template scheme can be customized (color and font schemes) according your needs achieving a similar layout as the one of your business website...

Go to the admin menu, click on the button "Edit templates" and search for "main template" labelled entries. These contains various layout settings taking effect to all sub-templates connected with the concerned main template.

2. Full set of freely configurable templates:

Beside of just customizing color and font schemes with style sheet commands, you can create your own set of templates or re-write the standard ones (they are a good basis for your own templates).

Each template is written in HTML and contains special tags which will be replaced by appropriate content. There's nothing you cannot customize, however you should have a familiar understanding of EasyData and HTML programming.

3. Integration of EasyData with HTML based forms:

Another method is to write own webpages and use HTML based forms to call EasyData. Available for selected actions like searching databases and adding new records. They can be also used in combination with templates.
 

Adjust table parameters...

Choose the desired table and select "Change table parameters and layout" from main admin menu.

Table layout parameters:
 

EasyData asks...
Description...
Table display label Name of your table, visible for users.
Table browsing mode
This mode is used when people browsing your entire database (e.g. by categories) or while viewing search results. It is mainly intended to give an overview about available records (e.g. choose only important fields for "Visible fields" parameter).
Show subcategory entries Check it to allow also showing of records contained in subcategories.
Records belonging to multiple
categories
Records, which are members of multiple categories, are normally shown in their respective primary categories only.

If you wish to show records in all categories they belong to, select "Display in all categories" instead of.

Category entry template Specify or edit a template file applicable to the web-frontend.
Sort records by (when browsing) Right box (available selections): Choose field and click on "Add" to select it.

Left box (current selections): Click on "Delete" to remove a field or "Up" and "Down" to change field order. You may also decide for descending or ascending sorting (standard).

Alternatively you can type in a comma delimited list of fields manually. Add "-" before a fieldname to sort in descending order (ascending sorting done by standard).

View records per page Number of records displayed per page.
Visible fields * Right box (available selections): Choose field and click on "Add" to select it.

Left box (current selections): Click on "Delete" to remove a field or use "Up" and "Down" buttons to change field order.

Alternatively you can type in a comma delimited list of fields manually.

Linked columns Field content is linked and if clicked on, concerned record will be displayed in detailed entry view mode.

Right box (available selections): Choose field and click on "Add" to select it.

Left box (current selections): Click on "Delete" to remove a field or use "Up" and "Down" buttons to change field order.

Alternatively you can type in a comma delimited list of fields manually.

Table entry template Specify or edit a template file applicable to the web-frontend.
Detailed entry view mode
This mode is used when a user decides to view a record more detailed (e.g. done by clicking on one of the "Linked columns" in table browsing mode). In this mode, only one particular record is shown per screen (with all or just selected fields).
Visible fields * Fieldnames shown when viewing a record detailed.

Right box (available selections): Choose field and click on "Add" to select it.

Left box (current selections): Click on "Delete" to remove a field or use "Up" and "Down" buttons to change field order.

Alternatively you can type in a comma delimited list of fields manually.

"Add record" mode
Visible fields * Fieldnames shown when adding a record.

Right box (available selections): Choose field and click on "Add" to select it.

Left box (current selections): Click on "Delete" to remove a field or use "Up" and "Down" buttons to change field order.

Alternatively you can type in a comma delimited list of fields manually.

"Record update" mode
Visible fields * Fieldnames shown when modifying a record.

Right box (available selections): Choose field and click on "Add" to select it.

Left box (current selections): Click on "Delete" to remove a field or use "Up" and "Down" buttons to change field order.

Alternatively you can type in a comma delimited list of fields manually.

* These are required (and important) fields; double-check them for containing correct values.

Search layout parameters:
 

EasyData asks...
Description...
Sort records by default Right box (available selections): Choose field and click on "Add" to select it.

Left box (current selections): Click on "Delete" to remove a field or "Up" and "Down" to change field order. You may also decide for descending or ascending sorting (standard).

Alternatively you can type in a comma delimited list of fields manually. Add "-" before a fieldname to sort in descending order (ascending sorting done by standard).

View records per page Number of records displayed per page.
Search fields * Fieldnames available for searching (no binary, memo & image fields).

Right box (available selections): Choose field and click on "Add" to select it.

Left box (current selections): Click on "Delete" to remove a field or use "Up" and "Down" buttons to change field order.

Alternatively you can type in a comma delimited list of fields manually.

Found entry template Specify or edit a template file applicable to the web-frontend.

* These are required (and important) fields; double-check them for correct values.

Categories list layout:
 

EasyData asks...
Description...
Show number of records Check to let EasyData count the number of records and display it beside the category name. For example: "My category (200)".
Number of columns Number of columns to display categories in.
Root category display label Label for root (main) category; may be "All" or "Start here" for example.

Behavior:
 

EasyData asks...
Description...
"Add record" mode Available parameters:

"Data verification script": Perl script being executed after pressing the "Submit" button (before data is added); suited for input validation.

"Run this code before applying actual changes": Perl script being executed after the data verification script or (in moderated environments) record approval. It is not executed when data verification script returns an error or admin declines a moderation request.

Possible applications:

Modify some field values before posting, validate input or update data in other tables or perform other actions (e.g. calling 3rd-party software).

Notes for using Perl codes:

Field values are read- and writable via hash $fields{<fieldname>}. Just replace <fieldname> with a field of the concerned