Как используя, выбор нескольких случайных значений из массива в PHP, вывести ссылки к статьям одной и той же категории?
Доброго времени суток, уважаемые читатели нашего блога! На этом сайте уже был приведен пример того, как создать простой календарь на PHP. Также уже был урок о том, как отладить PHP-код. Еще была рассмотрена тема сортировки массивов. А сегодня мы расскажем о том, как создать скрипт на PHP, который выбирает одно или несколько случайных значений из массива. Итак, приступим.
Мы будем использовать функцию array_rand (array input [, int num_req]), которая извлекает одно или несколько произвольных вхождений из массива. Функция имеет два аргумента: массив input и необязательный аргумент num_req, в котором Вы можете указать сколько случайных значений Вы хотите получить — если не установлено, по умолчанию будет 1.
Предположим, что у нас имеется в базе данных таблица data, в которой находятся статьи и каждой статье определена своя категория. Нам необходимо выбрать все статьи текущей категории и добавить каждую из них в массив, не забывая о её названии. Сделаем это:
<?php // Выберем статьи из текущей категории $result = mysql_query("SELECT title,id FROM data WHERE cat=$cat"); $myrow = mysql_fetch_array($result); do { // $myrow["id"] - id - статьи, $myrow["title"] - название if ($id_score <> $myrow["id"]) { // чтобы не выводилась ссылка с текущей статьёй $subs[$myrow["id"]] = $myrow["title"]; } } while ($myrow = mysql_fetch_array($result)); ?>
Чтобы вывести три сылки на статьи в случайном порядке мы, используя функцию array_rand, в цикле будем печатать эти ссылки:
<?php // А теперь выбираем из полученного массива случайные значения // и выводим ссылки на наши статьи $shfl = array_rand($subs, 3); for ($x=0; $x<count($shfl); $x++) { $shsubs[] = $subs[$shfl[$x]]; printf ("<p><a href='articles.php?cat=%s&id=%s'>%s</a></p> ", $cat, $shfl[$x], $shsubs[$x]); } ?>
Результатом вывода ссылок будет список со случайными ссылками на ваши статьи.
у меня выводит ошибку
вот ошибка
Warning: mysql_fetch_array() expects parameter 1 to be resource, boolean given in Y:\home\localhost\www\sait\idv.php on line 654
Warning: mysql_fetch_array() expects parameter 1 to be resource, boolean given in Y:\home\localhost\www\sait\idv.php on line 662
Warning: array_rand() expects parameter 1 to be array, null given in Y:\home\localhost\www\sait\idv.php on line 664
…………….
что не так я сделал ?
Подключение к базе делаете?
$mysql_host = "localhost";
$mysql_database = "your_database";
$mysql_user = "halk";
$mysql_password = "12345";
$db=mysql_connect($mysql_host,$mysql_user,$mysql_password);
mysql_select_db($mysql_database,$db);
$result = mysql_query("SELECT title,id FROM data WHERE cat=$cat",$db);
…
да конечно делает ……
вот как я написал но у меня не работает ,,,// Выберем статьи из текущей категории
$result = mysql_query("SELECT zag,id FROM object WHERE id_categ=$categ");
$myrow = mysql_fetch_array($result);
do
{ // $myrow["id"] — id — статьи, $myrow["title"] — название
if ($id_score <> $myrow["id"]) // чтобы не выводилась ссылка
{ // с текущей статьёй
$subs[$myrow["zag"]] = $myrow["id"];
}
}
while ($myrow = mysql_fetch_array($result)); // А теперь выбираем из полученного массива случайные значения
// и выводим ссылки на наши статьи
$shfl = array_rand($subs, 3);
for ($x=0; $x<count($shfl); $x++)
{
$shsubs[] = $subs[$shfl[$x]];
printf ("
<p><a href=’idv.php?categ=%s&id=%s’>%s</a></p>
", $categ , $shfl[$x], $shsubs[$x]);
}
?> в чем причина ?
помоги мне . а то я волосы рву но не могу сделать как у тебя
вот мой код но он не работае что не так ???????
// Выберем статьи из текущей категории
$result = mysql_query("SELECT zag,id FROM object WHERE id_categ=$categ");
$myrow = mysql_fetch_array($result);
do
{ // $myrow["id"] — id — статьи, $myrow["title"] — название
if ($id_score <> $myrow["id"]) // чтобы не выводилась ссылка
{ // с текущей статьёй
$subs[$myrow["zag"]] = $myrow["id"];
}
}
while ($myrow = mysql_fetch_array($result)); // А теперь выбираем из полученного массива случайные значения
// и выводим ссылки на наши статьи
$shfl = array_rand($subs, 3);
for ($x=0; $x<count($shfl); $x++)
{
$shsubs[] = $subs[$shfl[$x]];
printf ("
<p><a href=’idv.php?categ=%s&id=%s’>%s</a></p>
", $categ , $shfl[$x], $shsubs[$x]);
}
?>
Запрос проверяли на работу в phpMyAdmin?
НЕТ НЕ ПРОВЕРЯЛ . И ЗАЧЕМ ПРОВЕРЯТ ЕСЛИ САЙТ РАБОТАЕТ?? НО НЕ РАБОТАЕТ ЭТОТ СКРИПТ ИМЕННО
ау ? в чем проблема??
Так вот, проверьте ваш запрос: SELECT zag,id FROM object WHERE id_categ=2
в phpMyAdmin, т.к. ошибка по-видимому связана с тем, что ваш запрос не работает как нужно. Если не сможете найти проблему введите в поисковике: "mysql_fetch_array() expects parameter 1 to be resource, boolean given" и найдёте ответ.
я нашел проблему и исправил .
Поздравляю! Здорово!