Не работает кнопка “Редактировать”

322
27 мая 2017, 19:33

Здравствуйте, подскажите почему не работает кнопка "Редактировать"? Ниже прилагаю весь код: Первый файл всех функций: 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");
}
    ?>

Всё работает отлично, соединение с бд, добавление, удаление, а вот кнопка редактировать не реагирует, в чем проблема?

READ ALSO
Обрезка по строке &#39;,&#39;// через функцию explode

Обрезка по строке ','// через функцию explode

Не могу обрезать строку по строке ','// (апостроф, запятая, апостроф, два слэша)Делаю так

256
Уменьшить нагрузку на сервер через Sleep()

Уменьшить нагрузку на сервер через Sleep()

ВопросЕсли делать искусственную паузу после каждого запроса, например:

315
Соединить 4 таблицы mysql

Соединить 4 таблицы mysql

Как можно отобразить 4 таблицы mysql в одной html на php странице? Например есть 4 таблицы general, class, atribute, dannyeНадо чтобы они всю инфу выводили в 1 общую

278
Как в simple-html-dom получить реальный URL?

Как в simple-html-dom получить реальный URL?

Например, эта ссылка в браузере открывается "как есть"https://eda

310