const button1 = document.querySelector('.sidebar__button');
const field = document.querySelector('.field');
const menu = document.querySelector('.menu');
button1.addEventListener('click', () => {
menu.classList.replace('active' , 'hidden');
});
field.addEventListener('click', () => {
menu.classList.replace('hidden', 'active');
});
<div class="answer-block">
<button class="viewAnswer"> </button>
<button class="closeAnswer"></button>
<div class="answer-comment"> .... </div>
</div>
const answers = document.querySelectorAll('.answer-block');
answers.forEach(answer => {
const open = answer.querySelector('.viewAnswer'),
const close = answer.querySelector('.closeAnswer');
const comment = answer.querySelector('.answer-comment'),
open.addEventListener('click', function(){
comment.style.display = 'block';
open.style.display = 'none';
close.style.display = 'block';
});
close.addEventListener('click', function(){
comment.style.display = 'none';
open.style.display = 'block';
close.style.display = 'none';
});
});
for (let i = 0; i < answer_comment.length; i++) {
viewAnswer[i].addEventListener.addEventListener('click', function(){
answer_comment[i].style.display = 'block';
this.style.display = 'none';
close[i].style.display = 'block';
})
}
реально годного сайта/канала на тему canvas. Именно что-то из современного.да там ничего не менялось лет 15,разве что новые библиотеки-обертки появляются иногда, как тот-же p5js.
ini_set('error_reporting',E_ALL);
ini_set('display_errors', 1);
и убедиться что ошибок выполнения нет. Естественно, подключение должно быть настроено на вывод ошибок. Так же убрать бессмысленный биндинг $stmt->execute(['id'=>id]);
, где внутри даже не переменная, а какая-то фигня...INNER JOIN category ON category.id=post.cat_id
, выполнить запрос$user_input = '<script>alert("Hello world");</script>';
$safe_input = htmlspecialchars($user_input, ENT_QUOTES, 'UTF-8');
// $safe_input = '<script>alert("Hello world");</script>';
$title = $actualTitle ?: '';
$path = $someRealpath ?: '/img/default_placeholder.png';
$stmt = $pdo->prepare("SELECT * FROM category WHERE 'id'=:id AND 'name'=:name");
$stmt->execute(['id'=>$id, 'name'=>$name]); //откуда эти ид и нэйм? И зачем нэйм если есть ид?
$res = $stmt->fetch(PDO::FETCH_ASSOC);
if ($id = $_GET["cat_id"]) { //опять, что за ид и почему мы его сравниваем с гет переменной?
echo $res[$id];
}
массив гет я как раз не хотел в pdo запихивать..не знаю чет мне кажется опасно этоВы запихиваете не в pdo, а в prepared statements, так что безопасно. Опять же - хорошо что используете и попался толковый пример, плохо что не понимаете зачем это и как работает. В итоге код должен быть именно как написано у SagePtr
$stmt = $pdo->prepare("SELECT * FROM category WHERE `id`=:id");
$stmt->execute(['id'=>$_GET['cat_id']]);
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
</head>
<body>
<div class="ava">
<p>К</p>
</div>
</body>
<style>
.ava{
width: 30px;
height: 30px;
background-color: rgb(115, 82, 147);
border-radius: 50%;
display: flex;
justify-content: center;
color:white;
align-items: center;
}
</style>
</html>
{% for user in users %}
<div class="user-info">
<div class="user-info-avatar" id="avatar"></div>
<div class="user-info-name" id="name"></div>
</div>
{% endfor %}