Как отобразить записи на странице редактирования? - PullRequest
0 голосов
/ 28 июня 2019

Я новичок в MySQL и использую CodeIgniter. У меня есть три таблицы с именами lead, document и bank.

Теперь я делаю следующее: в таблицу lead я добавляю уникальную личную информацию клиента. В таблицу document я вставляю пользовательские документы. В таблицу bank я вставляю банковские записи. Это может быть несколько.

Нет проблем со вставкой. У меня проблема при получении данных из базы данных.

Теперь структура таблицы

свинец

id  | name   | mobile     | email  
1   | asdff  |1234567831  |asd@gmail.com
2   | kjhgg  |1231231231  |mnhg@gmail.com
3   | qwsde  |1231233212  |oiuk@gmail.com
<!--many more-->

документ

doc_id  |doc_name    | doc_date  | lead_id |date_of_added
1       |asdasd      |2019-06-24 | 1       |2019-06-16 17:31:07
2       |oiuytr      |2019-06-24 | 2       |2019-06-16 17:31:07
3       |okjhyt      |2019-06-25 | 3       |2019-06-20 20:12:09
<!--many more--> 

банк

bank_id  | bankname  | lead_id |date_of_added
1        | sdasdas   | 1       |2019-06-20 11:41:34
2        | asdasdasd | 1       |2019-06-21 10:41:34
3        | asdakjkh  | 2       |2019-06-21 14:23:12
4        | qwerfgvf  | 1       |2019-06-21 23:56:25
<!--many more--> 

Между документом и банком до сих пор нет связи. я должен подключиться, используя идентификатор?

Модель

public function getconfirmLeadinfo($id){
   return  $result = $this->db->select('*')
                     ->from('lead')
                     ->join('document','lead.id=document.lead_id','LEFT')
                     ->join('bank','lead.id=bank.lead_id','LEFT')
                     ->where('lead.id',$id)
                     ->get()
                     ->result();
  }

Я получаю вывод

Array
(
    [0] => stdClass Object
        (
            [id] => 1
            [name] => asdff
            [mobile] => 1234567831
            [email] => asd@gmail.com
            [doc_id] => 1
            [doc_name] => asdasd
            [doc_date] => 2019-06-24
            [lead_id] => 1
            [date_of_added] => 2019-06-16 17:31:07
            [bank_id] => 1
            [bankname] => sdasdas
            [lead_id] => 1
            [date_of_added] => 2019-06-20 11:41:34

         )
[1] => stdClass Object
        (
            [id] => 1
            [name] => asdff
            [mobile] => 1234567831
            [email] => asd@gmail.com
            [doc_id] => 1
            [doc_name] => asdasd
            [doc_date] => 2019-06-24
            [lead_id] => 1
            [date_of_added] => 2019-06-16 17:31:07
            [bank_id] => 2
            [bankname] => asdasdasd
            [lead_id] => 1
            [date_of_added] => 2019-06-21 10:41:34

         )
[2] => stdClass Object
        (
            [id] => 1
            [name] => asdff
            [mobile] => 1234567831
            [email] => asd@gmail.com
            [doc_id] => 1
            [doc_name] => asdasd
            [doc_date] => 2019-06-24
            [lead_id] => 1
            [date_of_added] => 2019-06-16 17:31:07
            [bank_id] => 4
            [bankname] => qwerfgvf
            [lead_id] => 1
            [date_of_added] => 2019-06-21 23:56:25

         )
)

Теперь я на странице редактирования, и мне нужно отобразить данные.

if ($post){?>
<input type="text" name="name" value="<?php echo $post->name;?>">
<input type="text" name="mobile" value="<?php echo $post->mobile;?>">
<input type="text" name="email" value="<?php echo $post->email;?>">

<input type="text" name="doc_name" value="<?php echo $post->doc_name;?>">
<input type="text" name="doc_date" value="<?php echo $post->doc_date;?>">
 how do I display my bank details here? should I use something like this
    <?php
 foreach ($result as $key => $value) {
<input type="text" name="bank[]" value="$value->bankname">
}
}?>

Не могли бы вы мне помочь?

Ответы [ 3 ]

0 голосов
/ 28 июня 2019

Используйте два отдельных запроса, как показано ниже:

$data = [];
$lead = $this->db->select('*')->from('lead')->get()->row();
$data['lead'] = $lead;
if($lead){
  $bank = $this->db->select('*')->where('lead_id', $lead->lead_id)->from('bank')->get()->result();
$data['bank '] = $bank ;
}


// you can retrive documet like bank details


return $data

Затем вы можете передать $data для просмотра и использования переменных lead и bank, если они существуют.

0 голосов
/ 28 июня 2019

// контроллер: эти массивы вы можете использовать в своем представлении

function leadInfo($id){
$data=array();
$data['lead_detail']=$this->model_name->get_lead_detail_by_id($id);
$data['bank_details']=$this->model_name->get_bank_detail_by_lead_id($id);
$this->load-view('view_page_name',$data);
}

// модель

function get_lead_detail_by_id($id){
$this->db->join('document','document.lead_id=lead.id');
return $this->db->where('lead.id',$id)->get('leads')->row_array();
}

function get_bank_detail_by_lead_id($id){
return $this->db->where('lead_id',$id)->get('bank')->row_array();
}
0 голосов
/ 28 июня 2019
  1. Вы должны взять отдельную запись из таблицы, я вижу, что результат дублирован, все детали одинаковы, поэтому вы не можете использовать INNER JOIN вместо left.
  2. Вы получите одну записьиспользуя -> row () вместо -> result ();
  3. Тогда вы можете использовать то же, что и вы, на странице редактирования

использовать foreach

<?php
 foreach ($result as $key => $value) {
    if ($value){?>
        <input type="hidden" name="id[]" value="<?php echo $value->id;?>">
        <input type="text" name="name[]" value="<?php echo $value->name;?>">
        <input type="text" name="mobile[]" value="<?php echo $value->mobile;?>">
        <input type="text" name="email[]" value="<?php echo $value->email;?>">
        <input type="text" name="doc_name[]" value="<?php echo $value->doc_name;?>">
        <input type="text" name="doc_date[]" value="<?php echo $value->doc_date;?>">
<?php  }
}
?>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...