Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737
Форумы портала PHP.SU :: Random из MySQL в php

 PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи


 Страниц (1): [1]   

> Описание: случайная выборка из базы на страницу php
August_II
Отправлено: 27 Февраля, 2015 - 08:49:39
Post Id


Новичок


Покинул форум
Сообщений всего: 49
Дата рег-ции: Нояб. 2014  


Помог: 0 раз(а)




Здравствуйте!
помогите переделать код.
PHP:
скопировать код в буфер обмена
  1.  
  2. <?PHP
  3. $dbhost = "localhost";
  4. $dblogin = "root";
  5. $dbpassword = "";
  6. $db = "123";
  7. $site = mysql_pconnect($dbhost, $dblogin, $dbpassword) or die("Подключение к серверу не установлено, проверьте ваш логин или пароль");
  8. @mysql_select_db($db) or die("База не может быть загружена, проверьте её имя");
  9. mysql_query("SET NAMES cp1251", $site) or die(mysql_error());
  10. mysql_query("SET CHARACTER SET cp1251", $site) or die(mysql_error());
  11. ?>
  12. <!doctype html>
  13. <html>
  14. <head>
  15. <meta charset="windows-1251">
  16. <title>Случайная выборка из MySQL</title>
  17. </head>
  18.  
  19. <body>
  20. <?PHP
  21. $num_rand=10;
  22. $result = mysql_query("SELECT `id` FROM `tbl_123`");
  23. $ligne = mysql_num_rows($result);
  24. srand ((float) microtime() * 10000000);
  25. $s = array ();
  26. for($m=0;$m<$ligne;$m++)
  27. {
  28.    list($id_art) = mysql_fetch_array($result);
  29.    array_push ($s,$id_art);
  30. }
  31. $s = array_flip ($s);
  32. $r = array_rand (array_unique ($s), $num_rand);
  33. list ($id) = $r;
  34. for($i=0;$i<count($r);$i++)
  35. {
  36.    $article=mysql_query("SELECT `img` FROM `tbl_123` WHERE `id`=\"".$id."\" LIMIT 1");
  37.    list($name_article) = mysql_fetch_array($article);
  38.    ?>  
  39.         <div><img src="<?= $name_article ?>" /></div>
  40.                 <?PHP
  41.                         $id=next ($r);
  42.                         }
  43.                 ?>
  44.         </body>
  45. </html>
  46.  


нужно что бы выводилось не только одно значение $name_article, а несколько. Что то типа такого
CODE (htmlphp):
скопировать код в буфер обмена
  1. <a href="$url"><img src="$img" title="$descript"></a>


Помогите плиззз.
 
 Top
August_II
Отправлено: 27 Февраля, 2015 - 11:05:53
Post Id


Новичок


Покинул форум
Сообщений всего: 49
Дата рег-ции: Нояб. 2014  


Помог: 0 раз(а)




Что никто не знает? Или лень?
 
 Top
GoDr
Отправлено: 27 Февраля, 2015 - 11:33:12
Post Id



Посетитель


Покинул форум
Сообщений всего: 446
Дата рег-ции: Янв. 2015  
Откуда: Тамбов


Помог: 17 раз(а)




Не совсем понятна логика (мне не понятна).. Ты получаешь все данные из базы. потом получаешь случайную запись и выводишь? так?

А может проще сразу получить из базы определённое количество записей в случайном порядке?


-----
Система управления веб-содержимым Lotos CMS
 
 Top
August_II
Отправлено: 27 Февраля, 2015 - 12:49:08
Post Id


Новичок


Покинул форум
Сообщений всего: 49
Дата рег-ции: Нояб. 2014  


Помог: 0 раз(а)




GoDr пишет:
Не совсем понятна логика (мне не понятна).. Ты получаешь все данные из базы. потом получаешь случайную запись и выводишь? так?

А может проще сразу получить из базы определённое количество записей в случайном порядке?


Ну честно говоря, это не мой код, я в нем тоже не очень разобрался, что за вынос мозга.
Подскажи как правильно
 
 Top
GoDr
Отправлено: 27 Февраля, 2015 - 13:11:46
Post Id



Посетитель


Покинул форум
Сообщений всего: 446
Дата рег-ции: Янв. 2015  
Откуда: Тамбов


Помог: 17 раз(а)




