diff --git a/mod/data/edit.php b/mod/data/edit.php
index 65ac035..7888ab2 100755
--- a/mod/data/edit.php
+++ b/mod/data/edit.php
@@ -31,7 +31,6 @@
     $rid   = optional_param('rid', 0, PARAM_INT);    //record id
     $import   = optional_param('import', 0, PARAM_INT);    // show import form
     $cancel   = optional_param('cancel', '');    // cancel an add
-    $fieldids = optional_param('fieldids',''); // ids of fields being edited
     $mode ='addtemplate';    //define the mode for this page, only 1 mode available
 
     if ($id) {
@@ -139,10 +138,13 @@
     }
     include('tabs.php');
 
+
 /// Process incoming data for adding/updating records
 
     if ($datarecord = data_submitted($CFG->wwwroot.'/mod/data/edit.php') and confirm_sesskey()) {
 
+        $ignorenames = array('MAX_FILE_SIZE','sesskey','d','rid','saveandview','cancel');  // strings to be ignored in input data
+
         if ($rid) {                                          /// Update some records
 
             /// All student edits are marked unapproved by default
@@ -159,16 +161,15 @@
 
             /// Update all content
             $field = NULL;
-            foreach ($fieldids as $fieldid) {
-                $bits = explode('_',$fieldid);
-                $justid = $bits[0];
-                $name = "field_$fieldid";
-                $value = optional_param( $name,'' );
-                if (empty($field->field) || ($justid != $field->field->id)) {  // Try to reuse classes
-                    $field = data_get_field_from_id($fieldid, $data);
-                }
-                if ($field) {
-                    $field->update_content($rid, $value, $name);
+            foreach ($datarecord as $name => $value) {
+                if (!in_array($name, $ignorenames)) {
+                    $namearr = explode('_',$name);  // Second one is the field id
+                    if (empty($field->field) || ($namearr[1] != $field->field->id)) {  // Try to reuse classes
+                        $field = data_get_field_from_id($namearr[1], $data);
+                    }
+                    if ($field) {
+                        $field->update_content($rid, $value, $name);
+                    }
                 }
             }
 
@@ -195,19 +196,19 @@
 
             $emptyform = true;      // assume the worst
 
-            foreach ($fieldids as $fieldid) {
-                $bits = explode('_',$fieldid);
-                $justid = $bits[0];
-                $name = "field_$fieldid";
-                $value = optional_param( $name,'' );
-                if (empty($field->field) || ($justid != $field->field->id)) {  // Try to reuse classes
-                    $field = data_get_field_from_id($fieldid, $data);
-                }
-                if ($field->notemptyfield($value, $name)) {
-                    $emptyform = false;
-                    break;             // if anything has content, this form is not empty, so stop now!
+            foreach ($datarecord as $name => $value) {
+                if (!in_array($name, $ignorenames)) {
+                    $namearr = explode('_', $name);  // Second one is the field id
+                    if (empty($field->field) || ($namearr[1] != $field->field->id)) {  // Try to reuse classes
+                        $field = data_get_field_from_id($namearr[1], $data);
+                    }
+                    if ($field->notemptyfield($value, $name)) {
+                        $emptyform = false;
+                        break;             // if anything has content, this form is not empty, so stop now!
+                    }
                 }
             }
+
             if ($emptyform){    //nothing gets written to database
                 notify(get_string('emptyaddform','data'));
             }
@@ -223,18 +224,18 @@
                 }
 
                 //for each field in the add form, add it to the data_content.
-                foreach ($fieldids as $fieldid) {
-                    $bits = explode('_',$fieldid);
-                    $justid = $bits[0];
-                    $name = "field_$fieldid";
-                    $value = optional_param( $name,'' );
-                    if (empty($field->field) || ($justid != $field->field->id)) {  // Try to reuse classes
-                        $field = data_get_field_from_id($fieldid, $data);
+                foreach ($datarecord as $name => $value){
+                    if (!in_array($name, $ignorenames)) {
+                        $namearr = explode('_', $name);  // Second one is the field id
+                        if (empty($field->field) || ($namearr[1] != $field->field->id)) {  // Try to reuse classes
+                            $field = data_get_field_from_id($namearr[1], $data);
+                        }
+                        if ($field) {
+                            $field->update_content($recordid, $value, $name);
+                        }
                     }
-                    if ($field) {
-                        $field->update_content($recordid, $value, $name);
-                    }
-                }  
+                }
+
                 add_to_log($course->id, 'data', 'add', "view.php?d=$data->id&amp;rid=$recordid", $data->id, $cm->id);
 
                 notify(get_string('entrysaved','data'));
@@ -246,8 +247,6 @@
         }
     }  // End of form processing
 
-
-
     /// Print the browsing interface
 
     $patterns = array();    //tags to replace
@@ -271,9 +270,6 @@
     if ($data->addtemplate){
         $possiblefields = get_records('data_fields','dataid',$data->id,'id');
 
-        // keep a record of the fields used on the form
-        $data->fieldids = array();
-
         ///then we generate strings to replace
         foreach ($possiblefields as $eachfield){
             $field = data_get_field($eachfield, $data);
@@ -281,7 +277,6 @@
             $replacements[] = $field->display_add_field($rid);
             $patterns[]="[[".$field->field->name."#id]]";
             $replacements[] = 'field_'.$field->field->id;
-            $field->list_add_field( $data->fieldids );
         }
         $newtext = str_ireplace($patterns, $replacements, $data->{$mode});
 
@@ -299,12 +294,6 @@
     }
     echo '</div>';
     print_simple_box_end();
-
-    // add list of fields to form (MDL-18542)
-    foreach ($data->fieldids as $fieldid) {
-        echo "<input type=\"hidden\" name=\"fieldids[]\" value=\"$fieldid\" />\n";
-    }
-
     echo '</div></form>';
 
 
diff --git a/mod/data/field/date/field.class.php b/mod/data/field/date/field.class.php
index 4db1372..2bf6722 100755
--- a/mod/data/field/date/field.class.php
+++ b/mod/data/field/date/field.class.php
@@ -53,14 +53,7 @@ class data_field_date extends data_field_base {
 
         return $str;
     }
-
-    function list_add_field(&$fields) {
-        $fields[] = $this->field->id.'_day';
-        $fields[] = $this->field->id.'_month';
-        $fields[] = $this->field->id.'_year';
-        return true;
-    }
-
+    
     //Enable the following three functions once core API issues have been addressed.
     function display_search_field($value=0) {
         return false;
@@ -88,11 +81,14 @@ class data_field_date extends data_field_base {
     }
 
     function update_content($recordid, $value, $name='') {
+
         $names = explode('_',$name);
         $name = $names[2];          // day month or year
+
         $this->$name = $value;
 
         if ($this->day and $this->month and $this->year) {  // All of them have been collected now
+
             $content = new object;
             $content->fieldid = $this->field->id;
             $content->recordid = $recordid;
diff --git a/mod/data/field/file/field.class.php b/mod/data/field/file/field.class.php
index 8bc4964..8d98ec5 100755
--- a/mod/data/field/file/field.class.php
+++ b/mod/data/field/file/field.class.php
@@ -70,12 +70,6 @@ class data_field_file extends data_field_base {
         return $str;
     }
 
-    function list_add_field(&$fields) {
-        $fields[] = $this->field->id.'_filename';
-        $fields[] = $this->field->id.'_file';
-        return true;
-    } 
-
     function display_search_field($value = '') {
         return '<input type="text" size="16" name="f_'.$this->field->id.'" value="'.$value.'" />';
     }
diff --git a/mod/data/field/latlong/field.class.php b/mod/data/field/latlong/field.class.php
index b2d9557..c5ef25a 100755
--- a/mod/data/field/latlong/field.class.php
+++ b/mod/data/field/latlong/field.class.php
@@ -68,12 +68,6 @@ class data_field_latlong extends data_field_base {
         return $str;
     }
 
-    function list_add_field( &$fields ) {
-        $fields[] = $this->field->id.'_0';
-        $fields[] = $this->field->id.'_1';
-        return true;
-    }
-
     function display_search_field($value = '') {
         global $CFG;
         $lats = get_records_sql_menu('SELECT id, content from '.$CFG->prefix.'data_content WHERE fieldid='.$this->field->id.' GROUP BY content ORDER BY content');
diff --git a/mod/data/field/textarea/field.class.php b/mod/data/field/textarea/field.class.php
index ede8426..92183f0 100755
--- a/mod/data/field/textarea/field.class.php
+++ b/mod/data/field/textarea/field.class.php
@@ -68,12 +68,6 @@ class data_field_textarea extends data_field_base {
         $str .= '</div>';
         return $str;
     }
-
-    function list_add_field(&$fields) {
-        $fields[] = $this->field->id;
-        $fields[] = $this->field->id.'_content1';
-        return true; 
-    }
     
     
     function display_search_field($value = '') {
diff --git a/mod/data/lib.php b/mod/data/lib.php
index 01672d6..ed36787 100755
--- a/mod/data/lib.php
+++ b/mod/data/lib.php
@@ -178,14 +178,6 @@ class data_field_base {     // Base class for Database Field Types (see field/*/
         return $str;
     }
 
-
-// add the field ids to an existing array to track added form fields
-// override if anything with multiple fields (e.g. date)
-    function list_add_field( &$fields ) {
-        $fields[] = $this->field->id;
-        return true;
-    }
-
 // Print the relevant form element to define the attributes for this field
 // viewable by teachers only.
     function display_edit_field() {
@@ -355,11 +347,6 @@ function data_generate_default_template(&$data, $template, $recordid=0, $form=fa
         return '';
     }
 
-    // store generated field ids (if form)
-    if ($form) {
-        $data->fieldids = array();
-    }
-
     // get all the fields for that database
     if ($fields = get_records('data_fields', 'dataid', $data->id, 'id')) {
 
@@ -386,7 +373,7 @@ function data_generate_default_template(&$data, $template, $recordid=0, $form=fa
             if ($form) {   // Print forms instead of data
                 $fieldobj = data_get_field($field, $data);
                 $str .= $fieldobj->display_add_field($recordid);
-                $fieldobj->list_add_field( $data->fieldids );
+
             } else {           // Just print the tag
                 $str .= '[['.$field->name.']]';
             }
