티스토리 뷰

node.js/Vue.js

vue.js + php

명품_체인지업 2021. 4. 27. 15:29

<!DOCTYPE html>
<html lang="en">
  <head>
    <meta charset="UTF-8" />
    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
    <title>Vue+PHP</title>
  </head>
  <link rel="stylesheet" href="https://stackpath.bootstrapcdn.com/bootstrap/4.5.2/css/bootstrap.min.css" integrity="sha384-JcKb8q3iqJ61gNV9KGb8thSsNjpSL0n8PARn9HuZOnIxN0hoP+VmmDGMN5t9UJ0Z" crossorigin="anonymous" />
  <script src="https://kit.fontawesome.com/c543e84baf.js" crossorigin="anonymous" ></script>
  <style type="text/css">
    #overlay {
      position: fixed;
      top: 0;
      bottom: 0;
      left: 0;
      right: 0;
      background: rgba(0, 0, 0, 0.6);
    }
  </style>
  <body>
    <div id="app">
      <div class="container-fluid">
        <div class="row bg-dark">
          <div class="col-lg-12">
            <p
              class="text-center text-light display-4 pt-2"
              style="font-size: 25px"
            >
              CRUD Application Using Vue.js, PHP & MySQLi
            </p>
          </div>
        </div>
      </div>
      <div class="container">
        <div class="row mt-3">
          <div class="col-lg-6">
            <h3 class="text-info">Registered Users</h3>
          </div>
          <div class="col-lg-6">
            <button class="btn btn-info float-right" @click="showAddModal=true">
              <i class="fas fa-user"></i>&nbsp;&nbsp;Add New User
            </button>
          </div>
        </div>
        <hr class="bg-info" />
        <div class="alert alert-danger" v-if="errorMsg">{{ errorMsg }}</div>
        <div class="alert alert-success" v-if="successMsg">
          {{ successMsg }}
        </div>

        <!-- Displaying Records -->
        <div class="row">
          <div class="col-lg-12">
            <table class="table table-bordered table-striped">
              <thead>
                <tr class="text-center bg-info text-light">
                  <th>ID</th>
                  <th>Name</th>
                  <th>Email</th>
                  <th>Phone</th>
                  <th>Edit</th>
                  <th>Delete</th>
                </tr>
              </thead>
              <tbody>
                <tr class="text-center" v-for="user in users">
                  <td>{{ user.id }}</td>
                  <td>{{ user.name }}</td>
                  <td>{{ user.email }}</td>
                  <td>{{ user.phone }}</td>
                  <td>
                    <a
                      href="#"
                      class="text-success"
                      @click="showEditModal=true;selectUser(user);"
                      ><i class="fas fa-edit"></i
                    ></a>
                  </td>
                  <td>
                    <a
                      href="#"
                      class="text-danger"
                      @click="showDeleteModal=true; selectUser(user);"
                      ><i class="fas fa-trash-alt"></i
                    ></a>
                  </td>
                </tr>
                <tr class="text-center">
                  <td>2</td>
                  <td>최군</td>
                  <td>1111@gmail.com</td>
                  <td>123-3456</td>
                  <td>
                    <a href="#" class="text-success"
                      ><i class="fas fa-edit"></i
                    ></a>
                  </td>
                  <td>
                    <a href="#" class="text-danger"
                      ><i class="fas fa-trash-alt"></i
                    ></a>
                  </td>
                </tr>
                <tr class="text-center">
                  <td>3</td>
                  <td>이군</td>
                  <td>1111@gmail.com</td>
                  <td>123-3456</td>
                  <td>
                    <a href="#" class="text-success"
                      ><i class="fas fa-edit"></i
                    ></a>
                  </td>
                  <td>
                    <a href="#" class="text-danger"
                      ><i class="fas fa-trash-alt"></i
                    ></a>
                  </td>
                </tr>
              </tbody>
            </table>
          </div>
        </div>
      </div>

      <!-- Add New User Model -->
      <div id="overlay" v-if="showAddModal">
        <div class="modal-dialog">
          <div class="modal-content">
            <div class="modal-header">
              <h5 class="modal-title">Add New User</h5>
              <button type="button" class="close" @click="showAddModal=false">
                <span aria-hidden="true">&times;</span>
              </button>
            </div>

            <div class="modal-body p-4">
              <form action="#" method="post">
                <div class="form-group">
                  <input
                    type="text"
                    name="name"
                    class="form-control form-control-lg"
                    placeholder="Name"
                    v-model="newUser.name"
                  />
                </div>
                <div class="form-group">
                  <input
                    type="email"
                    name="email"
                    class="form-control form-control-lg"
                    placeholder="E-Mail"
                    v-model="newUser.email"
                  />
                </div>
                <div class="form-group">
                  <input
                    type="tel"
                    name="phone"
                    class="form-control form-control-lg"
                    placeholder="Phone"
                    v-model="newUser.phone"
                  />
                </div>
                <div class="form-group">
                  <button
                    class="btn btn-info btn-block btn-lg"
                    @click="showAddModal=false; addUser(); clearMsg();"
                  >
                    Add User
                  </button>
                </div>
              </form>
            </div>
          </div>
        </div>
      </div>
      <!-- End. Add New User Model -->

      <!-- Edit User Model -->
      <div id="overlay" v-if="showEditModal">
        <div class="modal-dialog">
          <div class="modal-content">
            <div class="modal-header">
              <h5 class="modal-title">Edit User</h5>
              <button type="button" class="close" @click="showEditModal=false">
                <span aria-hidden="true">&times;</span>
              </button>
            </div>

            <div class="modal-body p-4">
              <form action="#" method="post">
                <div class="form-group">
                  <input
                    type="text"
                    name="name"
                    class="form-control form-control-lg"
                    placeholder="Name"
                    v-model="currentUser.name"
                  />
                </div>
                <div class="form-group">
                  <input
                    type="email"
                    name="email"
                    class="form-control form-control-lg"
                    placeholder="E-Mail"
                    v-model="currentUser.email"
                  />
                </div>
                <div class="form-group">
                  <input
                    type="tel"
                    name="phone"
                    class="form-control form-control-lg"
                    placeholder="Phone"
                    v-model="currentUser.phone"
                  />
                </div>
                <div class="form-group">
                  <button
                    class="btn btn-info btn-block btn-lg"
                    @click="showEditModal=false; updateUser(); clearMsg();"
                  >
                    Edit User
                  </button>
                </div>
              </form>
            </div>
          </div>
        </div>
      </div>
      <!-- End. Edit User Model -->

      <!-- Delete User Model -->
      <div id="overlay" v-if="showDeleteModal">
        <div class="modal-dialog">
          <div class="modal-content">
            <div class="modal-header">
              <h5 class="modal-title">Delete User</h5>
              <button
                type="button"
                class="close"
                @click="showDeleteModal=false"
              >
                <span aria-hidden="true">&times;</span>
              </button>
            </div>

            <div class="modal-body p-4">
              <h4>Are you sure want to delete this user?</h4>
              <h5>You are deleting '{{currentUser.name}}'</h5>
              <hr />
              <button
                class="btn btn-danger btn-lg"
                @click="showDeleteModal=false; deleteUser(); clearMsg();"
              >
                Yes
              </button>
              &nbsp;&nbsp;&nbsp;&nbsp;
              <button
                class="btn btn-success btn-lg"
                @click="showDeleteModal=false"
              >
                No
              </button>
            </div>
          </div>
        </div>
      </div>
      <!-- End. Delete User Model -->
    </div>

    <!-- google : axios cdn -->
    <script
      src="https://cdnjs.cloudflare.com/ajax/libs/axios/0.20.0/axios.min.js"
      integrity="sha512-quHCp3WbBNkwLfYUMd+KwBAgpVukJu5MncuQaWXgCrfgcxCJAq/fo+oqrRKOj+UKEmyMCG3tb8RB63W+EmrOBg=="
      crossorigin="anonymous"
    ></script>
    <script src="https://cdn.jsdelivr.net/npm/vue/dist/vue.js"></script>

    <script>
      var app = new Vue({
        el: "#app",
        data: {
          errorMsg: false,
          successMsg: false,
          showAddModal: false,
          showEditModal: false,
          showDeleteModal: false,
          users: [],
          newUser: { name: "", email: "", phone: "" },
          currentUser: {},
        },
        mounted: function () {
          this.getAllUsers();
        },
        methods: {
          getAllUsers() {
            axios
              .get("http://k5566.co.kr/vue/tjson.php?action=read")
              .then(function (response) {
                if (response.data.eror) {
                  app.errorMsg = response.data.message;
                } else {
                  app.users = response.data.users;
                }
              });
          },

          addUser() {
            var formData = app.toFormData(app.newUser);
            axios
              .post("http://k5566.co.kr/vue/tjson.php?action=create", formData)
              .then(function (response) {
                app.newUser = { name: "", email: "", phone: "" };
                if (response.data.eror) {
                  app.errorMsg = response.data.message;
                } else {
                  app.successMsg = response.data.message;
                  app.getAllUsers();
                }
              });
          },

          updateUser() {
            var formData = app.toFormData(app.currentUser);
            axios
              .post("http://k5566.co.kr/vue/tjson.php?action=update", formData)
              .then(function (response) {
                app.currentUser = { name: "", email: "", phone: "" };
                if (response.data.eror) {
                  app.errorMsg = response.data.message;
                } else {
                  app.successMsg = response.data.message;
                  app.getAllUsers();
                }
              });
          },

          deleteUser() {
            var formData = app.toFormData(app.currentUser);
            axios
              .post("http://k5566.co.kr/vue/tjson.php?action=delete", formData)
              .then(function (response) {
                app.currentUser = { name: "", email: "", phone: "" };
                if (response.data.eror) {
                  app.errorMsg = response.data.message;
                } else {
                  app.successMsg = response.data.message;
                  app.getAllUsers();
                }
              });
          },

          toFormData(obj) {
            var fd = new FormData();
            for (var i in obj) {
              fd.append(i, obj[i]);
            }
            return fd;
          },

          selectUser(user) {
            app.currentUser = user;
          },

          clearMsg() {
            app.errorMsg = "";
            app.successMsg = "";
          },
        },
      });
    </script>
  </body>
</html>

'node.js > Vue.js' 카테고리의 다른 글

sweet alert 예쁜 alert 창 사용하기  (0) 2020.10.20
Vue.js UI Component for 2020  (0) 2020.10.15
Vue.js plug-in  (0) 2020.10.04
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
TAG
more
«   2025/05   »
1 2 3
4 5 6 7 8 9 10
11 12 13 14 15 16 17
18 19 20 21 22 23 24
25 26 27 28 29 30 31
글 보관함