Добавление информации в базу данных из веб приложения

Главная » Видеоуроки » PHP+MySQL » Добавление информации в базу данных из веб приложения
Мы продолжаем разработку веб приложения в связке php+mysql. В этом уроке мы реализуем механизм добавления игрока в нашу базу данных через пользовательский интерфейс.
Сначала мы добавим форму добавления в скрипт players.php. В этой форме будут два поля — имя игрока и страна (в виде выпадающего списка).
Отметим, что выпадающий список стран можно написать вручную, но этот способ очень непродуктивный, поэтому этот процесс нам нужно автоматизировать. Сделаем мы это, написав функцию getAllCountries.

Далее нам останется принять данные с нашей форму. Обращаю внимание, что в форме я не указал action. В таких случаях считается, что форма передала данные на эту же страницу.

Сама функция добавления addPlayer заключается в написании запроса типа INSERT.

В конце урока предлагаю вам домашнее задание, состоящее из 4 пунктов:
1. Проверить на пустоту все данные формы.
2. Вывести сообщение, если ничего не введено в форму.
2. Добавить в форму поле «команда»
3. «Прикрепить» js/jquery валидацию.

Код урока (players.php)

<!DOCTYPE html>
<html lang="en">
<head>
	<meta charset="UTF-8">
	<title>Игроки</title>
	<link href="//maxcdn.bootstrapcdn.com/bootstrap/3.3.6/css/bootstrap.min.css" rel="stylesheet">
	<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.0/jquery.min.js"></script>
	<script src="//maxcdn.bootstrapcdn.com/bootstrap/3.3.6/js/bootstrap.min.js"></script>
</head>
<body>
	<header>
		<nav class="navbar navbar-default" role="navigation">
			<div class="container-fluid">
				<div class="navbar-header">
					<button type="button" class="navbar-toggle" data-toggle="collapse" data-target=".navbar-ex1-collapse">
						<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 navbar-ex1-collapse">
					<ul class="nav navbar-nav">
						<li><a href="index.php">Главная</a></li>
						<li><a href="players.php">Игроки</a></li>
						<li><a href="teams.php">Команды</a></li>
						<li><a href="countries.php">Страны</a></li>
					</ul>
				</div>
			</div>
		</nav>
	</header>

	<div id="content">
		<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><a href="edit.php?player_id=<?php echo $player['player_id'];?>"><?php echo $player['player_name']; ?></a></td>
						<td><?php echo $player['team_name']; ?></td>
						<td><?php echo $player['country_name']; ?></td>
					</tr>
				<?php } ?>
			</table>

			<button id="addButton" class="btn btn-default">Добавить игрока</button>

			<form action="" method="POST" role="form" style="display: none; margin-top: 20px;">
		
			<div class="form-group">
				<label for="">Введите имя</label>
				<input type="text" class="form-control" id="name" name="name" placeholder="Введите имя">
			</div>

			<div class="form-group">
				<select name="country" class="form-control" id="country">
				<?php
					$countries = getAllCountries($db);
					foreach ($countries as $key => $value) {
						echo "<option value=".$value['country_id'].">".$value['country_name']."</option>";	
					}	
				?>
				</select>
			</div>
			
			<button type="submit" class="btn btn-default">Добавить</button>
		</form>
		</div>

		<?php
			if(isset($_POST['name']) && $_POST['name'] != '') {
				$name = $_POST['name'];
				$countryId = $_POST['country'];	
				addPlayer($db, $name, $countryId);
			}
			
		?>

	</div>

	<footer>
		
	</footer>

	<script>
		$("#addButton").click(function(){
			$("form").slideDown();
		});
	</script>
</body>
</html>

Код урока (api.php)

<?php

function getAllPlayers($db) {
	$sql = "SELECT * FROM players
			LEFT JOIN teams ON players.team_id = teams.team_id
			LEFT JOIN countries ON players.country_id = countries.country_id;
	";
	$result = array();

	$stmt = $db->prepare($sql);

	$stmt->execute();

	while($row = $stmt->fetch(PDO::FETCH_ASSOC)) {
		$result[$row['player_id']] = $row;
	}

	return $result;
}

function getAllTeams($db) {
	$sql = "SELECT * FROM teams
			INNER JOIN countries ON teams.country_id = countries.country_id;
	";
	$result = array();

	$stmt = $db->prepare($sql);

	$stmt->execute();

	while($row = $stmt->fetch(PDO::FETCH_ASSOC)) {
		$result[$row['team_id']] = $row;
	}

	return $result;
}

function getPlayerById($db, $id) {
	$sql = "SELECT * FROM players
			WHERE player_id = :player_id
			";

	$stmt = $db->prepare($sql);
	$stmt->bindValue('player_id', $id, PDO::PARAM_INT);
	$stmt->execute();
	$row = $stmt->fetch(PDO::FETCH_ASSOC);
	return $row;
}

function savePlayer($db, $name, $id) {
	$sql = " UPDATE players
			 SET player_name = :player_name
			 WHERE player_id = :player_id
	";

	$stmt = $db->prepare($sql);
	$stmt->bindValue(':player_name', $name, PDO::PARAM_STR);
	$stmt->bindValue(':player_id', $id, PDO::PARAM_INT);

	$stmt->execute();
}


function getAllCountries($db) {
	$sql = "SELECT * FROM countries";
	$res = array();

	$stmt = $db->prepare($sql);

	$stmt->execute();

	while($row = $stmt->fetch(PDO::FETCH_ASSOC)) {
		$res[$row['country_id']] = $row;
	}

	return $res;
}

function addPlayer($db, $playerName, $countryId) {
	$sql = "INSERT INTO players(player_name, country_id) 
			VALUES(:player_name, :country_id)
	";

	$stmt = $db->prepare($sql);
	$stmt->bindValue(':player_name', $playerName, PDO::PARAM_STR);
	$stmt->bindValue(':country_id', $countryId, PDO::PARAM_INT);

	$stmt->execute();

}

0 Комментариев

Оставить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *


Срок проверки reCAPTCHA истек. Перезагрузите страницу.

Pin It on Pinterest

Share This