August_II, запомни, ну нет уже MySQL, нет(!) Это как "запорожец": нет такой машины уже больше 20 лет, а она всё равно иногда появляется Радость

CODE (htmlphp):
скопировать код в буфер обмена
  1. <?php
  2. $dbhost = "localhost";
  3. $dblogin = "root";
  4. $dbpassword = "";
  5. $db = "123";
  6.  
  7. $mysqli = new mysqli($dbhost, $dbuser, $dbpassword, $db);
  8.  
  9. ?>
  10.  
  11. <!doctype html>
  12. <html>
  13. <head>
  14.     <meta charset="windows-1251">
  15.     <title>Случайная выборка из MySQL</title>
  16. </head>
  17.  
  18. <body>
  19.  
  20. <?php
  21.  
  22. $num_rand = 10;
  23. $sql = "SELECT `img` FROM `tbl_123` ORDER BY RAND() LIMIT " . $num_rand;
  24.  
  25. if ($result = $mysqli->query($sql)) {
  26.  
  27.    while ($row = $result->fetch_assoc()) {
  28.        echo '<div><img src="' . $row['name'] . '" /></div>';
  29.    }
  30.    $result->free();
  31. }
  32. ?>
  33.  
  34. </body>
  35. </html>



Кстати, от куда такой дурацкий код выкопал? Выкинь! ;)


-----
Система управления веб-содержимым Lotos CMS
 
 Top
August_II
Отправлено: 27 Февраля, 2015 - 13:51:10
Post Id


Новичок


Покинул форум
Сообщений всего: 49
Дата рег-ции: Нояб. 2014  


Помог: 0 раз(а)




GoDr пишет:
August_II, запомни, ну нет уже MySQL, нет(!) Это как "запорожец": нет такой машины уже больше 20 лет, а она всё равно иногда появляется Радость

CODE (htmlphp):
скопировать код в буфер обмена
  1. <?php
  2. $dbhost = "localhost";
  3. $dblogin = "root";
  4. $dbpassword = "";
  5. $db = "123";
  6.  
  7. $mysqli = new mysqli($dbhost, $dbuser, $dbpassword, $db);
  8.  
  9. ?>
  10.  
  11. <!doctype html>
  12. <html>
  13. <head>
  14.     <meta charset="windows-1251">
  15.     <title>Случайная выборка из MySQL</title>
  16. </head>
  17.  
  18. <body>
  19.  
  20. <?php
  21.  
  22. $num_rand = 10;
  23. $sql = "SELECT `img` FROM `tbl_123` ORDER BY RAND() LIMIT " . $num_rand;
  24.  
  25. if ($result = $mysqli->query($sql)) {
  26.  
  27.    while ($row = $result->fetch_assoc()) {
  28.        echo '<div><img src="' . $row['name'] . '" /></div>';
  29.    }
  30.    $result->free();
  31. }
  32. ?>
  33.  
  34. </body>
  35. </html>



Кстати, от куда такой дурацкий код выкопал? Выкинь! ;)



Спасибо братиш!!!
Заработало.
Поменял вот это
PHP:
скопировать код в буфер обмена
  1. $sql = "SELECT `img` FROM `tbl_123` ORDER BY RAND() LIMIT " . $num_rand;

на это
PHP:
скопировать код в буфер обмена
  1. $sql = "SELECT * FROM `tbl_123` ORDER BY RAND() LIMIT " . $num_rand;

Теперь подставляет всё что нужно и куда нужно.

Там кстати $mysqli = new mysqli($dbhost, $dbuser, $dbpassword, $db);
а вместо $dbuser нужно $dblogin

а откапал на просторах интернета, причем написан был 11 января сего года
 
 Top
GoDr
Отправлено: 27 Февраля, 2015 - 13:54:55
Post Id



Посетитель


Покинул форум
Сообщений всего: 446
Дата рег-ции: Янв. 2015  
Откуда: Тамбов


Помог: 17 раз(а)




August_II, ну коль умеешь заменять и знаешь где, то ты не безнадёжен Радость

August_II пишет:
а вместо $dbuser нужно $dblogin
это дело вкуса.. но везде это называется пользователь, а не логин Улыбка

(Отредактировано автором: 27 Февраля, 2015 - 13:55:12)



-----
Система управления веб-содержимым Lotos CMS
 
 Top
