Mlam main page
The options are : size of this box and max number of characters allowed.|
(1) : default appearance
(2) : size limited to 3 characters
(3) : number of editable characters limited at 3
The options can be combined.
The verification routines work, with some exceptions for some floating point
types with very big values. All the internal details of the types definition like int(11)
are implemented for value verifications.
Various ways to handle this type.|
If this data is indeed a number, it is handled just like an integer (or equivalent) type. That means
the options (1), (2) and (3).|
But it may also be used as a foreign key (the values contained in this data are primary keys value in another table). I'll try to be clear, so we will consider here 2 tables (named table_a and table_b), and more specifically a row in table_a (row_a). Each value in row_a represents a data in table_b (so it is the value of the id of this data in table_b). Mlam provides various ways to handle this case, mainly because there are a lot of possibilities, presented for each option.
Various ways to handle this type.|
(4) : list of the available data|
This option presents all the elements available in table_b. Mlam offers the possibility to choose the row shown in this listing (one of the row in table_b), and offers also the option to specify the row used to order the data. It may be the same one (show the row name from table_b ordered by this row), but another one (show the row name ordered from a row date).
(5) : Direct external insertion and link
In option, mlam allows the user to enter a new data. When submitting this value, a new data will be created in table_b, ant it will be linked in the current data in table_a. This option works only for one row in the table.
Note : This option is good unless there are a lot of data to show.
option : entering new value (5)
(6) : hierarchical list of the available data|
The main concept is the same as (4), but the data shown have a father-son architecture. That means that table_b contains one specific row (for instance father_row) which represents the "father" of the current row. If this value is not present, the data is considered as a main father, and all the sons are presented below their father (with a sign '+' preceding their value). To use this option, you have just to specify to mlam what is father_row.
(7) : searching tool|
If the numbers of values in table_b is too high to show all of them in a list, the only way to allow the linkage of one data of table_b is to look for it. So mlam provides an integrated search tool.
The search is done of any number of rows you want in table_b. You only have to select the fields in which you want to search, and give the indications you want to see for each field (for instance 'look for names'). Mlam automatically provides correct search options, depending of the type of the fields (see the difference between a number field and text fields for instance).
The user has the possibility to give one or more data to look for. Of he gives more than one data, the search engine tries to find results matching all the data. The result page is also configurable. There's no limit in the number and order of the rows shown (except the number of rows in table_b). There's also a limit in the number of results shown in the page, with the classic links to see the following (and preceding) results. Each result offers a checkbox to indicate that this is the value to link in table_a.
Mlam has here another possibility : allowing the creation of a new data in table_b, and then automatic link to the previous data in table_a. This is done simply by providing mlam a structure defining how to handle the data in table_b. It will be used to edit the data in table_b.
So with only one php page (and 3 php lines), you have the possibility to edit one table, search for data in another table, and edit a new data in this other table, to finally link it in the original table!
search for values in field 1 : |
search numbers :
search for values in field 2 : (7)
(8) : radio button |
This presentation is meant to be used when table_b contain only a few number of elements. All the elements of the table are presented here, showing the values from a selected row, ordered eventually from this row or another one (see (4)).
(9) : complete list
Once again, this is better to use this option where the number of elements in table_b is low. The options are almost the same as (8), but mlam must know how many elements to show to use this option (this is in html the same as (4) with a fixed number of selections).
(10) : picture selection|
This method is useful when the data in table_b are representing pictures (typically one of the rows is the name of the file, and other rows may represent the width and height...). To make it easier to select a correct picture, mlam provides this special listing. All the pictures are listed with the usual options (selection of the row to show and an optional row to order the list). When the user selects an element in the list, the corresponding picture is loaded to be shown just below the list. It helps considerably to verify the picture to be linked.
visualisation of the picture selected(10)
This type of data contains more than 256 characters. It is handled by mlam just like (1). Mlam allows
to define the size of this input, by providing the number of rows and the number of cols of this
For the user using internet explorer 5 and above, mlam integrates a direct html edition. This a special activex working only with internet explorer 5. You may see an sample of the capabilities of this feature at this microsoft msdn page. The functions implemented in mlam are : bold, italic, underline, html link. Optionally, by providing a directory and the matching url for this directory, mlam provides mechanism to insert (by drag and drop) pictures in the text edited.
I don't remember exactly the correct term, so I will first explain what I'm talking about with a little
example. We consider here one table named project, and another table named developper. Each
table contains their own rows (name_project, type_project, name_developper...). The idea is to link
one project to the developper(s) working on this project. There's no limitation in the number of
developpers working on a project, so we won't create specific rows in the table project for linking
the developpers, as it was done in (4) for instance. The only accurate way is to create a specific table
which will be used to link a project and a developper. Let's call this table link_project_developper
(I know, this was mind consuming to find this name). Mlam is able to handle this kind of link, but the
following properties must be found :|
- the link table (here link_project_developper) must have a primary key (with auto increment)
- the link table (here link_project_developper) must have two rows considered as external key (that means bigint, mediumint or integer types).
Mlam handles this link table like (11). The element to provide to mlam are :
1: the name of the table linking the data with its primary ID
2: the name of the table linked with with its primary ID
3: the row shown from the table linked (this row is presented ordered)
All these manipulations are simplified thanks to the administration tool. Mlam shows the list of all the available data, minus the already linked data. Then comes the data linked, with the possibility to unlink them (without deleting them).
Moreover, if the link table contains an integer field, this field can be use to sort the data linked (as you can see on the sample). You just have to specify this field in the administration tool to make it available.
If the table linked is used to represent pictures (for instance photos of our developpers), they will be shown when selected. Mlam must know the directory containing the pictures, and the matching url to this directory. Once again, this is easier to give these details while using the administration tool.
|You have also the possibility to use a search engine to look for data to link (see 12). It works exactly like the search engine for the "simple" external keys, but here it deals with the link table.|