yii-Modell Suche mit daterange für Zeitstempel
kann jeder posten, wie filter, ein grid-Ansicht timestamp ("Y-m-d h:m:s) - Spalte mit date-picker.
mein Modell ist unter
public function search()
{
$criteria=new CDbCriteria();
$criteria->condition="time_up BETWEEN UNIX_TIMESTAMP('$this->time_up_from') AND UNIX_TIMESTAMP('$this->time_up_to')";
$criteria->compare('proc_id',$this->proc_id);
$criteria->compare('book_id',$this->book_id);
$criteria->compare('Project_name', $this->Project_name);
$criteria->compare('isbn_no', $this->isbn_no);
$criteria->compare('book_title',$this->book_title);
$criteria->compare('totalpage',$this->totalpage,true);
$criteria->compare('totaltime',$this->totaltime,true);
return new CActiveDataProvider($this, array(
'criteria'=>$criteria,
'pagination'=>array(
'pageSize'=>100
),
));
}
für den normalen bestimmten Bedingung seine Arbeit unter der Bedingung
$criteria->condition = " time_up LIKE '$this->time_up%'";
für den Zeitraum seine nicht funktioniert ich habe versucht, auch
wiki/142/in yii-website aber keine Verwendung.
bitte helfen in diesem.oder geben Sie einige andere Methoden, um darange Suche nach timestamp.
Meine Eingaben aus dem Formular für die erweiterte Suche
<div class=" wide form">
<?php $form=$this->beginWidget('CActiveForm', array(
'action'=>Yii::app()->createUrl($this->route),
'method'=>'get',
)); ?>
<div class="row">
<?php echo "Time UP from"; ?>
<?php $this->widget('zii.widgets.jui.CJuiDatePicker',
array(
'model'=>$model,
'name'=>'Process[time_up_from]',
//Model attribute filed which hold user input
'options'=>array(
'showAnim'=>'fold',
'dateFormat'=>'yy-mm-dd',),
'htmlOptions'=>array(
'style'=>'height:20px;width:100px',
'size'=>15,
//'value'=>date('Y-m-d'),
/*'onchange'=>"$.fn.yiiGridView.update('books-grid', {data: $(this).serialize()});" */),));?>
</div>
<?php echo "Time Up to"; ?>
<?php $this->widget('zii.widgets.jui.CJuiDatePicker',
array(
'model'=>$model,
'name'=>'Process[time_up_to]',
//Model attribute filed which hold user input
'options'=>array(
'showAnim'=>'fold',
'dateFormat'=>'yy-mm-dd',),
'htmlOptions'=>array(
'style'=>'height:20px;width:100px',
'size'=>15,
//'value'=>date('Y-m-d'),
/*'onchange'=>"$.fn.yiiGridView.update('books-grid', {data: $(this).serialize()});"*/ ),));?>
</div>
<?php echo CHtml::submitButton('Search'); ?>
ANTWORT FÜR DAS PROBLEM
Hallo, ich fand die Antwort es ist nur eine if-Bedingung vor Kriterien Zustand
`if(strlen($this->time_up_from) && strlen($this->time_up_to))
{
$criteria->condition="time_up BETWEEN UNIX_TIMESTAMP('$this->time_up_from') AND UNIX_TIMESTAMP('$this->time_up_to')";
}
nun seine Arbeitsmethoden in Ordnung.
@bool.dev ich danke Ihnen sehr für Ihre Anregungen.vielen Dank.
- Ihr Zustand sieht gut aus..Sag mir, wie Sie sind Kommissionierung bis das Datum/Zeit von dem user? setzen Sie den code für, die, coz ich glaube, es gibt einige Fehler in diesem Teil.
- finden Sie jetzt für input-details
- das $Modell ist der 'Prozess' - Modell, richtig? Der code sieht gut aus, zu sehen, ob die Werte korrekt empfangen, var_dump die Attribute oder so etwas. Auf einer seitlichen Anmerkung, es ist am besten nicht zu fest das name-Attribut, verwenden Sie so etwas wie 'Attribut'=>'time_up_from' anstelle von 'name'=>' - Prozess[time_up_from]'. Also schauen, und mir sagen, ob die Werte korrekt erhalten durch das Modell.
- ich benutzt firebug, um zu sehen, die den Wert der erste Wert richtig, die ich eingeben aber der grid-Ansicht nicht filtern .auch wenn es doesnot zeigen "kein Ergebnis gefunden".
- wenn u geben können einige andere Codes als Ihr Wunsch für dieses problem.
- ok..lassen Sie mich sehen was ich tun kann
- lassen Sie uns weiter, diese Diskussion im chat
- oh, ich habe auch nur gepostet, eine Antwort, es ist die gleiche Sache, aber anstelle der Verwendung von strlen ich verwendet leer, hatte nicht gesehen, dass Ihre geänderte Frage war wie ich die Eingabe der Antwort und die Frage war nicht bearbeitet noch nicht.
- Sie sind herzlich willkommen
Du musst angemeldet sein, um einen Kommentar abzugeben.
Versuchen Sie dies:
Vermute, dass
time_up_to
undtime_up_from
sind virtuelle Attribute, die Sie deklariert haben in Ihrem Modell, aufpassen, dass Sie erklärt haben, Sie richtig, und fügte auch die sichere Prüfung für Sie, wie diese:Auch in der Suchmaske ändern der Datum-Picker, wie ich bereits erwähnt in den Kommentaren:
Edit :
Als Dcoder darauf hingewiesen, in den Kommentaren unten, wir sollten immer bind-params, um zu verhindern, dass sql-injection, und möglicherweise erhalten Sie verbesserte performance, daher der Zustand geändert werden könnte:
Aus dem Reiseführer
$this->time_up_from
und$this->time_up_to
sollte festgelegt werden, durch$criteria->params
.habe ich ein Feld mit der Nummer und ich verwenden .. einen Bereich festlegen in dem Eingabefeld.
In dem Modell, ich Tue gerade:
einfach und in meinem optinion ziemlich logisch für den Benutzer. Er würde in 0..100 zu wählen Bereich 0 bis 100. Keine zusätzliche Feld ist erforderlich.