Ниже прилагаю весь код:
Первый файл всех функций: fn.php
<?php
/*
* подключение к базе
*
*/
function connect_db(){
$mysqli = new mysqli('localhost','root','12345','mybase');
$mysqli->set_charset("cp1251");
if($mysqli->connect_error){
die('Connect Error: '.$mysqli->connect_error);
}
return $mysqli;
}
function select_list(){
$mysqli = connect_db();
$sql = "SELECT * FROM list";
if($res = $mysqli->query($sql)){
if($res->num_rows > 0){
$row= $res->fetch_all(MYSQLI_ASSOC);
}
}else {
echo 'Запрос не прошел' . $mysqli->error;
}
return $row;
}
/*
* Удаление записей
*
*/
function del(){
$mysqli = connect_db();
if(isset($_GET['del'])){
$id = $_GET['del'];
$sql = "DELETE FROM list WHERE id = ? LIMIT 1";
if($stmt = $mysqli->prepare($sql)){
$stmt->bind_param("i",$id);
$stmt->execute();
$stmt->close();
header("Location: view.php");
} else{
echo "Запрос к базе данных не прошел".$mysqli->error;
}
}
}
/*
* добавление новой записи
*
*/
function record(){
$mysqli = connect_db();
if(isset($_POST['firstname'])){
$firstname = $_POST['firstname'];
$lastname = $_POST['lastname'];
$firstname = mysqli_real_escape_string($mysqli, $firstname);
$lastname = mysqli_real_escape_string($mysqli, $lastname);
if($firstname != '' && $lastname != ""){
$sql = "INSERT INTO list VALUES(NULL, '$firstname', '$lastname')";
if($mysqli->query($sql)){
header("Location: view.php");
} else {
echo "Запрос не прошел ". $mysqli->error;
}
} else {
echo "<h3>Необходимо заполнить поля</h3>";
}
}
}
/*
* обновление записи
*
*/
function edit(){
$mysqli = connect_db();
if(isset($_POST['id'])){
$id = $_POST['id'];
$firstname = $_POST['firstname'];
$lastname = $_POST['lastname'];
$sql = "UPDATE list SET firstname = ?, lastname = ? WHERE id = ?";
if($stmt = $mysqli->prepare($sql)){
$stmt->bind_param("ssi",$firstname,$lastname,$id);
$stmt->execute();
$stmt->close();
header("Location: view.php");
}
} else{
echo "Запрос не прошел";
}
}
/*
*
*вывод одной записи
*/
function select_one(){
$mysqli = connect_db();
if(isset($_GET['edit'])){
$id = $_GET['edit'];
$sql = "SELECT * FROM list WHERE id = '$id' LIMIT 1";
if($res = $mysqli->query($sql)){
if($res->num_rows > 0) {
$row = $res->fetch_assoc();
}else{
echo "Запрос к базе данных не прошел ".$mysqli->error;
}
}
}
return $row;
}
?>
Главная страница: view.php
<?php
require_once 'fn.php';
?>
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html;
charset=cp1251">
<title>Список</title>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="myscript.js"></script>
</head>
<body>
<h2>MYSQLI CRUD</h2>
<h3 style="text-align: center;">Список</h3>
<div style="margin: 0 auto; width:400px;">
<table border="2">
<tr>
<th>ID</th>
<th>Имя</th>
<th>Фамилия</th>
<th>Редактировать</th>
<th>Удалить</th>
</tr>
<?php foreach(select_list() as $val):?>
<tr>
<td><?php echo $val['id']?></td>
<td><?php echo $val['firstname']?></td>
<td><?php echo $val['lastname']?></td>
<td><button><a href="edit.php?edit=<?php echo $val['id']?>">Редактировать</a></button></td>
<td><button data-del="<?php echo $val['id']?>">Удалить</button></td>
</tr>
<?php endforeach; ?>
</table>
</div>
<p><a href="record.php">Добавить запись</a></p>
</body>
</html>
Файл редактирования: edit.php
<?php
include_once 'fn.php';
if(isset($_POST['id'])){
edit();
}
if(isset($_GET['edit'])){
$row = select_one();
?>
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html;
charset=cp1251">
<title></title>
</head>
<body>
<h2>Редактируем запись</h2>
<div style="margin:0 auto; width:450px;">
<fieldset>
<legend>Редактируем запись</legend>
<form method="POST" action="<?php $_SERVER['PHP_SELF']?>">
<label>Введите имя *:</label><br/>
<input type="text" name="firstname" value="<?php echo $row['firstname']?>"/><br/>
<label>Введите фамилию *:</label><br/>
<input type="text" name="lastname" value="<?php echo $row['lastname']?>" /><br/>
<input type="hidden" name="id" value="<?php echo $row['id ']?>"/>
<input type="submit" value="Сделать запись" />
</form>
<p>Поля отмеченные * требуют заполнения</p>
</fieldset>
</div>
</body>
</html>
<?php
}else{
header("Location: view.php");
}
?>
Всё работает отлично, кроме кнопки "редактировать".