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

Статус
В этой теме нельзя размещать новые ответы.

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);

Я пробовал воедино соединить эти два кода - кроме ошибок на выходе ничего не получил. Кто нибудь помогите мне их совместить и уже дать код в конечном виде.
 
На сколько я понял ошибка в переменных была.
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));     


?>
 
У меня ошибка возникла на 8 линии
Parse error: syntax error, unexpected ',', expecting ')'
А вы закомментировали строку, где от подключается к базе - эту переменную - это так надо или........
Я сам не программист - и не знаю тонкостей.
PHP:
//$result = mysql_query ("SELECT id,title,description FROM lessons",$db);
 
тут интерпритатор не может ругаться
скинь весь скрипт в ЛС
 
Как раз может
PHP:
 $query[] = '(SELECT * FROM lessons LIMIT '.rand(, $row_count).', 1)';

Почему запятая стоит в обоих кодах ?
(, $row_count)
:smmne:
 
У меня все равно - хоть с запятой, хоть без запятой - не работает. Подскажите как правильно - я уже не знаю как это еще реализовать - столько вариантов перепробовал - и только одни ошибки получил.
 
У меня все равно - хоть с запятой, хоть без запятой - не работает. Подскажите как правильно - я уже не знаю как это еще реализовать - столько вариантов перепробовал - и только одни ошибки получил.
синтаксис вызова функции rand
Код:
int rand  ( void  )
int rand  ( int $min  , int $max  )

в вашем случае необходимо указывать два параметра - минимальное и максимальное значения

PHP:
$query[] = '(SELECT * FROM lessons LIMIT '.rand(0, $row_count).', 1)';
 
  • Нравится
Реакции: sanj
у тебя в коде исходная строчка примерно такая
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
Статус
В этой теме нельзя размещать новые ответы.
Назад
Сверху