Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
MySQL на примерах. Авторы: Кузнецов М.В., Симдянов И.В. Программирование. Ступени успешной карьеры. Авторы: Кузнецов М.В., Симдянов И.В. PHP на примерах (2 издание). Авторы: Кузнецов М.В., Симдянов И.В. Самоучитель PHP 5 / 6 (3 издание). Авторы: Кузнецов М.В., Симдянов И.В. PHP 5/6. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум PHP

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Вывод данных по маркерам пользователей
 
 автор: Olga32   (18.07.2016 в 09:14)   письмо автору
 
 

Хочу сделать вывод данных по маркерам пользователей. В базе данных пользователей есть поле marker. Это поле текстовое и в нем хранятся id некоторых страниц. Разделенные чертой например 3|5|7. В итоге должна быть проверка если в поле marker есть идентификатор, то все поля перекрашиваются в красный цвет если нет. То нечего не происходит. Я попыталась сделать но не чего не получилось. Вот код:

<?php
  
include "db.php";
  
  
  
$sql "SELECT * FROM user WHERE id = 1";
  
$res2 mysql_query($sql);
  
$row2 mysql_fetch_array($res2);
  
  
$idd = array();
  
  
$s explode('|'$row2['marker']);
  foreach (
$s as $key => $value)
  {
    
//Записываю данные в массив
    
$idd[] = $s[$key];
  }
  
  
   
$res mysql_query("SELECT * FROM test");
   echo 
"<table border=1>";
    while(
$row mysql_fetch_array($res))
    {
      if(
$row[id]==$idd[$row[id]])
       {
          echo 
"<tr><td><table><tr><td style='color:red'>$row[img1]</td><td>$row[name]</td></td></tr></table></td></tr><tr><td>$row[description]</td></tr>";
       }
       else
       {
          echo 
"<tr><td><table><tr><td>$row[img1]</td><td>$row[name]</td></td></tr></table></td></tr><tr><td>$row[description]</td></tr>";
       }
    }
    echo 
"</table>";

  
?>

Этот код тестовый помогите пожалуйста разобраться?

  Ответить  
 
 автор: Valick   (20.07.2016 в 11:41)   письмо автору
 
   для: Olga32   (18.07.2016 в 09:14)
 

для начала хранение данных в поле БД через разделитель это нарушение первого закона нормализации
как думаете почему это закон и почему он первый?

MySQL - это не просто свалка для хранения информации, это мощнейшая СУРБД для хранения и ОБРАБОТКИ информации.
Представьте себе феррари которую используют в качестве телеги для одной лошадки. Дико? Вот вы делаете то же самое. Вместо того что бы ехать на феррари, тащите всю БД в РНР и уже на стороне РНР (одной лошадкой) вы обрабатываете эту информацию.

в самом коде у вас неверная логика проверки
по идее должно быть так:
foreach ($s as $key => $value)
  {
    //Записываю данные в массив
    $idd[$value] = 1;
  }


if(isset($idd[$row[id]]))
       {
          echo "<tr><td><table><tr><td style='color:red'>$row[img1]</td><td>$row[name]</td></td></tr></table></td></tr><tr><td>$row[description]</td></tr>";
       }
       else
       {
          echo "<tr><td><table><tr><td>$row[img1]</td><td>$row[name]</td></td></tr></table></td></tr><tr><td>$row[description]</td></tr>";
       }
    }
    echo "</table>";


но на самом деле код лучше выкинуть целиком, это в корне неверный подход для решения задачи

для грамотного решения задачи у вас должна быть грамотная архитектура базы данных, у вас отношение между таблицами "многие ко многим" следовательно должна быть третья таблица связи, а не поле в котором 3|5|7

  Ответить  
 
 автор: Valick   (21.07.2016 в 13:27)   письмо автору
 
   для: Valick   (20.07.2016 в 11:41)
 

-

  Ответить  
 
 автор: Valick   (22.07.2016 в 11:48)   письмо автору
 
   для: Valick   (20.07.2016 в 11:41)
 

