为codeigniter表中的每一行设置href链接

时间:2016-04-07 20:54:01

标签: php mysql codeigniter

我们认为我们有一个db和一个模型函数来检索这样的查询结果:

public function lista_ordini ($idcliente)
{
     $this->db->select('ordini.num_fattura, misure.cosplay, ordini.data_richiesta,
                   ordini.anticipo, ordini.data_consegna, 
                   ordini.saldo_totale, ordini.stato');

      $this->db->join('misure', "ordini.id_cliente = $idcliente");

      $query = $this->db->get('ordini'); 

      if ($query && $query->num_rows() > 0){
             return $query;
        }else{
             echo "errore generazione query ordini";
           }
       }
}//This is missing in your original, I'm not sure if it's a typo

使用codeigniter的表助手生成表格:

  <?php echo $this->table->generate($query); ?>

我可以生成表格...这没关系并且有效...... 但是,如果我希望每个行都有一个特定的字段(或者如果它更简单的整行)和href链接怎么办? (这个链接将通过GET方法传递一个变量来生成另一个查询,但我还没弄清楚它是如何工作的,这只是一个爱好项目) 我试试这个:

public function lista_ordini ($idcliente) 
{ 
    $this->db->select('ordini.num_fattura, misure.cosplay, ordini.data_richiesta, 
                       ordini.anticipo, ordini.data_consegna, ordini.saldo_totale, 
                        ordini.stato');   
    $this->db->join('misure', "ordini.id_cliente = $idcliente");  

    $query = $this->db->get('ordini');    

    if ($query && $query->num_rows() > 0) {
        $rows = $query->row();

        foreach ($rows as &$row) {
            $row['num_fattura'] = '<a href="segment_3">'.$row['num_fattura'].'</a>';
        }
        return $rows;   
     }else{ 
         echo "errore generazione query ordini"; 
     } 
}

我非常确定foreach循环就是这样,但我无法理解如何,因为我有太多错误,我无法理解。简单地说,我的代码不起作用,我认为我需要一些语义建议。 谢谢你的推荐

2 个答案:

答案 0 :(得分:1)

我知道你要做什么,但我不明白你是怎么做的。以下是我将如何做到这一点:

//controller method
public function show_data()
{
     $this->load->library('table');
     $data['table_data'] = $this->some_model->get_the_data();

     $this->load->view('some_view_that_will_contain_my_table', $data);
 }

现在在我看来,我会生成表格:

<!doctype html>
 ...
 <?if(!empty($table_data)):?>

     <? $this->table->set_heading('column_1', 'column_2');?>
     <?foreach($able_data as $table_row):
         $this->table->add_row(
             array('data'=>'<a href="/">'.$table_row['column_1'].'</a>.'),
             array('data'=>'<a href="/">'.$table_row['column_2'].'</a>.'),
         );
      endforeach;?>

     <?= $this->table->generate();?>
 <?endif;?> //or display an empty table 

答案 1 :(得分:1)

这里的foreach循环存在一个逻辑问题:

foreach ($rows as &$row) {
  $row['num_fattura'] = '<a href="segment_3">'.$row['num_fattura'].'</a>';
}
return $rows; 

每次循环运行时,您都会更改$ row的值,但是当它完成时,您将返回$ rows,这是不变的。

相反,您可以使用$k => $v编辑原始数组,以访问foreach循环中的键和值:

foreach ($rows as $k => $v) {
  $rows[$k]['num_fattura'] = '<a href="segment_3">'.$rows[$k]['num_fattura'].'</a>';
}
return $rows;
相关问题