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
Форумы портала PHP.SU :: Версия для печати :: Помогите с условием
Форумы портала PHP.SU » » Вопросы новичков » Помогите с условием

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

1. VadiKO - 30 Июня, 2020 - 12:37:29 - перейти к сообщению
Все привет!

Уже давно мучаюсь и все время откладываю, но хочется уже решить вопрос.

Есть небольшой блок новостей, в нем несколько групп, на данный момент:

- важные;
- личные;
- прочие.
...
в будущем могут добавиться еще.

Вывожу их вот таким образом в три колонки (столбика):
CODE (htmlphp):
скопировать код в буфер обмена
  1.  
  2. echo '<table cellspacing="0" cellpadding="0" align="left" width="800"><tr>';
  3.        
  4. $g_news = mysql_query("SELECT * FROM `news_group` WHERE `status` = '1'");
  5.                
  6. while($x = mysql_fetch_array($g_news))
  7. {
  8.  
  9. echo '<tr><td colspan="3" class="option" colspan="3" align="left" ><hr /><strong><h2><span> '.$x['title'].' </span></h2></strong><hr /></td></tr>';
  10.        
  11.      $news = mysql_query("SELECT * FROM `news` WHERE `group-title` = '{$x['title']}' and `status` = '1'");
  12.  
  13.         $i=1;          
  14.                
  15.         while($w = mysql_fetch_array($news))
  16.         {
  17.        
  18.         echo '<td><img src="img/'.$w['img'].'.png" width="44" height="33"> '.$w['title'].' </td>';
  19.             if(($i%3) == 0 ) echo '</tr><tr>';
  20.             $i++;
  21.                
  22.         }
  23.  
  24. }
  25.                
  26. echo '</table>';
  27.  


В свою очередь пользователь может у себя выбрать какие новости ему отображать, для этого в таблице акаунта добавил три поля:

- important;
- personal;
- other.

И в эти поля вносятся значения - 0 если не надо отображать и значение - 1 если нужно отображать.

Загвоздка в том, каким образом сделать проверку какую группу новостей выводить, а какую нет, если пользователь ее у себя отключил.

news_group = important или personal или other и если у группы значение = 1 то выводим, если у какой-то из групп important или personal или other значение = 0, то не выводим эту группу новостей.

Полагаю здесь нужен массив... в общем мозгов не хватает, кто может помогите с решением.

Спасибо.
2. andrewkard - 01 Июля, 2020 - 06:58:59 - перейти к сообщению
По сути, сущности пользователь чужды группы новостей, это не его параметр, грубо говоря, тогда выносим их в отдельную таблицу, например user_vs_gnews, с колонками id,user_id,group_id. Теперь, что бы понять, какие группы выводить, нужно сделать один запрос.
Далее в запросе подставите:
CODE (SQL):
скопировать код в буфер обмена
  1. "SELECT * FROM `news` WHERE group_id IN ()


Цитата:
Внимание mysql_
Данное расширение устарело, начиная с версии PHP 5.5.0, и удалено в PHP 7.0.0. Используйте вместо него MySQLi или PDO_MySQL

Перепишите на MySQLi синтаксис похож, а лучше на PDO_MySQL

Ну и совет, всегда предпочитайте такую запись
PHP:
скопировать код в буфер обмена
  1.  
  2. <?PHP
  3. //тут выбираем данные
  4.  
  5. ?>
  6. <html>
  7. <table>
  8. <?PHP foreach($data as $row){ ?>
  9. <tr>
  10. <td><?=$row['str']?></td>
  11. </tr>
  12. <?PHP } ?>
  13. </table>
  14. </html>
  15.  
3. VadiKO - 01 Июля, 2020 - 07:49:40 - перейти к сообщению
Спасибо!

 

Powered by ExBB FM 1.0 RC1