Dit is iets dat gebaseerd is op code van iemand anders, die helaas geemigreerd is en geen internet meer heeft

Ben hier al een paar weken tegenaan aan het hikken.
Als er in file a iets gebeurt, dan wordt een account in "jail" geplaatst. Hierbij wordt een releasetime gedefinieerd.
[code:qhds96tm]
mysql_query("INSERT INTO captives (uid, releasetime, reason) VALUES (" .
implode(",", array_map("sqlesc", array($me[id], $releasetime, $row[jailreason]))). ")") or die(mysql_error());
[/code:qhds96tm]
Is de query die de rij toevoegt aan deze tabel.
Nu probeer ik iets toe te voegen, waarbij een andere speler de eerste weer uit de jail kan halen. Hiertoe wil ik timeleft berekenen (dus het aantal seconden dat het nog duurt voordat de speler automatisch vrijkomt.
Intuitief betekent dit voor mij:
roep releasetime op (timestamp)
bereken timestamp van "nu"
releasetime - nu = timeleft (in secondes)
In code kom ik dan met:
[code:qhds96tm]
$res = mysql_query("SELECT * FROM captives WHERE id=$convict");
$convict=mysql_fetch_array($res);
echo ("id: $convict[id], uid: $convict[uid], releasetime: $convict[releasetime]. reason: $convict[reason]");
//$timeleft= gettimeleft($convict[releasetime]);
//echo ("<p>Timeleft with gettimeleft=".$timeleft.".</p>");
$now=time();
$timetillrelease=$time[time]-$now;
[/code:qhds96tm]
Echter, bij uitvoer is timetillrelease ALTIJD negatief! de regel met gettimeleft is gepikt uit een andere file van dezelfde maker, waar een overzicht wordt gemaakt van captives
[code:qhds96tm]
$res = mysql_query("SELECT * FROM captives ORDER BY releasetime DESC");
while ($row = mysql_fetch_array($res)) {
if ($row[releasetime] <= sqltounix(getgmt())) {
mysql_query("DELETE FROM captives WHERE id = $row[id]");
continue;
}
echo "<tr><td><p style="margin: 0 0 0 0;">". getname($row[uid]) ."</p></td><td><p style="margin: 0 0 0 0;">" . gettimeleft($row[releasetime]) . "</p></td><td><p style="margin: 0 0 0 0;">$row[reason]</p></td></tr>";
}
echo "</table>";
[/code:qhds96tm]
Dit fragment geeft een overzicht van wie in de jail zit en wie niet, mét een goede "timeleft". Echter, als ik gettime gebruik zoals in het eerdere fragment, kom ik in een oneindige loop (of zoiets).
De vraag:
hoe kan ik de timeleft correct bepalen?