Reputation: 45
I am having trouble with the getNext()
function...
If isTaken() == true
, it does update last
, but I'm not sure it is invoking the getNext()
function as the function never returns $next
.
If isTaken() == false
, $next
is returned.
Any ideas?
function isTaken ($id){
$sql = "SELECT asset_no FROM tb_asset WHERE asset_no='" . $id . "'";
$result = mysql_query($sql) or die(mysql_Error());
if (mysql_num_rows($result)) return true;
else return false;
mysql_free_result($result);
}
function getNext(){
$sql = "SELECT last FROM app_asset";
$result = mysql_query($sql) or die (mysql_error());
$last = mysql_fetch_array($result);
mysql_free_result($result);
$next = ++$last['last'];
if (isTaken($next)){
$sql = "UPDATE app_asset SET last='" . $next . "'";
mysql_query($sql) or die (mysql_error());
getNext();
} else {
return $next;
}
}
Upvotes: 0
Views: 65
Reputation: 10638
As Sable Foste pointed out, you will always need a return statement. In your case however, it looks like your code needs to be modified to
if (isTaken($next)){
//code
return getNext();
} else
return $next;
So the function will stop the recursion and return once isTaken($next)
is false
Upvotes: 1
Reputation: 4192
You need to pass the variable back to the function:
if (isTaken($next)){
$sql = "UPDATE app_asset SET last='" . $next . "'";
mysql_query($sql) or die (mysql_error());
getNext();
return $next; // this line added.
} else {
return $next;
}
Upvotes: 0