Closed. This question needs details or clarity. It is not currently accepting answers.
Want to improve this question? Add details and clarify the problem by editing this post.
Closed 2 years ago.
Improve this question
I have code to filter by dates, I have 2 condition,
First condition: get 'tanggal' from date picker on view
Second condition: variable 'tanggal' isNull
However, the code only runs the second condition, even though the condition variable date is given
This is the code:
View:
.... some code ....
<form method="POST">
<div class="form-group">
<label>Date</label>
<div class="input-group date">
<div class="input-group-addon">
<span class="glyphicon glyphicon-th"></span>
</div>
<form method="get">
<input type="date" name="tanggal">
<input type="submit" value="FILTER">
</form>
.... some code ....
<tbody>
<?php
foreach ((array)$getDepartDetail as $us) { ?>
<tr>
<td><?php echo $us->Name ?></td>
<td><?php echo $us->NIK ?></td>
<td><?php echo $us->gender ?></td>
<td><?php echo $us->PositionDesc ?></td>
<td><?php echo $us->Shift ?></td>
<td><?php echo $us->tgl ?></td>
<td><?php echo $us->Attendance ?></td>
<td><a class="btn btn-info" href="<?php echo site_url('data_detail/detail_datas/vieworc/' . $us->NIK); ?>">Detail</a></td>
</tr>
<?php } ?>
</tbody>
.... some code ....
Model:
.... some code ....
public function get_allDprtDetail($DepartmentID)
{
if(isset($_GET['tanggal'])){
$tgl = $_GET['tanggal'];
$datas = "
SELECT DISTINCT
.... some code ....
FROM
emp0001
INNER JOIN emp0003 ON emp0003.DepartmentID = emp0001.DepartmentID
LEFT JOIN v_dvc0004_test ON emp0003.NIK = v_dvc0004_test.NIK
AND DATE(v_dvc0004_test.Enroll) = '$tgl'
JOIN emp0002 ON emp0002.PositionID = emp0003.PositionID
LEFT JOIN shift ON emp0003.Shift_ID = shift.Shift_ID
WHERE
emp0001.DepartmentID = '$DepartmentID'
AND emp0003.IsActive = 'T'
ORDER BY
v_dvc0004_test.Enroll ASC
";}
else{
$datas = "
SELECT DISTINCT
.... some code ....
}
$query = $this->db->query($datas);
return $query->result()
;}
Firstly you should add a check for the results count ...
<tbody>
<?php if(count($getDepartDetail)> 0){ ?>
<?php foreach ($getDepartDetail as $us) { ?>
<tr>
<td><?php echo $us->Name ?></td>
<td><?php echo $us->NIK ?></td>
<td><?php echo $us->gender ?></td>
<td><?php echo $us->PositionDesc ?></td>
<td><?php echo $us->Shift ?></td>
<td><?php echo $us->tgl ?></td>
<td><?php echo $us->Attendance ?></td>
<td><a class="btn btn-info" href="<?php echo site_url('data_detail/detail_datas/vieworc/' . $us->NIK); ?>">Detail</a></td>
</tr>
<?php } ?>
<?php } ?>
</tbody>
Function get_allDprtDetail can return null if $_GET['tanggal'] doesn't set set. You may try to return empty array, like that
public function get_allDprtDetail($DepartmentID)
{
if(isset($_GET['tanggal'])){
some code
}
return [];
}
I have written a code which uses the API of fantasypremierleague.com to extract data. The data is being extracted for 38 gameweeks using a for loop. I print the data using echo to verify that it is correct.
I am having a problem converting the data into CSV files using a script since its in a loop.
After printing information each gameweek i have added a button (in total 38 buttons) which should convert the information of each gameweek to a CSV file.
Currently, all the buttons are printing the information of gameweek 1 even though the script is part of the loop.
ini_set('max_execution_time', 300);
for ($i=1; $i <39 ; $i++) {
$json=file_get_contents("https://fantasy.premierleague.com/drf/entry/1224012/event/".$i."/picks");
$data = json_decode($json, true);
$json1=file_get_contents("https://fantasy.premierleague.com/drf/elements/");
$data1 = json_decode($json1, true);
?>
<table id ="gameweek_history">
<tr>
<th>Average Gameweek Score</th>
<th>Highest Score</th>
<th>Highest Scorer ID</th>
</tr>
</br>
</br>
<td><?PHP echo $data['event']['average_entry_score']; ?></td>
<td><?PHP echo $data['event']['highest_score']; ?></td>
<td><?PHP echo $data['event']['highest_scoring_entry']; ?></td>
</table>
<table id ="gameweek_info">
<tr>
<th>Gameweek</th>
<th>Active Chip</th>
<th>ID</th>
<th>Points</th>
<th>Total Points</th>
<th>Rank</th>
<th>Overall Rank</th>
<th>Gameweek Transfers</th>
<th>Gameweek Transfer Cost</th>
<th>Points on Bench</th>
<th>Bank</th>
</tr>
</br>
</br>
<td><?PHP echo $data['entry_history']['event']; ?></td>
<td><?PHP echo $data['active_chip']; ?></td>
<td><?PHP echo $data['entry_history']['id']; ?></td>
<td><?PHP echo $data['entry_history']['points']; ?></td>
<td><?PHP echo $data['entry_history']['total_points']; ?></td>
<td><?PHP echo $data['entry_history']['rank']; ?></td>
<td><?PHP echo $data['entry_history']['overall_rank']; ?></td>
<td><?PHP echo $data['entry_history']['event_transfers']; ?></td>
<td><?PHP echo $data['entry_history']['event_transfers_cost']; ?></td>
<td><?PHP echo $data['entry_history']['points_on_bench']; ?></td>
<td><?PHP echo $data['entry_history']['bank']; ?></td>
</table>
</br>
</br>
</br>
<script>function doCSV() {
var table1 = document.getElementById("gameweek_history").innerHTML;
var data1 = table1.replace(/<thead>/g, '')
.replace(/<\/thead>/g, '')
.replace(/<tbody>/g, '')
.replace(/<\/tbody>/g, '')
.replace(/<tr>/g, '')
.replace(/<\/tr>/g, '\r\n')
.replace(/<th>/g, '')
.replace(/<\/th>/g, ',')
.replace(/<td>/g, '')
.replace(/<\/td>/g, ',')
.replace(/\t/g, '')
.replace(/\n/g, '');
var table2 = document.getElementById("gameweek_info").innerHTML;
var data2 = table2.replace(/<thead>/g, '')
.replace(/<\/thead>/g, '')
.replace(/<tbody>/g, '')
.replace(/<\/tbody>/g, '')
.replace(/<tr>/g, '')
.replace(/<\/tr>/g, '\r\n')
.replace(/<th>/g, '')
.replace(/<\/th>/g, ',')
.replace(/<td>/g, '')
.replace(/<\/td>/g, ',')
.replace(/\t/g, '')
.replace(/\n/g, '');
var data= data1.concat(data2);
var mylink = document.createElement('a');
mylink.download = "Gameweek.csv";
mylink.href = "data:application/csv," + escape(data);
mylink.click();
}</script>
<button onclick="doCSV()">Export HTML Table To CSV File</button>
<?PHP
}
?>
I expect each button to convert the information of the particular gameweek which the loop is currently on (for e.g. i i=1 then gameweek 1 team should be exported, if i=2 then gameweek2 team should be exported)
You'll need to add unique ids to every table like:
<table id ="gameweek_history<? echo $i; ?>">
Then you'll need to have your javascript refer to the id. Your existing code creates a new script for every table, so to keep doing that, each function will need a unique name that has refers to that table.
<script>function doCSV<? echo $i; ?>() {
var table1 = document.getElementById("gameweek_history<? echo $i; ?>").innerHTML;
It would probably be better to just have one function declared outside the loop with a variable passed into it.
<script>function doCSV(table_number) {
var table1 = document.getElementById("gameweek_history" + table_number).innerHTML;
Then add the table number to each event handler.
<button onclick="doCSV(<? echo $i; ?>)">Export HTML Table To CSV File</button>
I am new to yii. My ActiveRecord doesn't validate when save() is called.
model codes:
public function rules()
{
// NOTE: you should only define rules for those attributes that
// will receive user inputs.
return array(
array('firstName, secondName, lastName, gender, phoneNumber, email, address, education_background, basicSalary, departmentID, roleID, contractID, employed_by, reports_to, date_employed', 'required'),
array('phoneNumber, departmentID, roleID, contractID', 'numerical', 'integerOnly'=>true),
array('firstName, secondName, lastName', 'length', 'max'=>20),
array('firstName, secondName, lastName','type', 'type'=>'char','message'=>'This field accepts characters only'),
array('email','email'),
);
}
controller codes:
public function actionCreate()
{
$model=new Employee;
$message="email already exists";
// Uncomment the following line if AJAX validation is needed
// $this->performAjaxValidation($model);
if(isset($_POST['Employee']))
{
$model->attributes=$_POST['Employee'];
$model->password=md5(strtolower($model->firstName.'123'));
$to=$model->email;
$mailmessage="Dear ".$model->lastName." ".$model->firstName."<br> Thanks for your interest in working for XXX Company.
<br>Please note your login details are :- Email:".$model->email." Password: ".$model->firstName."123<br>
You can change password to your preference choice when you login.<br>
Kindly Regards<br>
HRMS administrator";
//echo $model->password; exit;
$criteria=new CDbCriteria();
$criteria->select='email';
$criteria->condition='email=:email';
$criteria->params=array(':email'=>$model->email);
if($check=Employee::model()->exists($criteria)){
$this->render('create',array(
'model'=>$model,'message'=>$message));
exit;
}else{
$model->save();
/*if($model->validate()){
echo 'valideted';
exit;
}
else {
echo 'not valid';
print_r($model->getErrors());
}
exit;
//$model->getErrors();*/
/*if(){
echo 'saved';
}
else{
print_r($model->getErrors());
}
exit;*/
$this->mailsend($to,$mailmessage);
// $cmd=Yii::app()->db->createCommand('select max(employee.employeeID),role.roleName,employee.departmentID FROM employee JOIN role ON employee.roleID=role.roleID');
$cmd=Yii::app()->db->createCommand('select employee.employeeID,role.roleName,department.departmentName FROM employee JOIN department ON employee.departmentID=department.departmentID JOIN role ON employee.roleID=role.roleID
ORDER BY employee.employeeID DESC LIMIT 1');
$rstid=$cmd->queryRow(false);
$id=$rstid[0];
$role=$rstid[1];
$dep=$rstid[2];
$history=Yii::app()->db->createCommand();
$history->insert('history',array(
'employeeID'=>$id,
'action_to'=>'as '.$role,
'department'=>$dep,
'reports_to'=>$model->reports_to,
'date'=>$model->date_employed,
));
Yii::app()->session['id']=$model->employeeID;
$this->redirect(array('view','id'=>$model->employeeID));
}
}
$this->render('create',array(
'model'=>$model,'message'=>''
));
}
view codes
<div class="form">
<?php $form=$this->beginWidget('CActiveForm', array(
'id'=>'employee-form',
// Please note: When you enable ajax validation, make sure the corresponding
// controller action is handling ajax validation correctly.
// There is a call to performAjaxValidation() commented in generated controller code.
// See class documentation of CActiveForm for details on this.
'enableAjaxValidation'=>false,
)); ?>
<p class="note">Fields with <span class="required">*</span> are required.</p>
<?php echo $form->errorSummary($model); ?>
<table>
<tr><td><?php echo $form->labelEx($model,'firstName'); ?></td>
<td><?php echo $form->textField($model,'firstName',array('size'=>20,'maxlength'=>20)); ?></td>
<td><?php echo $form->error($model,'firstName'); ?></td></tr>
<tr><td><?php echo $form->labelEx($model,'secondName'); ?></td>
<td><?php echo $form->textField($model,'secondName',array('size'=>20,'maxlength'=>20)); ?></td>
<td><?php echo $form->error($model,'secondName'); ?></td></tr>
<tr><td><?php echo $form->labelEx($model,'lastName'); ?></td>
<td><?php echo $form->textField($model,'lastName',array('size'=>20,'maxlength'=>20)); ?></td>
<td><?php echo $form->error($model,'lastName'); ?></td></tr>
<tr><td><?php echo $form->labelEx($model,'gender'); ?></td>
<td><?php echo $form->dropDownList($model,'gender',array('Male'=>'Male','Female'=>'Female')); ?></td>
<td><?php echo $form->error($model,'gender'); ?></td></tr>
<tr><td><?php echo $form->labelEx($model,'phoneNumber'); ?></td>
<td><?php echo $form->textField($model,'phoneNumber'); ?></td>
<td><?php echo $form->error($model,'phoneNumber'); ?></td></tr>
<tr><td><?php echo $form->labelEx($model,'email'); ?>
</td>
<td><?php echo $form->textField($model,'email',array('size'=>50,'maxlength'=>50)); ?></td>
<td style='color:red;'><?php echo $form->error($model,'email'); ?>
<?php echo $message; ?></td></tr>
<tr><td><?php echo $form->labelEx($model,'address'); ?></td>
<td><?php echo $form->textArea($model,'address',array('size'=>60,'maxlength'=>100)); ?></td>
<td><?php echo $form->error($model,'address'); ?></td></tr>
<tr><td><?php echo $form->labelEx($model,'education_background'); ?></td>
<td><?php echo $form->textArea($model,'education_background',array('size'=>60,'maxlength'=>300)); ?></td>
<td><?php echo $form->error($model,'education_background'); ?></td></tr>
<tr><td><?php echo $form->labelEx($model,'roleID'); ?></td>
<td><?php echo $form->dropDownList($model,'roleID',CHtml::listData(Role::model()->findAll(),'roleID','roleName'),
array(
'ajax' => array(
'type'=>'POST',
'dataType'=>'json',
'url'=>CController::createUrl('employee/getSalary'),
'success'=>'function(data){
$("#Employee_basicSalary").val(data.data1);
}'),
'prompt'=>'select'
)); ?></td>
<td><?php echo $form->error($model,'roleID'); ?></td></tr>
<tr>
<td><?php echo $form->labelEx($model,'basicSalary'); ?></td>
<td>
<?php echo $form->textField($model,'basicSalary',array('size'=>10,'maxlength'=>10)); ?>
</td>
<td><?php echo $form->error($model,'basicSalary'); ?></td>
</tr>
<tr><td><?php echo $form->labelEx($model,'departmentID'); ?></td>
<td><?php echo $form->dropDownList($model,'departmentID',CHtml::listData(Department::model()->findAll(),'departmentID','departmentName')); ?></td>
<td><?php echo $form->error($model,'departmentID'); ?></td></tr>
<tr><td><?php echo $form->labelEx($model,'date_employed'); ?></td>
<td> <?php $this->widget('zii.widgets.jui.CJuiDatePicker',array(
'name'=>'Employee[date_employed]',
'id'=>'Employee_date_employed',
'value'=>$model->date_employed,
'options'=>array(
'dateFormat'=>'yy-mm-dd',
'showAnim'=>'fold',
),
'htmlOptions'=>array(
'style'=>'height:20px;'
),
));
?></td>
<td><?php echo $form->error($model,'date_employed'); ?>
</td></tr>
<tr><td><?php echo $form->labelEx($model,'contractID'); ?></td>
<td> <?php echo $form->dropDownList($model,'contractID',CHtml::listData(Contract::model()->findAll(),'contractID','contractName'),
array(
'ajax' => array(
'type'=>'POST',
'dataType'=>'json',
'url'=>CController::createUrl('employee/getContDate'),
'success'=>'function(data){
$("#Employee_endcontract").val(data.data1);
}'),
'prompt'=>'select'
)); ?></td>
<td><?php echo $form->error($model,'contractID'); ?></td></tr>
<tr><td><?php echo $form->labelEx($model,'endcontract'); ?></td><td><?php echo $form->textField($model,'endcontract');?></td></tr>
<tr><td><?php echo $form->labelEx($model,'employed_by'); ?></td>
<td><?php echo $form->textField($model,'employed_by',array('size'=>50,'maxlength'=>50)); ?></td>
<td><?php echo $form->error($model,'employed_by'); ?></td></tr>
<tr><td><?php echo $form->labelEx($model,'reports_to'); ?></td>
<td><?php echo $form->dropDownList($model,'reports_to',array('Senior Manager'=>'Senior Manager','Assistant Manager'=>'Assistant Manager','System Administrator'=>'System Administrator')); ?></td>
<td><?php echo $form->error($model,'reports_to'); ?></td></tr>
<tr><td></td><td> <?php echo CHtml::submitButton($model->isNewRecord ? 'Create' : 'Save'); ?></td><td></td></tr>
</table>
<?php $this->endWidget(); ?>
</div><!-- form -->
This model does not validate and also doesn't display errors. Any help please?
You can check uniqueness of email in model (will be good to use scenarios).
You can create relations with department and role tables in your model.
Model code:
public function rules() {
// it will be good to use scenarios
return array(
array('firstName, secondName, lastName, gender, phoneNumber, email, address, education_background, basicSalary, departmentID, roleID, contractID, employed_by, reports_to, date_employed', 'required'),
array('phoneNumber, departmentID, roleID, contractID', 'numerical', 'integerOnly'=>true),
array('firstName, secondName, lastName', 'length', 'max'=>20),
array('firstName, secondName, lastName','type', 'type'=>'char','message'=>'This field accepts characters only'),
array('email','email'),
array('email','unique'),
);
}
public function relations() {
return array(
'department' => array(self::BELONGS_TO, 'Department', 'departmentID'), // Department CActivRecord model of `department` table
'role' => array(self::BELONGS_TO, 'Role', 'roleID'), // Role CActivRecord model of `role` table
);
}
Controller create action code:
public function actionCreate() {
$model=new Employee;
// Uncomment the following line if AJAX validation is needed
// $this->performAjaxValidation($model);
if(isset($_POST['Employee'])) {
$model->attributes=$_POST['Employee'];
$model->password=md5(strtolower($model->firstName.'123'));
if($model->save()) {
$mailmessage="Dear ".$model->lastName." ".$model->firstName."<br> Thanks for your interest in working for XXX Company.
<br>Please note your login details are :- Email:".$model->email." Password: ".$model->firstName."123<br>
You can change password to your preference choice when you login.<br>
Kindly Regards<br>
HRMS administrator";
$this->mailsend($model->email, $mailmessage);
Yii::app()->db->createCommand()->insert('history',array(
'employeeID'=>$model->employeeID,
'action_to'=>'as '.$model->role->roleName,
'department'=>$model->department->departmentName,
'reports_to'=>$model->reports_to,
'date'=>$model->date_employed,
));
Yii::app()->session['id']=$model->employeeID;
$this->redirect(array('view','id'=>$model->employeeID));
}
}
$this->render('create',array(
'model'=>$model,
));
}
Also you can set enableClientValidation to true in CActiveForm widget to enable js validation.