function get_trank_num($mysqli, $client) {
$sql = "SELECT * FROM `balance`
WHERE `client` LIKE '$client'
ORDER BY `min_left` DESC";
if ($result = $mysqli->query($sql)) {
while ($row = $result->fetch_assoc()) {
$tel = $row['tel'];
$busy_line = $row['busy_line'];
$min_left = $row['min_left'];
if($busy_line == 0 && $min_left > 500){
return $tel;
}
}
$result = $mysqli->query($sql);
while ($row = $result->fetch_assoc()) {
$tel = $row['tel'];
$busy_line = $row['busy_line'];
$min_left = $row['min_left'];
if($busy_line == 1 && $min_left > 500){
return $tel;
}
}
$result = $mysqli->query($sql);
while ($row = $result->fetch_assoc()) {
$tel = $row['tel'];
$busy_line = $row['busy_line'];
$min_left = $row['min_left'];
if($busy_line == 0){
return $tel;
}
}
$result = $mysqli->query($sql);
while ($row = $result->fetch_assoc()) {
$tel = $row['tel'];
$busy_line = $row['busy_line'];
$min_left = $row['min_left'];
if($busy_line == 1){
return $tel;
}
}
$result->free();
}
return 0;
}
Выглядит довольно убого. Особенно учитывая, что в последний момент я догадался, что после первого прохода в $result пусто)
Смысл в том, что по ряду параметров мы ищем самый приоритетный номер, но если его нет, то ищем более худщий критерий:
$busy_line == 0 && $min_left > 500
$busy_line == 1 && $min_left > 500
$busy_line == 0
$busy_line == 1
Если ни один из критериев не совпадает, то возращаем 0.
Как оптимизировать функцию?