|
|
|
| Хочу сделать вывод данных по маркерам пользователей. В базе данных пользователей есть поле 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>";
?>
|
Этот код тестовый помогите пожалуйста разобраться? | |
|
|
|
|
|
|
|
для: 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
(20.07.2016 в 11:41)
| | - | |
|
|
|
|
|
|
|
для: 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($res, 0, 1).' '.mysql_result($res, 0, 2).'</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>© 20xx valick</p>
</div>
</div>
</footer>
</body>
</html>
|
| |
|
|
|
|
|
|
|
для: 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, 'Александр', 'Ложкин'); | |
|
|
|
|
|
|
|
для: 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'); | |
|
|
|
|
|
|
|
для: 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); | |
|
|
|