Togle для редактирования данных Mysql из PHP - PullRequest
1 голос
/ 05 мая 2019

У меня есть таблица в моем php, где я показываю данные из моей таблицы пользователей mysql.В таблицу я добавил кнопку редактирования, так что, если вы нажмете кнопку, под таблицей будет показана форма, в которой вы можете редактировать некоторые поля содержимого таблицы, я также добавил кнопку удаления рядом с ней, чтобы удалить строкутаблицы, которую вы хотите, но эта кнопка работает правильно.

У меня проблема с кнопкой редактирования, которая при нажатии не отображает форму, которую я добавил под таблицей, нопереводит меня на страницу «registerTeacher.php? edit = 3», например.Нажав кнопку «Редактировать», он должен показать форму, которую можно редактировать, но он ничего не делает и не показывает никаких ошибок.Может кто-нибудь помочь мне найти, где проблема?Спасибо.

Это мой код indexAdmin.php:

<?php
include('server.php');
include('Security.php');
include('Conexion.php');
include('registerTeacher.php');
?>

<?php
$style = "style='display:none;'";
if (isset($_GET['edit'])) {
    $id = $_GET['edit'];
    $update = true;

    $record = mysqli_query($conn, "SELECT * FROM users WHERE id=$id");

    if (@count($record) == 1 ) {
        $n = mysqli_fetch_array($record);
        $username = $n['username']; 
        $email  = $n['email']; 
        $style = "style='display:block;'";
    }
}
?>

<!DOCTYPE html>
<html>
<head>
    <meta name="viewport" content="width=device-width, initial-scale=1">
    <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/4.7.0/css/font-awesome.min.css">
    <link rel="stylesheet" type="text/css" href="styleIndexAdmin.css">
    <meta charset="utf-8">
</head>
<body>

<!-- notification message -->
<?php if (isset($_SESSION['success'])) : ?>
    <div class="error success" >
        <h3>
            <?php
            echo $_SESSION['success'];
            unset($_SESSION['success']);
            ?>
        </h3>
    </div>
<?php endif ?>

<!-- logged in user information -->
<?php  if (isset($_SESSION['username'])) : ?>


    <div class="navbar" id="navbar">
        <a class="tablink" onclick="openPage('professorsRegistered', this, 'lightblue')" id="defaultOpen">Profesores</a>
    </div>

    <!----------- PROFESSROS REGISTERED TABLE ----------->

    <div id="professorsRegistered" class="tabcontent"></br><br>

        <table class="professorsRegistered">
            <tr>
                <th colspan="3"><h2>PROFESSORS REGISTERED</h2></th>
            </tr>
            <tr>
                <th> Name </th>
                <th> Edit </th>
                <th> Delete </th>
            </tr>

        <?php
        $result = $conn->query($sql);
        $sql = "SELECT * FROM users WHERE rol='profesor'"; 
        $result = $conn->query($sql);
        if ($result->num_rows==0){
            echo 'No professors';
        }else{
            while($row = $result->fetch_assoc()) {
                echo "<tr>
                          <td>".$row["username"]."</td>
                          <td><a href='registerTeacher.php?edit=".$row["id"]."' class='edit_btn' ><i class='fa fa-pencil-square-o' style='cursor:pointer;'></i></a></td>

                          <td><a class='eliminate' onClick=\"javascript: return confirm('Confirm to delete');\" href=\"deleteTeacher.php?id=".$row['id']."\">X</a></td>
                          </tr>";
            }
        }
        ?>
        </table><br><br>

        <!------- FORM TO EDIT REGISTERED TEACHERS ---------->
        <form method="post" action="registerTeacher.php" <?php echo $style;?>>
            <!----- newly added field--->
            <input type="hidden" name="id" value="<?php echo $id; ?>">

            <div class="input-group">
                <label>USER</label>
                <input type="text" name="username" value="<?php echo $username; ?>">
            </div>
            <div class="input-group">
                <label>EMAIL</label>
                <input type="email" name="email" value="<?php echo $email; ?>">
            </div>
            <div class="input-group">
                <!--------BUTTON----->
                <?php if ($update == true): ?>
                    <button class="btn_update" type="submit" name="update">EDIT</button>
                <?php endif ?>
            </div>
        </form>
    </div>

