Check $row for value and amend

I  need help to check a row for a value and change it. The data is being returned to flexigrid via json and works well and without any errors. however, what I am trying to do is check the row; $row['status'] for a value = 1 and if that row is that value then change it to value = "In".

I have tried various ways to code using an if statement, but it does not error, just dosen't display the data in the grid. What is the correct way to code this row? Thanks

$results = mysql_query($sql);
while ($row = mysql_fetch_assoc($results)) {
$data['rows'][] = array(
'id' => $row['Id'],
'cell' => array($row['Id'], $row['rack'].$row['column'].'-'.$row['row'].'-'.$row['bay'], $row['customer'], $dropdown, $service, $row['department'], if ($row['status']==1){$row['status']="In"}, $row['custref'], $row['size'], $row['authorisation'], date('d/m/Y H:m:s',strtotime($row['intake_date'])), date('d/m/Y',strtotime($row['destroy_date']))));
}
echo $json->encode($data);

Open in new window

peter-cooperAsked:
Who is Participating?

Improve company productivity with a Business Account.Sign Up

x
 
Chris StanyonConnect With a Mentor Commented:
The ternary is simply a shortcut for if /else. If you need ifelse, then write it out in full:

<?php
$status = '';

if ( $row['status']==1 ):
   $status = 'In';
elseif ( $row['status']==2 ):
   $status = 'Out';
else:
   $status = $row['status'];
endif;

Open in new window

If you have more that a couple of conditions to check against, then a switch statement may be easier:

$status = '';

switch ( $row['status'] ):
   case 1:
      $status = 'In';
      break;

   case 2:
      $status = 'Out';
      break;

   case 3:
      $status = 'Something Else';
      break;

   default;
      $status = $row['status'];

endswitch;

Open in new window

0
 
Chris StanyonCommented:
You could set the value before building the array

$status = ($row['status']==1) ? 'In' : $row['status'] ;

$data['rows'][] = array(
'id' => $row['Id'],
'cell' => array($row['Id'], $row['rack'].$row['column'].'-'.$row['row'].'-'.$row['bay'], $row['customer'], $dropdown, $service, $row['department'], $status, $row['custref'], $row['size'], $row['authorisation'], date('d/m/Y H:m:s',strtotime($row['intake_date'])), date('d/m/Y',strtotime($row['destroy_date']))));
}

Open in new window

FYI, mysql_* is deprecated in PHP - you should switch to using mysqli or PDO ;)
0
 
Chris StanyonCommented:
0
Get 10% Off Your First Squarespace Website

Ready to showcase your work, publish content or promote your business online? With Squarespace’s award-winning templates and 24/7 customer service, getting started is simple. Head to Squarespace.com and use offer code ‘EXPERTS’ to get 10% off your first purchase.

 
Ray PaseurCommented:
I can't test this but I think the right answer might be here.  I reformatted it a bit for readability and added error checking on the query.

Going forward, you're going to need the information in this article.  PHP 5.5 is current, so the removal of MySQL from PHP is already underway.

$results = mysql_query($sql);
if (!$results) trigger_error('FAIL: $sql BECAUSE: ' . mysql_error(), E_USER_ERROR);
while ($row = mysql_fetch_assoc($results)) 
{
    if ($row['status'] == '1') $row['status'] = 'In';
    $data['rows'][] = array
    ( 'id' => $row['Id']
    , 'cell' => array
      ( $row['Id']
      , $row['rack'].$row['column'].'-'.$row['row'].'-'.$row['bay']
      , $row['customer']
      , $dropdown
      , $service
      , $row['department']
      , $row['status']
      , $row['custref']
      , $row['size']
      , $row['authorisation']
      , date('d/m/Y H:m:s',strtotime($row['intake_date']))
      , date('d/m/Y',strtotime($row['destroy_date']))
      )
    )
    ;
}
echo $json->encode($data);

Open in new window

0
 
Chris StanyonCommented:
Had the ternary operator the wrong way round in my code - edited for correction :)
0
 
peter-cooperAuthor Commented:
@Chris How would I use an elseif with your ternary. Thanks
0
 
peter-cooperAuthor Commented:
Thank you Chris. Just one more question. Suppose I have a column in a grid that contains different values that I need to change such as; 1,2,3 and I need them to become In,Out,Temp what is the best way to code that. With my existing code as you have helped with, it changes a value based on one condition ie; if (i==2){echo "Hello"} and based on 'i' will change the condition accordingly. But what if I want to change all values in a column not based on a condition. so 1 becomes In, 2 become Out etc. Thanks
0
 
peter-cooperAuthor Commented:
Sorry chris. My bad. Please ignore last comment as the switch seems to handle all scenarios. Many thanks
0
 
peter-cooperAuthor Commented:
Thanks once again
0
 
Chris StanyonCommented:
Hi Peter,

Not entirely sure I follow. Reading through your original post, it looks like you build each row of your grid from a database loop, creating an array element for each row. If that's the case, then putting the if / switch statement inside the loop will run the condition for each row to come out of your database. Does something like this answer your question:

while ($row = mysql_fetch_assoc($results)) {
   $status = '';
   switch ( $row['status'] ):
      case 1:
         $status = 'In';
         break;

      case 2:
         $status = 'Out';
         break;

      case 3:
         $status = 'Temp';
         break;

      default;
         $status = $row['status'];

   endswitch;
   
   $data['rows'][] = array(
      'id' => $row['Id'],
      'cell' => array(
         $row['Id'],
         $row['rack'].$row['column'].'-'.$row['row'].'-'.$row['bay'],
         $row['customer'],
         $dropdown,
         $service,
         $row['department'],
         $status,
         $row['custref'],
         $row['size'],
         $row['authorisation'],
         date('d/m/Y H:m:s',strtotime($row['intake_date'])),
         date('d/m/Y',strtotime($row['destroy_date']))
      )
   );
}
echo $json->encode($data);

Open in new window

0
 
Chris StanyonCommented:
Oops - cross posted. Pleased you got it working :)
0
Question has a verified solution.

Are you are experiencing a similar issue? Get a personalized answer when you ask a related question.

Have a better answer? Share it in a comment.

All Courses

From novice to tech pro — start learning today.