Как мне совместить 2 кода воедино?

Тема в разделе "PHP", создана пользователем sanj, 3 дек 2009.

Статус темы:
Закрыта.
Модераторы: latteo
  1. sanj

    sanj Постоялец

    Регистр.:
    5 июл 2008
    Сообщения:
    77
    Симпатии:
    34
    Здраствуйте.
    Тут блог решил замутить на одном нераспространенном движке. Все сделал, а одно реализовать не смог.
    Мне надо что бы в блоке отображалось случайным образом 2 статьи (название и описание).

    В общем вот код который выводит все статьи

    PHP:
    <?php  

    $result 
    mysql_query ("SELECT id,title,description FROM lessons",$db);

    $myrow mysql_fetch_array ($result); 
    $row_count mysql_result(mysql_query('SELECT COUNT(*) FROM lessons;'), 0);
    $query = array();
    while (
    count($query) < 1) {
        
    $query[] = '(SELECT * FROM lessons LIMIT '.rand(, $row_count).', 1)';
    }
    $query implode(' UNION '$query);
    $res mysql_query($query);


    do {
            
    printf ("<table align='center' class='lesson'>
             
             <tr>
             <td class='lesson_title'>
             <p class='lesson_name'><a href='view_lesson.php?id=%s'>%s</a></p>

             </tr>
             
             <tr>
             <td>%s</td>
             </tr>
             
             </table><br><br>"
    $myrow["id"], $myrow["title"],$myrow["description"]); 
                        
    }

    while (
    $myrow mysql_fetch_array ($result));    


    ?>
    мой код особо сильно не ругайте - это единственное, что у меня работает.

    Реализовать случайный выбор мне посоветовали как описано тут

    В частности вот этот код
    PHP:
    $row_count mysql_result(mysql_query('SELECT COUNT(*) FROM tTable;'), 0);
    $query = array();
    while (
    count($query) < 10) {
        
    $query[] = '(SELECT * FROM tTable LIMIT '.rand(, $row_count).', 1)';
    }
    $query implode(' UNION '$query);
    $res mysql_query($query);
    Я пробовал воедино соединить эти два кода - кроме ошибок на выходе ничего не получил. Кто нибудь помогите мне их совместить и уже дать код в конечном виде.
     
  2. Mongolor

    Mongolor

    Регистр.:
    5 дек 2007
    Сообщения:
    157
    Симпатии:
    29
    На сколько я понял ошибка в переменных была.
    PHP:
    <?php   

    //$result = mysql_query ("SELECT id,title,description FROM lessons",$db); 

    $row_count mysql_result(mysql_query('SELECT COUNT(*) FROM lessons;'), 0); 
    $query = array(); 
    while (
    count($query) < 1) { 
        
    $query[] = '(SELECT * FROM lessons LIMIT '.rand(, $row_count).', 1)'

    $query implode(' UNION '$query); 
    $result mysql_query($query); 
    $myrow mysql_fetch_array ($result);


    do { 
             
    printf ("<table align='center' class='lesson'> 
              
             <tr> 
             <td class='lesson_title'> 
             <p class='lesson_name'><a href='view_lesson.php?id=%s'>%s</a></p> 

             </tr> 
              
             <tr> 
             <td>%s</td> 
             </tr> 
              
             </table><br><br>"
    $myrow["id"], $myrow["title"],$myrow["description"]);  
                         


    while (
    $myrow mysql_fetch_array ($result));     


    ?>
     
  3. sanj

    sanj Постоялец

    Регистр.:
    5 июл 2008
    Сообщения:
    77
    Симпатии:
    34
    У меня ошибка возникла на 8 линии
    Parse error: syntax error, unexpected ',', expecting ')'
    А вы закомментировали строку, где от подключается к базе - эту переменную - это так надо или........
    Я сам не программист - и не знаю тонкостей.
    PHP:
    //$result = mysql_query ("SELECT id,title,description FROM lessons",$db);  
     
  4. Mongolor

    Mongolor

    Регистр.:
    5 дек 2007
    Сообщения:
    157
    Симпатии:
    29
    тут интерпритатор не может ругаться
    скинь весь скрипт в ЛС
     
  5. sorcer

    sorcer Создатель

    Регистр.:
    21 фев 2009
    Сообщения:
    35
    Симпатии:
    4
    Как раз может
    PHP:
     $query[] = '(SELECT * FROM lessons LIMIT '.rand(, $row_count).', 1)'
    Почему запятая стоит в обоих кодах ?
    (, $row_count)
    :smmne:
     
  6. sanj

    sanj Постоялец

    Регистр.:
    5 июл 2008
    Сообщения:
    77
    Симпатии:
    34
    У меня все равно - хоть с запятой, хоть без запятой - не работает. Подскажите как правильно - я уже не знаю как это еще реализовать - столько вариантов перепробовал - и только одни ошибки получил.
     
  7. Sanuch

    Sanuch

    Регистр.:
    25 май 2009
    Сообщения:
    207
    Симпатии:
    70
    синтаксис вызова функции rand
    Код:
    int rand  ( void  )
    int rand  ( int $min  , int $max  )
    в вашем случае необходимо указывать два параметра - минимальное и максимальное значения

    PHP:
    $query[] = '(SELECT * FROM lessons LIMIT '.rand(0$row_count).', 1)';
     
    sanj нравится это.
  8. Mongolor

    Mongolor

    Регистр.:
    5 дек 2007
    Сообщения:
    157
    Симпатии:
    29
    у тебя в коде исходная строчка примерно такая
    PHP:
    $result mysql_query ("SELECT id,title,description,author,date FROM articles",$db);
    Замени на
    PHP:
    $result mysql_query ("SELECT * FROM articles ORDER BY rand() LIMIT 2",$db);
    Данный вариант не очень оптимальный и при большом(10000) записей и больше будет тяжелым местом кода
     
    sanj нравится это.
Статус темы:
Закрыта.