<?php endif ?>

<script>
    function getUrlVars(){
        var vars = {};
        var parts = window.location.href.replace(/[?&]+([^=&]+)=([^&]*)/gi, function(m,key,value){
            vars[key] =value;
        });
        return vars;
    }

    function openPage(pageName,elmnt,color) {
        var i, tabcontent, tablinks;
        tabcontent = document.getElementsByClassName("tabcontent");
        for (i = 0; i < tabcontent.length; i++) {
            tabcontent[i].style.display = "none";
        }
        tablinks = document.getElementsByClassName("tablink");
        for (i = 0; i < tablinks.length; i++) {
            tablinks[i].style.backgroundColor = "";
        }
        document.getElementById(pageName).style.display = "block";
        elmnt.style.backgroundColor = color;
    }
    p = getUrlVars()["page"];
    //alert(p);
    if (p==undefined){
        document.getElementById("defaultOpen").click();
    }else{
        openPage(p, this, 'lightblue');
    }

</script>

</body>

<?php if (isset($_SESSION['message'])): ?>
    <div class="msg">
        <?php
        echo $_SESSION['message'];
        unset($_SESSION['message']);
        ?>
    </div>
<?php endif ?>
</html>

Это мой файл registerTeacher.php:

<?php
include('Conexion.php');

$username = "";
$email = "";
$errors = array();
$id = 0;
$update = false;

// UPDATE
if (isset($_POST['update'])) {
    $id = $_POST['id'];
    $username = $_POST['username']; 
    $email = $_POST['email'];

    mysqli_query($conn, "UPDATE users SET username='$username', email='$email' WHERE id=$id");
    $_SESSION['message'] = "User edited!";
    header("Location: indexAdmin.php?page=professors");
}
?>

1 Ответ

2 голосов
/ 05 мая 2019

Поскольку <a href=..> используется для перенаправления на некоторую страницу в вашем случае, она перенаправляет на страницу registerTeacher.php, как вы указали в атрибуте href. Вместо этого вы можете сделать следующее:

При нажатии ниже <a href..> вы можете поместить форму на registerTeacher.php, как показано ниже:

<?php 

    if (isset($_GET['edit'])) {
        $id = $_GET['edit'];
        $update = true;

        $record = mysqli_query($conn, "SELECT * FROM users WHERE id=$id");

        if (@count($record) == 1 ) {
            $n = mysqli_fetch_array($record);
            $username = $n['username']; 
            $email  = $n['email']; 
            $style = "style='display:block;'";
        }
    }
?>

     <!------- FORM TO EDIT REGISTERED TEACHERS ---------->
        <form method="post" action="abcpage.php" <?php echo $style;?>>
            <!----- newly added field--->
            <input type="hidden" name="id" value="<?php echo $id; ?>">

            <div class="input-group">
                <label>USER</label>
                <input type="text" name="username" value="<?php echo $username; ?>">
            </div>
            <div class="input-group">
                <label>EMAIL</label>
                <input type="email" name="email" value="<?php echo $email; ?>">
            </div>
            <div class="input-group">
                <!--------BUTTON----->
                <?php if ($update == true): ?>
                    <button class="btn_update" type="submit" name="update">EDIT</button>
                <?php endif ?>
            </div>
        </form>

Затем вы можете передать эти данные своему action="abcpage.php". И написать, как показано ниже на этой странице, например:

// UPDATE
if (isset($_POST['update'])) {
    $id = $_POST['id'];
    $username = $_POST['username']; 
    $email = $_POST['email'];

    mysqli_query($conn, "UPDATE users SET username='$username', email='$email' WHERE id=$id");
    $_SESSION['message'] = "User edited!";
    header("Location: indexAdmin.php?page=professors");
}
?>

Надеюсь, это поможет!

Примечание : Попробуйте также использовать подготовленный оператор этоСейф Сейф.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...