我有一个SQL查询,我想使用DatePicker传递日期。我做了参数绑定,如果我直接给绑定变量赋值,它就可以工作。单击提交按钮后,我不知道如何准确传递值。 在我看来,我使用TbActiveForm和datepicker小部件。所以我的视图文件link.php看起来像:
<?php
$form = $this->beginWidget(
'bootstrap.widgets.TbActiveForm',array(
'id' => 'inlineForm',
'type' => 'inline',
'htmlOptions' => array('class' => 'well'),
));
?>
Start Date
<?php $this->widget('bootstrap.widgets.TbDatePicker',array(
'name' => 'from_date',
'options' => array('format' => 'yyyy-mm-dd')
));
?>
End Date
<?php $this->widget('bootstrap.widgets.TbDatePicker',array(
'name' => 'to_date',
'options' => array('format' => 'yyyy-mm-dd')
));
?>
<!-- Submit Button -->
<?php $this->widget('bootstrap.widgets.TbButton',array(
'buttonType' => 'Submit',
'label' => 'Submit',
'type' => 'primary',
'url' => 'Link'
));
$this->endWidget();
在控制器中我有:from_date和:to_date分别绑定到变量$ from和$ to。如果我为变量提供值,则查询工作正常,因此绑定没有问题。控制器代码如下所示:
public function actionLink()
{
// $from = $_GET['from_date'];
// $to = $_POST['to_date'];
$from=!empty($_POST['from_date'])?$_POST['from_date']:'2014-01-01';
$to=!empty($_POST['to_date'])?$_POST['to_date']:'2014-02-01';
$sql = "SELECT [Ordernumber]
,[Order_Date]
FROM [Orders]
WHERE CAST(Order_Date As Date) BETWEEN :from_date AND :to_date
ORDER BY Order_Date ";
$sql2 = "SELECT COUNT(*)
FROM [Orders]
WHERE CAST(Order_Date As Date) BETWEEN :from_date AND :to_date";
$connection=Yii::app()->db;
$command=$connection->createCommand($sql2);
// $command = $connection->createCommand('SELECT COUNT(*) FROM (' . $sql . ') as count_alias');
$command->bindParam(':from_date',$from,PDO::PARAM_STR);
$command->bindParam(':to_date',$to,PDO::PARAM_STR);
$dataProvider = new CSqlDataProvider($sql, array('keyField' => 'Order_Date',
'params' => array(
':from_date' => $from,
':to_date' => $to),
'totalItemCount' => $command->queryScalar(),
'pagination' => array(
'pageSize' => 20)));
// renders the view file 'protected/views/site/index.php'
// using the default layout 'protected/views/layouts/main.php'
$this->render('link', array('dataProvider' => $dataProvider));
}
所以,如果我只是使用:
$from = $_POST['from_date'];
$to = $_POST['to_date'];
我收到错误:未定义索引from_date。
我想知道我必须为Submit按钮编写什么代码,以便将DatePicker中的值传递回控制器。以及控制器如何读取值。
现在,如果我点击提交按钮,它会重新加载页面,但是按
的else值 $from=!empty($_POST['from_date'])?$_POST['from_date']:'2014-01-01';
$to=!empty($_POST['to_date'])?$_POST['to_date']:'2014-02-01';
答案 0 :(得分:0)
未定义索引from_date。
因为你试图从get而不是post
中检索它 $from = $_GET['from_date'];
$to = $_POST['to_date'];
应该是
$from = $_POST['from_date'];
$to = $_POST['to_date'];
答案 1 :(得分:0)
这是语法错误。我写道:
'buttonType' => 'Submit',
而不是:
'buttonType' => 'submit',
感谢所有帮助人员。