NiceScript: Пожалуйста! Да я тоже не сразу смогла понять, что дело именно в этом, только после того, как увидела, что цикл стопорится в одном месте, поняла, что это из-за лишних пробелов)
Артур Черешнюк: Мне кажется, что вы запутались немного. Смотрите, у вас есть 2 функции, одна возвращает список строк из БД:
function our_directory() {
$result = mysql_query("SELECT * FROM directory ORDER BY id DESC") or die("Invalid query: " . mysql_error());
while ($row = mysql_fetch_assoc($result)) {
$count++; // нужно ставить перед $res_array
$res_array[$count] = $row;
}
return $res_array;
}
Эта функция тоже немного некорректная, у вас нет инициализации переменных, которые вы используете внутри функции, нужно сделать так:
function our_directory() {
$res_array = [];
$count = 0;
$result = mysql_query("SELECT * FROM directory ORDER BY id DESC") or die("Invalid query: " . mysql_error());
while ($row = mysql_fetch_assoc($result)) {
$count++; // нужно ставить перед $res_array
$res_array[$count] = $row;
}
return $res_array;
}
В функции directory_val вы хотите получить значение одного поля одной конкретной записи из БД с заданным идентификатором id.
Здесь не нужны никакие циклы:
function directory_val($id, $val) {
$result = mysql_query("SELECT * FROM `directory` WHERE id = $id LIMIT 1") or die("Invalid query: " . mysql_error());
$row = mysql_fetch_assoc($result);
if(is_array($row) && key_exists($val, $row)) {
echo $row[$val];
}
}
Т.е. вы выводите на экран значение поля title записи из таблицы directory с ID, переданным в get параметре id.
Но такой вариант вообще говоря непрактичен, т.к. будет обращаться к БД каждый раз, когда вы хотите вывести значение какого-то поля записи.
Еще лучше сделать так:
function getDirectoryByID($id) {
$id = (int) $id;
$result = mysql_query("SELECT * FROM `directory` WHERE id = $id LIMIT 1") or die("Invalid query: " . mysql_error());
$row = mysql_fetch_assoc($result);
return $row;
}
Максим Тимофеев: Да, вы правы, такую проверку стоит добавить. Но это так, общий смысл алгоритма. По-хорошему еще надо обернуть все это дело в функцию и сделать $min тоже задаваемым аргументом.
Максим Тимофеев: Да вроде без :-) И у Александра (xpert13) тоже без рекурсии, хотя создавать массив из 100 чисел для генерации 4 случайных тоже, наверное, излишне.
Максим Тимофеев: Зачем усложнять алгоритм генерации чисел, вводя рекурсию, если можно обойтись без нее, реализовав генерацию одним циклом? Рекурсивное решение - это тоже хорошее решение, даст гарантию от повторений, я не спорю, просто лично мое мнение, что рекурсия лишняя.