в каком месте нужно закрывать соединение с БД?
В каждом методе?
// Не давайте общие имена конкретным реализациям
// Почитайте, проникнитесь и используйте PSR-2 и PSR-4
class DataBase
{
private $mysqli;
private $dbConfig;
public function __construct()
{
// Класс по работе с БД не должен знать даже о существовании неких файлов, где-то там. Это не его забота.
// Передавайте в конструктор готовое подключение к БД, если нужно.
$this->dbConfig = require "db/database_config.php";
// Вот никак понять не могу, за что так любят этот mysqli, ну что в нем прям такого раз такого, по сравнению с PDO?
$this->mysqli = mysqli_connect($this->dbConfig['host'], $this->dbConfig['username'], $this->dbConfig['password'], $this->dbConfig['db_name']);
// Почему вдруг класс по работе с БД занимается операцией вывода?
// Если что-то не так - бросайте исключение, ни каких echo, die, exit, trigger_error
if (mysqli_connect_errno($this->mysqli)) {
echo "Не удалось подключиться к MySQL: " . mysqli_connect_error();
}
}
// Вы не проверяете аргументы, это плохо, очень.
// Что бы нагнуть ваш проект достаточно передать в любой из аргументов: '1; DROP TABLE employees;'
public function getEmployees($where='1',$start, $perPage){
// ЗАБУДЬТЕ про подстановку данных через конкатенацию, используйте плейсхолдеры
// http://php.net/manual/ru/pdo.prepared-statements.php
$sql="SELECT e.name,e.birthday,d.title_dep,p.title_pos,t.title_type,e.salary FROM `employees` AS e INNER JOIN departments AS d ON e.id_dep=d.id
INNER JOIN positions AS p ON e.id_pos=p.id
INNER JOIN payment_types AS t ON e.id_type=t.id where $where LIMIT $start,$perPage";
// Вам ни переменная $res, ни $row не нужны
$res = $this->mysqli->query($sql);
$row=$res->fetch_all(MYSQLI_ASSOC);
return $row;
}
}
Можно ли найти человека на почасовую оплату на таких условиях? И где можно найти, чтобы работала делалась добросовестно?Встречные вопросы:
<div class="list">
<div class="item">...</div>
<div class="item">...</div>
<div class="item">...</div>
</div>
.list
{
display: -webkit-flex;
display: -ms-flexbox;
display: flex;
-webkit-flex-wrap: wrap;
-ms-flex-wrap: wrap;
flex-wrap: wrap;
}
.item
{
display: -webkit-flex;
display: -ms-flexbox;
display: flex;
}
position: relative;
для .test1 укажите. Без этого зеленый прямоугольник цепляется к body.For absolutely positioned elements, the top property sets the top edge of an element to a unit above/below the top edge of its nearest positioned ancestor. Note: If an absolute positioned element has no positioned ancestors, it uses the document body, and moves along with page scrolling. Note: A "positioned" element is one whose position is anything except static.
Tip: A positioned element is an element with the position property set to: relative, absolute, or fixed.
function isFunction(fn) {
var obj= {};
return fn && obj.toString.call(fn) === '[object Function]';
}
callback = isFunction(callback) || function() {};
<select name="doctors">
<option disabled selected>Все специальности</option>
<option value="pediatric-dentist">Детский стамотолог</option>
<option value="surgeon">Хирург</option>
</select>
<div class="item">
<div class="doctor surgeon">
<!-- Дальнейший код карточки -->
</div>
</div>
$('[name="doctor"]').on('change', function() {
var selector = '.' + $(this).val();
var chosenItems = $(selector).closest('.item');
// Сокрытие всех блоков
$('.item').hide();
// Показ выбранных блоков
chosenItems.show();
});
var toggle = document.querySelector('[name="doctors"]');
toggle.addEventListener('change', function() {
var chosenClass = this[this.selectedIndex].value;
var items = document.querySelectorAll('.item');
Array.prototype.forEach.call(items, function(item) {
var child = item.children[0];
var childClasses = child.className.split(' ');
if (childClasses.indexOf(chosenClass) === -1) {
item.style.display='none';
} else {
item.style.display='block';
}
});
});
dataType: 'json'
в ajax запросе.$.ajax({
url: 'http://www.google.com',
type: 'get',
dataType: 'jsonp',
success: function(data) {
// data = { response: '...' }
var el = $(data.response).find('#id').html();
$('div').html(el);
}
});
$.ajax({
url: 'https://toster.ru/q/331984',
dataType: 'html' ,
type: 'get',
success: function(data) {
var el = $(data).find('h1.question__title');
$('body').html(el);
}
});