php循环和分组mysql

php循环和分组mysql,php,mysql,codeigniter,loops,group-by,Php,Mysql,Codeigniter,Loops,Group By,我目前正在为支付系统添加一个购买历史部分,该系统是在PHP(codeigniter框架)和mysql中构建的。“付款历史记录”部分的思想是,所有客户的购买都按日期分组,因此最终HTML看起来与此类似 我的问题是我可以从数据库中获取数据没有问题,但是我如何循环使用它,以便显示购买日期,然后显示与该日期相关的购买,等等 编辑-从数据库返回的数组的打印输出,以确定大小 Array ( [0] => Array ( [id] =>

我目前正在为支付系统添加一个购买历史部分,该系统是在PHP(codeigniter框架)和mysql中构建的。“付款历史记录”部分的思想是,所有客户的购买都按日期分组,因此最终HTML看起来与此类似

我的问题是我可以从数据库中获取数据没有问题,但是我如何循环使用它,以便显示购买日期,然后显示与该日期相关的购买,等等

编辑-从数据库返回的数组的打印输出,以确定大小

    Array
(
    [0] => Array
        (
            [id] => 
            [employer_id] => 1
            [cv_id] => 
            [transaction_id] => -1402310
            [date_created] => 20-07-10
            [date_updated] => 
            [code] => 849711492
            [status] => SHOW
            [is_complete] => TRUE
            [job_status] => 1
            [dob] => 
            [will_relocate] => Y
            [education_level] => HIGH_SCHOOL
            [job_looking_for] => 
            [keywords_education] => Halifax University
            [keywords_employment] => senior applications developer
            [self_description] => 
            [looking_for] => Lorem ipsum
            [sector_id_csv] => 10,23,14,6,3
            [key_skills_csv] => 
            [expected_salary_level] => LEVEL_6
            [expected_salary_low] => 0
            [expected_salary_high] => 0
            [best_salary_low] => 0
            [best_salary_high] => 0
            [last_job_salary_low] => 
            [last_job_salary_high] => 
            [last_job_title_1] => Designer
            [last_job_title_2] => 
            [last_job_employer_1] => BT
            [last_job_employer_2] => 
            [qual_highest_level] => 0
            [is_grad] => Y
            [is_contract] => N
            [is_temporary] => Y
            [is_permanent] => Y
            [is_full_time] => Y
            [is_part_time] => Y
            [logitude] => 
            [latitude] => 
            [city] => 
            [area] => 
            [sign_up_stages_completed] => 
            [sign_up_last_stage_completed] => 
            [sign_up_complete] => 
            [email_authenticated] => 
            [email] => 
            [email_contact] => 
            [phone_contact_number] => 
            [password] => 
            [firstname] => 
            [surname] => 
            [address_1] => 
            [address_2] => 
            [address_3] => 
            [postcode] => 
            [country] => 
        )

    [1] => Array
        (
            [id] => 
            [employer_id] => 1
            [cv_id] => 
            [transaction_id] => -1402310
            [date_created] => 20-07-10
            [date_updated] => 
            [code] => 849719383
            [status] => SHOW
            [is_complete] => TRUE
            [job_status] => 1
            [dob] => 
            [will_relocate] => Y
            [education_level] => HIGH_SCHOOL
            [job_looking_for] => 
            [keywords_education] => Crewe Art School
            [keywords_employment] => senior applications developer
            [self_description] => 
            [looking_for] => Lorem ipsum
            [sector_id_csv] => 13,24,7,17,5
            [key_skills_csv] => 
            [expected_salary_level] => LEVEL_6
            [expected_salary_low] => 0
            [expected_salary_high] => 0
            [best_salary_low] => 0
            [best_salary_high] => 0
            [last_job_salary_low] => 
            [last_job_salary_high] => 
            [last_job_title_1] => Developer
            [last_job_title_2] => 
            [last_job_employer_1] => Orange
            [last_job_employer_2] => 
            [qual_highest_level] => 0
            [is_grad] => Y
            [is_contract] => N
            [is_temporary] => Y
            [is_permanent] => Y
            [is_full_time] => Y
            [is_part_time] => N
            [logitude] => 
            [latitude] => 
            [city] => 
            [area] => 
            [sign_up_stages_completed] => 
            [sign_up_last_stage_completed] => 
            [sign_up_complete] => 
            [email_authenticated] => 
            [email] => 
            [email_contact] => 
            [phone_contact_number] => 
            [password] => 
            [firstname] => 
            [surname] => 
            [address_1] => 
            [address_2] => 
            [address_3] => 
            [postcode] => 
            [country] => 
        )

    [2] => Array
        (
            [id] => 
            [employer_id] => 1
            [cv_id] => 
            [transaction_id] => 23-9-1402338
            [date_created] => 17-07-10
            [date_updated] => 
            [code] => 849711492
            [status] => SHOW
            [is_complete] => TRUE
            [job_status] => 1
            [dob] => 
            [will_relocate] => Y
            [education_level] => HIGH_SCHOOL
            [job_looking_for] => 
            [keywords_education] => Halifax University
            [keywords_employment] => senior applications developer
            [self_description] => 
            [looking_for] => Lorem ipsum
            [sector_id_csv] => 10,23,14,6,3
            [key_skills_csv] => 
            [expected_salary_level] => LEVEL_6
            [expected_salary_low] => 0
            [expected_salary_high] => 0
            [best_salary_low] => 0
            [best_salary_high] => 0
            [last_job_salary_low] => 
            [last_job_salary_high] => 
            [last_job_title_1] => Designer
            [last_job_title_2] => 
            [last_job_employer_1] => BT
            [last_job_employer_2] => 
            [qual_highest_level] => 0
            [is_grad] => Y
            [is_contract] => N
            [is_temporary] => Y
            [is_permanent] => Y
            [is_full_time] => Y
            [is_part_time] => Y
            [logitude] => 
            [latitude] => 
            [city] => 
            [area] => 
            [sign_up_stages_completed] => 
            [sign_up_last_stage_completed] => 
            [sign_up_complete] => 
            [email_authenticated] => 
            [email] => 
            [email_contact] => 
            [phone_contact_number] => 
            [password] => 
            [firstname] => 
            [surname] => 
            [address_1] => 
            [address_2] => 
            [address_3] => 
            [postcode] => 
            [country] => 
        )

    [3] => Array
        (
            [id] => 
            [employer_id] => 1
            [cv_id] => 
            [transaction_id] => 23-9-1402338
            [date_created] => 17-07-10
            [date_updated] => 
            [code] => 849719383
            [status] => SHOW
            [is_complete] => TRUE
            [job_status] => 1
            [dob] => 
            [will_relocate] => Y
            [education_level] => HIGH_SCHOOL
            [job_looking_for] => 
            [keywords_education] => Crewe Art School
            [keywords_employment] => senior applications developer
            [self_description] => 
            [looking_for] => Lorem ipsum
            [sector_id_csv] => 13,24,7,17,5
            [key_skills_csv] => 
            [expected_salary_level] => LEVEL_6
            [expected_salary_low] => 0
            [expected_salary_high] => 0
            [best_salary_low] => 0
            [best_salary_high] => 0
            [last_job_salary_low] => 
            [last_job_salary_high] => 
            [last_job_title_1] => Developer
            [last_job_title_2] => 
            [last_job_employer_1] => Orange
            [last_job_employer_2] => 
            [qual_highest_level] => 0
            [is_grad] => Y
            [is_contract] => N
            [is_temporary] => Y
            [is_permanent] => Y
            [is_full_time] => Y
            [is_part_time] => N
            [logitude] => 
            [latitude] => 
            [city] => 
            [area] => 
            [sign_up_stages_completed] => 
            [sign_up_last_stage_completed] => 
            [sign_up_complete] => 
            [email_authenticated] => 
            [email] => 
            [email_contact] => 
            [phone_contact_number] => 
            [password] => 
            [firstname] => 
            [surname] => 
            [address_1] => 
            [address_2] => 
            [address_3] => 
            [postcode] => 
            [country] => 
        )

)
基本上每次有一个新数据时,我都需要列出它下面数组的内容,如果两个数组有相同的数据,就在一个数据下面列出它们,比如

30-07-10

结果1
2
三,

28-7-10

4

5使用CodeIgniter,循环查询结果的一种方法如下:

//if your doing your queries in a controller
$data['query']=$this->db->query('SELECT * FROM purchases WHERE clientID=5');

//or if using models
$data['query']=$this->pmnt_model->getPmnts();

//view
foreach($query result() as $row){
    echo $row->date;
}
$query
变量是从mysql查询返回的结果数组。可以通过
->
操作符访问对象

有关更多信息,请参阅

你也可能想退房


HTH

我可以看到两种可能性来实现您的需求。这里有一个;向视图发送两个数组,一个仅包含日期,另一个包含购买信息:

在控制器中

$page_data['purchase_dates'] = $this->yourmodel->get_purchase_dates($record_id);
$page_data['purchases'] = $this->yourmodel->get_purchases($record_id);
注意确保在数据库查询中使用GROUP BY查询购买日期

视图中的

<!-- Start Outer Tree Loop -->
<?php if($purchase_dates != FALSE){?>
<?php foreach($purchase_dates as $id=>$outer_value) { ?>
<!-- Output the date here -->
  <!-- Start Purchase table -->
  <table>
  <tr>
  <th>Param One</th>
  <th>Param Two</th>
  <th>Etcetera</th>
  <th></th>
  </tr>

  <!-- Start inner loop -->
  <?php foreach($purchases as $id=>$inner_value) { ?>
   <?php if($inner_value['purchase_date'] == $outer_value['purchase_date']) { ?>
    <tr>
    <td><?php echo $inner_value['Param One'] ?> </td>
    <td><?php echo $inner_value['Param Two'] ?></td>
    <td><?php echo $inner_value['Etcetera'] ?> </td>
   </tr>
   <?php  } ?>
  <?php  } ?>
  <!-- End inner loop -->

  </table>
  <!-- End Purchase table -->

<?php } ?>
<?php }?>
<!-- End Outer Tree Loop -->

Param One
参数二
等等
我添加了注释来说明代码(这可能是您的最佳选择,因为您发布的数组是二维的)

第二个:是向视图发送一个三维数组,并以与上面非常相似的方式在其中循环

<?php if($purchases != FALSE){?>
<?php foreach($purchases as $id=>$purchase_day) { ?>

<?php foreach($purchase_day as $purchase) { ?>

<!-- Output here -->

<?php } ?>

<?php } ?>
<?php }?>


希望这有帮助。

请显示现有代码和数据库模式。