вот как-то так
<?php
//header('Content-Type: text/html; charset=utf-8');
include_once('../connect.php');
$query "SELECT * FROM `user` WHERE u_id = 1";
$res mysql_query($query);
if(
$res$name '<h1>'.mysql_result($res01).' '.mysql_result($res02).'</h1>';

$query 
"SELECT  p.p_id, up.u_id, p.p_ti
  FROM `pages` p 
    LEFT JOIN (SELECT * FROM `us_pa` WHERE u_id = 1) up USING(p_id) 
 ORDER BY p.p_id"
;
$res mysql_query($query) or dye(mysql_error());
if(
$res){
    if(
mysql_num_rows($res) > 0){
        
$table '';
        while(
$row mysql_fetch_assoc($res)){
            
$zebra = (++$a%2)? 'class = "odd"':'class = "even"';
            
$style = ($row[u_id])? 'class = "trred"':$zebra;
            
$table .= '<tr '.$style.'><td>'.$row[p_id].'</td><td>'.$row[p_ti].'</td></tr>';
        }
        
    }
}
?>
<!DOCTYPE html>
<html>
<head>
  <meta charset="utf-8" />
  <title></title>
  <style>
    table {
      border-collapse: collapse;
      width: 50%;
    }
    td {
      border: 1px solid grey;
      padding: 3px;
    }
    .trred{
      background: #F6D8CE;
    }
    .even{
      background: #EFFBFB;
    }
    .odd{
      background: #F7F8E0;
    }
    
    </style>
</head>
<body>
<?php echo $name?>
<table>
<?php echo $table?>
</table>
<footer>
  <div>
    <div class="copyright">
      <p>&copy; 20xx valick</p>
    </div>
  </div>
</footer>

</body>
</html>

  Ответить  
 
 автор: Valick   (21.07.2016 в 13:25)   письмо автору
 
   для: Olga32   (18.07.2016 в 09:14)
 

--
-- Структура таблицы `user`
--

CREATE TABLE IF NOT EXISTS `user` (
`u_id` int(2) NOT NULL AUTO_INCREMENT,
`u_fn` varchar(30) NOT NULL,
`u_ln` varchar(30) NOT NULL,
PRIMARY KEY (`u_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 AUTO_INCREMENT=3 ;

--
-- Дамп данных таблицы `user`
--

INSERT INTO `user` (`u_id`, `u_fn`, `u_ln`) VALUES
(1, 'Василий', 'Пупкин'),
(2, 'Александр', 'Ложкин');

  Ответить  
 
 автор: Valick   (21.07.2016 в 13:26)   письмо автору
 
   для: Olga32   (18.07.2016 в 09:14)
 

--
-- Структура таблицы `pages`
--

CREATE TABLE IF NOT EXISTS `pages` (
`p_id` int(2) NOT NULL AUTO_INCREMENT,
`p_ti` varchar(30) NOT NULL,
PRIMARY KEY (`p_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 AUTO_INCREMENT=10 ;

--
-- Дамп данных таблицы `pages`
--

INSERT INTO `pages` (`p_id`, `p_ti`) VALUES
(1, 'Страница1'),
(2, 'Страница2'),
(3, 'Страница3'),
(4, 'Страница4'),
(5, 'Страница5'),
(6, 'Страница6'),
(7, 'Страница7'),
(8, 'Страница8'),
(9, 'Страница9');

  Ответить  
 
 автор: Valick   (21.07.2016 в 13:28)   письмо автору
 
   для: Olga32   (18.07.2016 в 09:14)
 

--
-- Структура таблицы `us_pa`
--

CREATE TABLE IF NOT EXISTS `us_pa` (
`u_id` int(2) NOT NULL,
`p_id` int(2) NOT NULL,
PRIMARY KEY (`u_id`,`p_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

--
-- Дамп данных таблицы `us_pa`
--

INSERT INTO `us_pa` (`u_id`, `p_id`) VALUES
(1, 1),
(1, 5),
(1, 6),
(1, 8),
(2, 1),
(2, 3),
(2, 5);

  Ответить  
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования