kohana 3.3获取数组中的下一个值

时间:2013-03-15 13:07:23

标签: kohana kohana-3.3

我有一个使用kohana从数据库调用的数组3.3我已经将数据输入到视图中,我可以使用print_r($ variable)获取它。我想根据数组中的数据创建一个movenext,movefirst,moveprevious和movelast按钮。

我的模型看起来像这样

    public function get_customer_list(){    
$cust_list= DB::select('*')->from('customers')
                    ->order_by('id','ASC') 
                    ->execute()
                    ->as_array();
//print_r($cust_list);                  
return $cust_list;

我的控制器看起来像这样

 $id=@$_POST["id"];
    //echo $id;
$amend  = Model::factory('amendments')->get_customer_list(@$d);
$this->page_title = 'amending';
$this->content = View::factory('forms/amendment_next');
//$this->rightwidget =view::factory('rightwidget');
$this->amend = $amend;
$this->next = $id;

我的观点看起来像这样

foreach ($amend[0] as $key=>$value){
        echo '<p><span>'.$key.'</span><input id="'.$next.'" class="contact" type="text" name="'.$key.'"value="'.$value.'" /></p>';          
                    }
<a href="#" id="getnext">Next Record</a>
<a href="javascript:void(0);" id="previous">Previous Record</a><button >Next Record</button><button>Last Record</button>

我不介意使用链接或按钮

请帮助我堆叠,我的大脑被锁定了。

3 个答案:

答案 0 :(得分:0)

在你的视图中尝试这个,只需要一些javascript代码(我使用过jQuery)

--- next()示例---

$(document).ready(function (){
    var customers = <?php echo json_encode($amend) ?>;
    var count = 0;

    function nextItem(){
        if(count >= customers.length )return;
        console.log("customer:",customers[count]['id'],customers[count]['name']);
        count =++count;
    }
})

答案 1 :(得分:0)

您的控制器应如下所示:

$id=@$_POST["id"];
//echo $id;
$amend  = Model::factory('amendments')->get_customer_list(@$d);
$this->page_title = 'amending';
$inputArray = array('amend'=>$amend, 'id'=>$id);

$this->content = View::factory('forms/amendment_next',$inputArray);
//$this->rightwidget =view::factory('rightwidget');

您必须将要在视图中使用的变量作为关联数组直接传递给工厂,或者必须使它们全局可用于工厂。

您的观点应如下所示:

<? 
foreach ($amend[0] as $key=>$value){
        echo '<p><span>'.$key.'</span><input id="'.$next.'" class="contact" type="text" name="'.$key.'"value="'.$value.'" /></p>';          
}
?>
<a href="something.php?id=<? echo $id;?>" id="getnext">Next Record</a>
<a href="javascript:void(0);" id="previous">Previous Record</a><button >Next Record</button><button>Last Record</button>

$inputArray传递给工厂后,可兑换$amend将填充$inputArray['amend']$id将填充$inputArray['id']

答案 2 :(得分:0)

我用你的例子来预测自己的问题。现在它解决了这里的问题 控制器现在看起来像这样

   $id=@$_GET["id"];
$amend  = Model::factory('amendments')->get_customer_list(@$d);
$this->page_title = 'I&M CRB Online App amending';
$this->content = View::factory('forms/amendments');
//$this->rightwidget =view::factory('rightwidget');
$this->amend = $amend;
$this->next = $id;

视图看起来像这样

 <?php 
if (!$next){
$next = "0";}

$nextid = $next+"1";
$previd=$next-"1";
?>
<a href="<?php echo HTTP_PATH; ?>/amend/getnext/?id=<? echo "0"; ?>">First Record </a> |
<a href="<?php echo HTTP_PATH; ?>/amend/getnext/?id=<? echo $previd;?>">Previous Record</a> |
<a href="<?php echo HTTP_PATH; ?>/amend/getnext/?id=<? echo $nextid;?>">move next</a> |
<a href="<?php echo HTTP_PATH; ?>/amend/last">Last Record</a> 
<?php
        foreach (@$amend[@$next] as $key=>$value){
        echo "<p><span>".$key."</span><input class='contact' type='text' name='".$key."'value='".$value."' /></p>"; 
}   


?>

对于最后一条记录,我必须使用不同的模型函数

public function get_last_customer(){    
    $last_customer= DB::select()->from('customers')
                        ->order_by('id','DESC')
                        ->limit(1)
                        ->execute()
                        ->as_array();
    return $last_customer;  

感谢大家的支持和你给我的答案。