За последние 24 часа нас посетили 17832 программиста и 1286 роботов. Сейчас ищут 1348 программистов ...

rand и бд проскакиевает помогите!

Тема в разделе "Вопросы от блондинок", создана пользователем Maxer, 3 ноя 2006.

  1. Maxer

    Maxer Активный пользователь

    С нами с:
    22 окт 2006
    Сообщения:
    93
    Симпатии:
    0
    вот у меня запрос.

    PHP:
    1.  
    2. $max=mysql_query("SELECT MAX(id) from sites");
    3. while($rov=mysql_fetch_array($max))
    4.  
    5.  
    6. $gen = rand(1,$rov[0]);
    7. $sqlr="select * from reKl where id='$gen'";
    8. $resultr=mysql_query($sqlr);
    9. $rowr1=mysql_fetch_array($resultr);
    как вы поняли идет случайный выбор с бд выбирается поле с ID=1 и до последнего поля,но тут я столкнулся с проблемой.
    у меня ID вот так расположены
    ID
    2
    4
    5
    6
    10
    Т.Е некоторые записи удалили.
    как тут зделать случайны выбор?
     
  2. vb

    vb Активный пользователь

    С нами с:
    6 июн 2006
    Сообщения:
    911
    Симпатии:
    0
    Адрес:
    Saint-Petersburg
    PHP:
    1.  
    2. <?php
    3. $result = mysql_query('SELECT * FROM table ORDER BY RAND()');
    4. while ($row = mysql_fetch_row($result))
    5. {
    6. print $row[0]."<br />\n";
    7. }
    8. ?>
    9.  
     
  3. Vladson

    Vladson Старожил

    С нами с:
    4 фев 2006
    Сообщения:
    4.040
    Симпатии:
    26
    Адрес:
    Estonia, Tallinn
    vb
    LIMIT не забываем только...

    (а то так все серваки задосите)
     
  4. vb

    vb Активный пользователь

    С нами с:
    6 июн 2006
    Сообщения:
    911
    Симпатии:
    0
    Адрес:
    Saint-Petersburg
    Vladson, да забыл пардон :)
    Maxer, в конце запроса дописываем к примеру LIMIT 1000
     
  5. Maxer

    Maxer Активный пользователь

    С нами с:
    22 окт 2006
    Сообщения:
    93
    Симпатии:
    0
    а если пока 1000 записей завтра уже 1220?
    Я то каждый раз редактировать не буду.
     
  6. Maxer

    Maxer Активный пользователь

    С нами с:
    22 окт 2006
    Сообщения:
    93
    Симпатии:
    0
    ааа тоесть
    PHP:
    1.  
    2. <?php
    3. $result = mysql_query('SELECT * FROM table ORDER BY RAND() LIMIT 3');
    4. while ($row = mysql_fetch_row($result))
    5. {
    6. print $row[0]."<br />\n";
    7. }
    8. ?>
    Будет случайно показыватся 3 записи да?
     
  7. Vladson

    Vladson Старожил

    С нами с:
    4 фев 2006
    Сообщения:
    4.040
    Симпатии:
    26
    Адрес:
    Estonia, Tallinn
    Да только 3 из всех.
     
  8. Maxer

    Maxer Активный пользователь

    С нами с:
    22 окт 2006
    Сообщения:
    93
    Симпатии:
    0
    Cслучайно?
     
  9. Mavir

    Mavir Guest

    Попробуй
     
  10. Maxer

    Maxer Активный пользователь

    С нами с:
    22 окт 2006
    Сообщения:
    93
    Симпатии:
    0
    Спасибо! работает
     
  11. Maxer

    Maxer Активный пользователь

    С нами с:
    22 окт 2006
    Сообщения:
    93
    Симпатии:
    0
    теперь еще проблема возникла.



    я делаю банерокрутилку на сайте.
    вот посмотри site_balans - это кол-во показов.
    надо чтобы у кого показов меньше 1. те пропускались а те и кого 1 и больше те показывались.
    помогите тут
    PHP:
    1.  
    2. <?php  
    3. include ("setup.php");
    4. $result = mysql_query('SELECT * FROM base ORDER BY RAND() WHERE site_balans > 0 LIMIT 3');  
    5. while ($row = mysql_fetch_row($result))  
    6. {  
    7. print $row[0]."<br />\n";  
    8. }  
    9. ?>
    10.  
     
  12. Mavir

    Mavir Guest

    Кто же WHERE ставит после ORDER? Читайте синтаксис операторов
     
  13. bruto

    bruto Активный пользователь

    С нами с:
    18 сен 2006
    Сообщения:
    68
    Симпатии:
    0
    в этом случае сервер создаст для каждой строчки свое значение rand и затем по ним отсортирует - чем больше база тем дольше будет исполнряться этот запрос. Для таблицы в миллион записей - это ж@@а.