generic csv import for tables relationships to other tables
Archived from the Xataface Users forum.
rscales — Tue Mar 09, 2010 3:13 am
Hi,
I’d like to know if there is an easy way for me to develop a generic csv import function that would be able to reference the same relationships I’ve defined for new records in Xataface with valuelists feeding the fields.ini file.
For example, imagine the following 2 tables:
- Code: Select all
- `Table category
id category_type
1 black
2 red
3 yellowTable jelly_bean
id name category
1 lemon 3
2 cherry 2
3 strawberry 2`
Now imagine I have a csv file:
- Code: Select all
Tablename,jelly_bean liquorice,black raspberry,red
I’d like to know how I could know from a generic import_csv file (stored in each table delegate class) what the relationships defined in valuelists.ini and fields.ini are such that I could:
1) check for validity of the input (i.e. does black exist in the category table or not)
2) input the correct value for the table (i.e. input “1” into the third column, rather than “black”).
For now, I don’t have a problem copying this generic import_csv to all table delegate classes, but it would also be nice if I could somehow centralize this script and call from each table delegate class (I’m a php novice).
Thanks,
Rich
rscales — Wed Mar 10, 2010 10:35 am
Hi,
I have since made some progress. I now am able to find the fields of a table, if the widget type is text or select, and the valuelist name if they are select.
Now, I need to know how I can use the valuelist name to give me an array of possible possible entries for that column from within my import__csv php function.
- Code: Select all
$table =& Dataface_Table::loadTable('jelly_bean''); $fields =& $table->fields(); foreach (array_keys($fields) as $fieldname){ echo $fieldname." ".$fields[$fieldname]['visibility']['list']." ".$fields[$fieldname]['widget']['type']." ".$fields[$fieldname]['vocabulary']." "; } $valuelists =& $table->valuelists(); foreach (array_keys($valuelists) as $valuelistname){ echo $valuelistname."-"; }
Again, I need to know which fields are actually relationships with other tables, and what those relationships are so I can correctly import the category id, rather than the category type name in my example from the first post.
Regards,
Rich
rscales — Fri Mar 12, 2010 3:18 am
Hi,
I have since made some more progress but am missing one final piece of information.
How can I retrieve the sql query defined in valuelists.ini? I can retrieve the name of the valuelist for all fields in a table that are of type select, but I can’t seem to find if/where the string is stored in dataface. Alternatively, I don’t necessarily need to do the query if the results of the valuelist query are stored somewhere. Also, if the results are stored, how can I get a list of them?
-Rich
rscales — Fri Mar 12, 2010 3:44 am
Hi,
Never mind on this.
$table->valuelists();
and array_keys / array_values in php did the trick.
-Rich