|
|
|
| с утра работал скрипт
<?php
if(!defined("INCLUDE")) exit('запрет на прямой доступ');
include 'include/config.php';
$query = mysql_query("SELECT COUNT(*) AS num FROM `photo` ");
$num = mysql_result($query,0,'num');
$n = rand(1,$num);
$sql = "SELECT `url` FROM `photo` WHERE id = $n";
$photo = mysql_query("$sql");
if (mysql_num_rows($photo) == 0)
{
echo "в данном разделе информация не обнаружена";
}
else
{
$select_photo = mysql_fetch_assoc($photo);
echo "<div align=\"center\"><img src=\"media/original/".$select_photo["url"]."\" /></div>";
}
?>
|
а теперь выдает в данном разделе информация не обнаружена | |
|
|
|
|
автор: Тень (28.01.2010 в 16:15) |
|
|
для: Bvz
(28.01.2010 в 16:13)
| | А кто сказал, что id'ы обязаны следовать один за другим? Используй ORDER BY id LIMIT $n, 1 (только $n = rand(0, $num - 1)) | |
|
|
|
|
автор: Тень (28.01.2010 в 16:16) |
|
|
для: Тень
(28.01.2010 в 16:15)
| | А может ORDER BY id даже и не нужно будет... | |
|
|
|
|
|
|
|
для: Тень
(28.01.2010 в 16:16)
| | никак не помогает
а как узнать минимальный id? | |
|
|
|
|
|
|
|
для: Bvz
(28.01.2010 в 16:13)
| | Вам нужно разобраться, в каком именно месте у Вас ошибка.
Сам запрос вы пробовали выводить?
<?php
$sql = "SELECT `url` FROM `photo` WHERE id = " . $n;
$photo = mysql_query($sql); //здесь я убрала ваши кавычки
if(!$photo) exit("Error in " . $sql . mysql_error());
?>
|
Или просто посмотреть print $sql, чтобы определить, получаете ли Вы $n. | |
|
|
|
|
|
|
|
для: Bvz
(28.01.2010 в 16:13)
| | а ORDER BY RAND() LIMIT 1 не подходит? | |
|
|
|
|
|
|
|
для: neadekvat
(28.01.2010 в 16:52)
| | спасибо
<?php
if(!defined("INCLUDE")) exit('запрет на прямой доступ');
include 'include/config.php';
$sql = "SELECT `url` FROM `photo` ORDER BY RAND() LIMIT 1";
$photo = mysql_query("$sql");
if (mysql_num_rows($photo) == 0)
{
echo "в данном разделе информация не обнаружена";
}
else
{
$select_photo = mysql_fetch_assoc($photo);
echo "<div align=\"center\"><img src=\"media/original/".$select_photo["url"]."\" width=\"50%\" height=\"50%\" /></div>";
}
?>
|
заработало | |
|
|
|
|
|
|
|
для: Bvz
(28.01.2010 в 16:57)
| |
<?php $photo = mysql_query("$sql");
|
=>
<?php $photo = mysql_query($sql);
|
————————————————————————
<?php if (mysql_num_rows($photo) == 0)
|
=>
<?php if (!mysql_num_rows($photo))
|
| |
|
|
|
|
|
|
|
для: neadekvat
(28.01.2010 в 17:16)
| | что вы хотели этим сказать? | |
|
|
|
|
|
|
|
для: Bvz
(28.01.2010 в 17:29)
| | То, что не надо заключать в кавычки переменные и сравнивать что-то с нулем | |
|
|
|
|
|
|
|
для: neadekvat
(28.01.2010 в 17:41)
| | принято, спасибо, а как правильно? | |
|
|
|
|
автор: Тень (28.01.2010 в 20:03) |
|
|
для: neadekvat
(28.01.2010 в 17:41)
| | С нулём читабельнее. | |
|
|
|
|
автор: Тень (28.01.2010 в 20:03) |
|
|
для: neadekvat
(28.01.2010 в 16:52)
| | > а ORDER BY RAND() LIMIT 1 не подходит?
Нет | |
|
|
|
|
|
|
|
для: Тень
(28.01.2010 в 20:03)
| | Предложения явно не закончено.
Аргументируйте.
Может, вы, как и на хабре, предложите создавать временную табличку и еще с чем-то ибацо ради одной рандомной строчки? | |
|
|
|
|
автор: Тень (29.01.2010 в 07:30) |
|
|
для: neadekvat
(29.01.2010 в 06:38)
| | Первый ответ в теме.
[поправлено модератором] | |
|
|
|
|
|
|
|
для: Тень
(29.01.2010 в 07:30)
| | Меня этому еще в детском саду научили.
Если вы про это:
А кто сказал, что id'ы обязаны следовать один за другим? Используй ORDER BY id LIMIT $n, 1 (только $n = rand(0, $num - 1))
|
То это никоим образом к моему предложению относится не может. | |
|
|
|
|
автор: Тень (29.01.2010 в 14:57) |
|
|
для: neadekvat
(29.01.2010 в 14:11)
| | вместо псевдослучайного оффсета вы подставляете ORDER BY RAND
[поправлено модератором] | |
|
|
|
|
|
|
|
для: Тень
(29.01.2010 в 14:57)
| | То есть, вы не понимаете значения выражения ORDER BY RAND() ? | |
|
|
|
|
|
|
|
|
для: Тень
(29.01.2010 в 15:03)
| | А момент про то, что поле должно быть "без дырок", вы, по-моему, упустили. | |
|
|
|
|
|
|
|
для: neadekvat
(29.01.2010 в 15:12)
| | [поправлено модератором] | |
|
|
|
|
|
|
|
для: Тень
(29.01.2010 в 16:26)
| | Я не спорю, что SORT BY RAND() - достаточно "долгая" операция. Но то, что предложили вы - бред.
$n, 1 (только $n = rand(0, $num - 1))
Чем ваша строчка лучше авторской
$n, 1 (только $n = rand(1, $num ))
?
Можно также попасть на несуществующую запись. | |
|
|
|
|
|
|
|
для: neadekvat
(29.01.2010 в 16:28)
| | Конечно, эту ситуацию надо отдельно рассмотреть. А строчку эту я поменял затем, что offset от нуля до N - 1, где N -- общее количество записей.
[поправлено модератором] | |
|
|
|
|
|
|
|
для: Тень
(29.01.2010 в 16:29)
| | Надо понять, что либо вы предлагаете работающий вариант, где ситуация "отдельно рассмотрена", либо затыкаетесь. | |
|
|
|