What kind of data is contained in 'staff_approved'? Why can't you just check the value rather than trying to do a substr?
PHP Code:
<?php
while($rows=mysql_fetch_array($result))
{
$rows['date'] = date( "d/m/Y", $rows['date_ts'] );
?>
<tr>
<td nowrap><?php echo $rows['datefield']; ?></td>
<td nowrap><?php echo $rows['shift']; ?></td>
<td nowrap> <?php echo $rows['reason'];?></td>
<td nowrap> <?php echo $rows['person_covering']; ?></td>
<td nowrap> £<?php echo $rows['cost']; ?></td>
<td nowrap><?php if(strncasecmp(trim($rows['staff_approved']),'yes') != 0)
{
?>
<a href="updaterecord.php?id=<?php echo $rows['id'];?>">Edit</a>
<?php
}
?>
</td>
</tr>
<?php
}
?>