Нашли или выдавили из себя код, который нельзя назвать нормальным,
на который без улыбки не взглянешь?
Не торопитесь его удалять или рефакторить, — запостите его на
говнокод.ру, посмеёмся вместе!
//отбор произвольного совета
$query = "SELECT * FROM sovet_faraon";
$result = mysql_query($query) or die ("Не могу выбрать данные из таблицы");
$number = 0;
while ($row = mysql_fetch_array($result)) {
$number++;
}
//выбираем число случайным образом
$uniq_id = rand(1, $number++);
//выбираем этот совет по номеру
$query = "select * from sovet_faraon where (id_sovet='$uniq_id')";
$result = mysql_query($query) or die("Не могу выбрать значение из базы советов");
while ($row = mysql_fetch_array($result)) {
$id_sovet = $row["id_sovet"];
$small_sovet = $row["small_sovet"];
$big_sovet = $row["big_sovet"];
}
echo "<a href=\"list_sovet.php\" class=\"ssilka2\">" . $small_sovet . "</a>";
Отбор произвольного совета мля... Один совет такому "программисту" дать хочется: "убейся ап стену!!!" xD
Шучу конечно, сам наверное лет в 5 так бы написал xD
Удачи, особенно с табличками в несколько сотен тысяч записей и более. Использование вычисляемых выражений в order by приводит к тому, что данное выражение вычисляется для каждой строки.
о, тогда подскажите вот что делать если в табличке 500000К записей и надо выбрать произвольную, номер записи использовать нельзя ибо некоторые удалены =)
))) спасибо за метод поиска google ))))
"мне повезёт":
SELECT @count := COUNT(*) FROM fruit;
SET @offset = CONVERT(FLOOR(RAND() * @count), SIGNED);
PREPARE mystatement FROM "SELECT * FROM fruit LIMIT ?, 1";
EXECUTE mystatement USING @offset;
DEALLOCATE PREPARE mystatement;
5 лет - это детсадовский пафос. Если бы я в 5 лет знал SQL и PHP, сейчас бы писал автопилоты для искусственных спутников (но не на PHP, там память течет).
Год выпуска php - 1994. Но в то время он был недостаточно популярен и это был не "тот php"... И если "code_master" не является виртуалом Расмуса (вероятность этого бесконечно малая), значит год, когда товарищ услышал о php был как минимум 1997.
1997 - 5 = 1992.
Сейчас 2011.
2011 - 1992 = 19 (максимальный возраст /user/526 ).
"мне повезёт":
SELECT @count := COUNT(*) FROM fruit;
SET @offset = CONVERT(FLOOR(RAND() * @count), SIGNED);
PREPARE mystatement FROM "SELECT * FROM fruit LIMIT ?, 1";
EXECUTE mystatement USING @offset;
DEALLOCATE PREPARE mystatement;
$get_max_min = mysql_query('select min('id_sovet'),max('id_sovet') from sovet_faraon);
$get_max_min = mysql_fetch_array($get_max_min);
$get_rand = rand($get_max_min[0],$get_max_min[1]);
$result = mysql_query('select * from sovet_faraon where id_sovet = '.$get_rand);
Но совершенно не так как написал автор ...
Оптимизация же
>И представите каждый раз считать милион записей
А это смотря какой движок используется.
омг. что за школьный пафос ?
на любимом JS?
Год выпуска php - 1994. Но в то время он был недостаточно популярен и это был не "тот php"... И если "code_master" не является виртуалом Расмуса (вероятность этого бесконечно малая), значит год, когда товарищ услышал о php был как минимум 1997.
1997 - 5 = 1992.
Сейчас 2011.
2011 - 1992 = 19 (максимальный возраст /user/526 ).
> $small_sovet = $row["small_sovet"];
> $big_sovet = $row["big_sovet"];
Большие Грязи, Малые Грязи, ИдиТыВ Грязи...
не ссиль-ка ты сюда...
За такое надо четвертовать.