LIME
Отправлено: 27 Февраля, 2015 - 15:41:00
Post Id


Активный участник


Покинул форум
Сообщений всего: 10732
Дата рег-ции: Нояб. 2010  


Помог: 322 раз(а)




GoDr пишет:
ну нет уже MySQL, нет(!)
ого
а давно?
отстаю я от жизни
 
 Top
GoDr
Отправлено: 27 Февраля, 2015 - 16:29:48
Post Id



Посетитель


Покинул форум
Сообщений всего: 446
Дата рег-ции: Янв. 2015  
Откуда: Тамбов


Помог: 17 раз(а)




LIME, да всё ты понял Радость Конечно есть и MySQL и драйвер mysql!!!!! Мы же говорим о БД применительно к PHP... А в коде используется старый драйвер...

Просто люди откапывают такой древний код, что чтобы его хотя бы проверить или подправить, нужно переподключать сервер на старенький PHP

(Отредактировано автором: 27 Февраля, 2015 - 16:36:22)



-----
Система управления веб-содержимым Lotos CMS
 
 Top
LIME
Отправлено: 27 Февраля, 2015 - 16:43:32
Post Id


Активный участник


Покинул форум
Сообщений всего: 10732
Дата рег-ции: Нояб. 2010  


Помог: 322 раз(а)




Я то понял
Но ты же не мне инфу давал верно?
Вот так и ходят дикие слухи)
 
 Top
GoDr
Отправлено: 27 Февраля, 2015 - 16:52:00
Post Id



Посетитель


Покинул форум
Сообщений всего: 446
Дата рег-ции: Янв. 2015  
Откуда: Тамбов


Помог: 17 раз(а)




Виноват, исправлюсь Язычок Уж вроде все подобные примеры кода должны были умереть.... но нет, живы(!) да ещё и нас переживут Радость


-----
Система управления веб-содержимым Lotos CMS
 
 Top
LIME
Отправлено: 27 Февраля, 2015 - 17:04:24
Post Id


Активный участник


Покинул форум
Сообщений всего: 10732
Дата рег-ции: Нояб. 2010  


Помог: 322 раз(а)




И ничего особо страшного на самом деле
Разница в основном в поддержке транзакционности innodb
Тем кто юзает mysql это до фиолетовой лампочки
(Добавление)
Ну и в препаред
Это туда же для них Улыбка
(Добавление)
И кстати order by rand совсем не лучшее решение для больших таблиц
Мягко говоря
(Добавление)
Тут это много раз обсуждалось и не только тут
Известная такая задачка
Решение зависит от частностей но как правило лучше использовать дополнительное индексное поле без "дыр"
 
 Top
GoDr
Отправлено: 27 Февраля, 2015 - 17:24:51
Post Id



Посетитель


Покинул форум
Сообщений всего: 446
Дата рег-ции: Янв. 2015  
Откуда: Тамбов


Помог: 17 раз(а)




LIME пишет:
И кстати order by rand совсем не лучшее решение для больших таблиц
Мягко говоря
Ну даже не мягко говоря Улыбка Как говориться, чтобы голову не загружать, самый простой вариант....

С другой стороны если в файле идёт сначала
PHP:
скопировать код в буфер обмена
  1. $dbhost = "localhost";
  2. $dblogin = "root";
  3. $dbpassword = "";
  4. $db = "123";

а потом
CODE (html):
скопировать код в буфер обмена
  1. <!doctype html>
  2. <html>
  3. <head>
  4. <meta charset="windows-1251">
  5. <title>Случайная выборка из MySQL</title>
  6. </head>


то ..... Закатив глазки


-----
Система управления веб-содержимым Lotos CMS
 
 Top
LIME
Отправлено: 27 Февраля, 2015 - 17:29:21
Post Id


Активный участник


Покинул форум
Сообщений всего: 10732
Дата рег-ции: Нояб. 2010  


Помог: 322 раз(а)




Ну тогда уж если следовать этой логике то и цикл запросов пойдет и полная выборка нормально Улыбка
Ну пусть будет ранд в запросе
типа сократили код Улыбка

(Отредактировано автором: 27 Февраля, 2015 - 17:30:10)

 
 Top
Страниц (1): [1]
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« Вопросы новичков »


Все гости форума могут просматривать этот раздел.
Только зарегистрированные пользователи могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 



Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB