Создание веб приложения на php+MySql. Введение в PDO
Что касается функции getAllPlayers, которую мы напишем, то логика ее работы довольно проста: во-первых в функцию необоходимо передать объект $db, определенный в файле db.php. Это необходимо, потому что данная и последующие наши функции будут непосредственно обращаться к базе данных. Далее мы создаем строковую переменную в виде SQL запроса и подготавливаем его.
Подготовленные запросы хороши тем, что инициализируются один раз, а дальше в них подставляются только необходимые параметры. По сути это некоторые шаблоны для MySQl.
После этого запрос выполняется при помощи функции execute. А далее начинается работа с данными. Важно понимать, что эти данные надо разобрать для вида, понятного и удобного для php. Для этого существуют функции fetch, fetchAll и пр. Функции fetch имеют один важный параметр — стиль разбора. Выражаясь проще, функция разбирает данные в определенной структуре для php (массив, объект и пр.).
Далее данные получаются из вызова функции и выводятся в бразуер.
Код урока (api.php)
<?php
function getAllPlayers($db) {
$sql = "SELECT * FROM players";
$result = array();
$stmt = $db->prepare($sql);
//print_r($stmt);
$stmt->execute();
//print_r($stmt);
while($row = $stmt->fetch(PDO::FETCH_ASSOC)) { // рассмотреть fetchAll (режим FETCH_BOTH)
$result[$row['player_id']] = $row;
/*echo "<pre>";
print_r($result[$row['player_id']]);
echo "</pre>";*/
}
//$result = $stmt->fetchAll();
/*echo "<pre>";
print_r($result);
echo "</pre>";*/
return $result;
}
Код урока (index.php)
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title></title>
<link href="https://cdnjs.cloudflare.com/ajax/libs/twitter-bootstrap/3.3.7/css/bootstrap.css" rel="stylesheet" crossorigin="anonymous">
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.1.0/jquery.min.js"></script>
<script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/js/bootstrap.min.js" crossorigin="anonymous"></script>
</head>
<body>
<header>
<nav class="navbar navbar-default">
<div class="container-fluid">
<div class="navbar-header">
<button type="button" class="navbar-toggle collapsed" data-toggle="collapse" data-target="#bs-example-navbar-collapse-1" aria-expanded="false">
<span class="sr-only">Toggle navigation</span>
<span class="icon-bar"></span>
<span class="icon-bar"></span>
<span class="icon-bar"></span>
</button>
<a class="navbar-brand" href="#">Sport CRM</a>
</div>
<div class="collapse navbar-collapse" id="bs-example-navbar-collapse-1">
<ul class="nav navbar-nav">
<li><a href="/">Главная</a></li>
<li><a href="players.php">Игроки</a></li>
<li><a href="teams.php">Команды</a></li>
</ul>
</div>
</div>
</nav>
</header>
<div class="container-fluid">
<?php include 'db.php'; ?>
<?php include 'api.php'; ?>
<?php
$players = getAllPlayers($db);
?>
<table class="table table-bordered">
<tr>
<th>Игрок</th>
<th>Команда</th>
<th>Страна</th>
</tr>
<?php foreach ($players as $player) { ?>
<tr>
<td><?php echo $player['player_name']; ?></td>
</tr>
<?php } ?>
</table>
</div>
<footer>
</footer>
</body>
</html>
0 Комментариев