2014-01-31 79 views
0

美好的一天,php日期只显示在第一行

我已收到此代码以形成忍者形式插件。该代码使您能够将表单的提交放在前端。一切工作正常,直到我们添加了日期功能。这个函数应该把日期放在它创建的每一行的前面。不幸的是,它只把日期放在第一行的前面,之后的每一行,信息都向左移动一列而没有日期。

<?php 
function test_display_submissions($args = array()) { 
    // $args = array(
    // 'form_id' => 1 
    //); 
    $form_id = $args['form_id']; 
    $columns = $args['cols']; 
    $columns = explode(',', $columns); 
    $sub_results = ninja_forms_get_subs(array('form_id' => $form_id)); 
    $plugin_settings = get_option("ninja_forms_settings"); 
    if(isset($plugin_settings['date_format'])){ 
     $date_format = $plugin_settings['date_format']; 
    } else { 
     $date_format = 'm/d/Y'; 
    } 
    $content = '<table> 
     <thead> 
    <tr>'; 
    $content .= '<th>Date</th>'; 
    foreach ($columns as $id) { 
     $field = ninja_forms_get_field_by_id($id); 
     if(isset($field['data']['label'])){ 
      $label = $field['data']['label']; 
     } else { 
      $label = ''; 
     } 
     $content .= '<th>' . $label . '</th>'; 
    } 
    $content .= '</tr> 
    </thead> 
    <tbody>'; 
    $content .= '<td>' . date($date_format, strtotime($sub['date_updated'])) . '</td>'; 
    foreach ($sub_results as $sub) { 
     $fields = $sub['data']; 
     echo '<tr>'; 
     foreach ($fields as $field) { 
      $field_id = $field['field_id']; 
      $user_value = $field['user_value']; 
      if (in_array($field_id, $columns)) { 
       $content .= '<td>' . $user_value . '</td>'; 
      } 
     } 
    $content .= '</tr>'; 
    } 
    $content .= '</tbody> 
    </table>'; 
    return $content; 
} 
add_shortcode('display_subs', 'test_display_submissions'); 
+0

我建议你编辑你的问题并删除密码。这只会导致不好的事情。 – Askanison4

回答

0

在将日期添加到表格后开始。

应该<tbody><tr><td>DATE STUFF</td><td>MORE CONTENT</td></tr><tbody> 这种格式和您的日期栏应置于你的foreach循环中。

2

问题出在foreach循环中。你需要把你的日期放在循环中,而不是之前:

foreach ($sub_results as $sub) { 
     // Display date 
     $fields = $sub['data']; 
     $content .= '<tr>'; 
     $content .= '<td>' . date($date_format, strtotime($sub['date_updated'])) . '</td>'; 
     foreach ($fields as $field) { 
      $field_id = $field['field_id']; 
      $user_value = $field['user_value']; 
      if (in_array($field_id, $columns)) { 
       $content .= '<td>' . $user_value . '</td>'; 
      } 
     } 
     $content .= '</tr>'; 
    } 
    $content .= '</tbody> 
+1

这里的foreach也不正确。 不应该在 – Askanison4

+0

之外是的,我改变了代码。 –

+0

+1,这是正确的答案 – Askanison4