誰かが私を助けてくれるなら、いくつかの指針が必要な問題があります。
私は CodeIgniter を使用しており、タイムシート リストの各行のクライアント名、ジョブ名、およびタスクを表示する必要があります。毎日の時間はリストで編集可能ですが、上記の 3 つのフィールドは静的です。現在、timesheetEntries テーブルに格納されているクライアント、ジョブ、およびタスクの ID を表示していますが、タイムシート エントリの各行に個別のテーブルから正しい名前を表示する必要があります。
現在の状態では、正しい結果を返し、他のテーブルへのリンクとは別にうまく機能します。
私は解決策を見つけることができず、コードの盲目に苦しんでいるので、これについては気が狂っています。
どうもありがとう
モデル
function getAllEntriesByTimesheet($id){
$data = array();
$options = array('timesheet_id' => $id);
$Q = $this->db->get_where('timesheetEntries', $options);
if ($Q->num_rows() > 0){
foreach ($Q->result_array() as $row){
$data[] = $row;
}
}
$Q->free_result();
return $data;
}
コントローラ
function id($id){
$data['title'] = 'Timesheets';
$data['entry'] = $this->timesheet_model->getAllEntriesByTimesheet($id);
$data['sheet'] = $this->uri->segment(3);
$data['header'] = 'default/header';
$data['main'] = 'timesheet_view';
$data['footer'] = 'default/footer';
$data['timesheettab'] = 'current';
$data['expensestab'] = '';
$data['holidaytab'] = '';
$data['admintab'] = '';
$this->load->vars($data);
$this->load->view('default/default_view');
}
意見
$datestring = '%Y-%m-%d';
if (count($entry)){
foreach ($entry as $key => $list){
$dateNow = mdate($datestring);
$entryId = $list['entry_id'];
$sheet = $list['timesheet_id'];
$clientId = $list['client_id'];
$jobId = $list['job_id'];
$taskId = $list['task_id'];
$fridayHrs = $list['friday_hrs'];
$saturdayHrs = $list['saturday_hrs'];
$sundayHrs = $list['sunday_hrs'];
$mondayHrs = $list['monday_hrs'];
$tuesdayHrs = $list['tuesday_hrs'];
$wednesdayHrs = $list['wednesday_hrs'];
$thursdayHrs = $list['thursday_hrs'];
echo '<tr>'
.form_open('/timesheet/update_entry')
.form_hidden('entry_id', $entryId)
.form_hidden('timesheet_id', $sheet)
.form_hidden('date_modified', $dateNow).
'<td>'.$clientId.'</td>
<td>'.$jobId.'</td>
<td>'.$taskId.'</td>
<td class="studio">'.form_input('monday_hrs', $mondayHrs).'</td>
<td class="studio">'.form_input('tuesday_hrs', $tuesdayHrs).'</td>
<td class="studio">'.form_input('wednesday_hrs', $wednesdayHrs).'</td>
<td class="studio">'.form_input('thursday_hrs', $thursdayHrs).'</td>
<td class="studio">'.form_input('friday_hrs', $fridayHrs).'</td>
<td class="studio">'.form_input('saturday_hrs', $saturdayHrs).'</td>
<td class="studio">'.form_input('sunday_hrs', $sundayHrs).'</td>
<td class="icon">'.form_submit('', 'Update','class="update"').'</td>
<td class="icon"><a href="/timesheet/edit_entry/'.$sheet.'/'.$entryId.'"><img src="/images/sitewide/edit.png" alt="Edit Entry" width="24" height="24" /></a></td>
<td class="icon"><a href="/timesheet/delete_entry/'.$sheet.'/'.$entryId.'"><img src="/images/sitewide/delete.png" alt="Delete Entry" width="24" height="24" /></a></td>'
.form_close()
.'</form></tr>';
}
}
これらは、関連するテーブルのデータベース テーブル スキーマです。
タスク
+------------------+-------------------+--------+------+----------+--------+
| Field | Type | Null | Key | Default | Extra |
+------------------+-------------------+--------+------+----------+--------+
| task_id | int(4) unsigned | NO | PRI | NULL | AI |
| task_name | varchar(100) | NO | | NULL | |
| task_type | int(2) | NO | | 2 | |
| task_code | varchar(10) | NO | | NULL | |
+------------------+-------------------+--------+------+----------+--------+
クライアント
+------------------+-------------------+--------+------+----------+--------+
| Field | Type | Null | Key | Default | Extra |
+------------------+-------------------+--------+------+----------+--------+
| client_id | int(4) unsigned | NO | PRI | NULL | AI |
| client_name | varchar(100) | NO | | NULL | |
+------------------+-------------------+--------+------+----------+--------+
仕事
+------------------+-------------------+--------+------+----------+--------+
| Field | Type | Null | Key | Default | Extra |
+------------------+-------------------+--------+------+----------+--------+
| job_id | int(6) unsigned | NO | PRI | NULL | AI |
| job_number | varchar(6) | NO | | NULL | |
| client_id | int(4) | NO | | NULL | |
| job_name | varchar(100) | NO | | NULL | |
| create_date | date | NO | | NULL | |
| start_date | date | NO | | NULL | |
| account_handler | varchar(4) | NO | | NULL | |
| studio_resource | varchar(4) | NO | | NULL | |
| action | varchar(50) | NO | | NULL | |
| by_whom | varchar(10) | NO | | NULL | |
| deadline | date | NO | | NULL | |
| job_status | varchar(50) | NO | | NULL | |
+------------------+-------------------+--------+------+----------+--------+
タイムシートエントリ
+------------------+-------------------+--------+------+----------+--------+
| Field | Type | Null | Key | Default | Extra |
+------------------+-------------------+--------+------+----------+--------+
| entry_id | int(10) unsigned | NO | PRI | NULL | AI |
| user_id | int(10) | NO | | NULL | |
| timesheet_id | int(5) | NO | | NULL | |
| client_id | int(4) | NO | | NULL | |
| job_id | int(4) | NO | | NULL | |
| task_id | int(2) | NO | | NULL | |
| monday_hrs | decimal(4,2) | NO | | 0.00 | |
| tuesday_hrs | decimal(4,2) | NO | | 0.00 | |
| wednesday_hrs | decimal(4,2) | NO | | 0.00 | |
| thursday_hrs | decimal(4,2) | NO | | 0.00 | |
| friday_hrs | decimal(4,2) | NO | | 0.00 | |
| saturday_hrs | decimal(4,2) | NO | | 0.00 | |
| sunday_hrs | decimal(4,2) | NO | | 0.00 | |
| total_hrs | decimal(4,2) | NO | | 0.00 | |
| date_entered | date | NO | | 0.00 | |
| date_modified | date | NO | | 0.00 | |
+------------------+-------------------+--------+------+----------+--------+
解決
András Rátz提供
モデル
function getAllEntriesByTimesheet($id){
$data = array();
$this->db->select('*');
$this->db->join('tasks', 'tasks.task_id = timesheetEntries.task_id', 'left');
$this->db->where('timesheetEntries.timesheet_id',$id);
$Q = $this->db->get('timesheetEntries');
if ($Q->num_rows() > 0){
foreach ($Q->result_array() as $row){
$data[] = $row;
}
}
$Q->free_result();
return $data;
}
ビューには変数が必要です
$taskId = $list['task_id'];
に変更
$taskId = $list['task_name'];
ソートされたおかげ:)