前提
・制作中のアプリの大体の流れは下記通り:
(1) 主機能は二つあり、「登録機能」と「検索機能」です。
(2)「登録機能」:入力されたデータをPHP経由、データベースに登録します。
(3)「検索機能」:入力されたIDを利用し、データベース中、同じIDの1 rowのデータを取得します。➡ localstorageに保存します。➡HTMLに反映します。
発生している問題
・動画の00:13~00:18の問題を解決したいです。(下図は動画のscreen shotです)
https://youtu.be/e734Q7TB9qo
・もしかして、問題になるコードは下記ではないかと思います。
$ID = "";
$member_name = "";
上記のコードをセットしたので、空白が出てきたではないでしょうか?
しかし、それを削除してたら、おかしくなります。
該当のソースコード
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta http-equiv="X-UA-Compatible" content="IE=edge"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>Document</title> <link rel="stylesheet" href="style.css" /> </head> <body> <?php include('./user_list.php') ?> <!-- 👇登入區塊 --> <form action="./insert.php" method="post" enctype="multipart/form-data"> ID:<input type="text" name="idd"><br> Name:<input type="text" name="user_name"><br> <input type="submit" value="記入"> </form> <!-- 👇檢索區塊 --> <form action="" id="search" method="post" enctype="multipart/form-data"> ID:<input type="text" name="ss" id="ss"><br> <input type="submit" name="submit" value="検索"> </form> <?php // 👇利用isset來確認form中的資料有無被送出 if(isset($_POST['ss'])){ $search = $_POST['ss']; $sql2 = "SELECT * FROM user_list WHERE id = '$search' "; $sth2 = $db -> prepare($sql2); $sth2 -> execute(); $data2 = $sth2->fetch(); $sql10 = "SELECT * FROM `user_list` WHERE ID in ('$search')"; $sth10 = $db -> prepare($sql10); $sth10 -> execute(); $data10 = $sth10->fetchall(); if(empty($_POST['ss'])){ echo '<script> alert("記入してください") </script>'; }else{ if($data10 == null){ echo '<script> alert("まだ登録されていないよ!!!") </script>'; }else{ $ID = $data2["ID"]; $member_name = $data2["member_name"]; } } } ?> <section class="search_outcome"> <!-- 👈包含全部結果的<section> --> <div class="title"> <!-- 👈包含一項結果的<div>--> <div class="col_ID"> <input type="text" value="ID" readonly> </div> <div class="col_name"> <input type="text" value="NAME" readonly> </div> </div> <div class="list_for_all" id="list_for_all"></div> <!-- 👆一開始時先做個空區塊,待日後由JS帶入資料 --> </section> <script> // 👇找尋form的ID LIST_Storage = JSON.parse(localStorage.getItem('LIST_Storage')) || []; const search = document.querySelector('#search'); // 如果console.log(search)的話,會得到form中所有的程式碼。 const outcome_list = { ID_list:'<?= $ID ?>', Member_list:'<?= $member_name ?>'} LIST_Storage.push(outcome_list); localStorage.setItem('LIST_Storage', JSON.stringify(LIST_Storage)); DisplayOutcomes() function DisplayOutcomes () { const outcomeList = document.querySelector('#list_for_all'); //👈包含全部結果的<div> outcomeList.innerHTML = ""; LIST_Storage.forEach(outcome_list => { const outcome_one_div = document.createElement('div'); //👈包含一項結果的<div> const col_ID = document.createElement('div'); //👈包含第一欄結果的<div> const col_NAME = document.createElement('div'); //👈包含第二欄結果的<div> const col_btn = document.createElement('div'); //👈包含2個按鈕的<div> const revise = document.createElement('button'); //👈"修改"的按鈕 const delete_btn = document.createElement('button'); //👈"刪除"的按鈕 //console.log(delete_btn); outcome_one_div.classList.add('list_for_one'); col_ID.classList.add('col_ID'); col_NAME.classList.add('col_name'); col_btn.classList.add('col_btn'); revise.classList.add('revise'); delete_btn.classList.add('delete'); col_ID.innerHTML = `<input type="text" value="${outcome_list.ID_list}" readonly>`; col_NAME.innerHTML = `<input type="text" value="${outcome_list.Member_list}" readonly>`; revise.innerHTML = '修正'; delete_btn.innerHTML = '削除'; col_btn.appendChild(revise); col_btn.appendChild(delete_btn); outcome_one_div.appendChild(col_ID); outcome_one_div.appendChild(col_NAME); outcome_one_div.appendChild(col_btn); outcomeList.appendChild(outcome_one_div); console.log(outcomeList); delete_btn.addEventListener('click', (e) => { LIST_Storage = LIST_Storage.filter(LIST_Storage => LIST_Storage != outcome_list); localStorage.setItem('LIST_Storage', JSON.stringify(LIST_Storage)); DisplayOutcomes() }) }) } </script> </body> </html>
補足情報(FW/ツールのバージョンなど)
👇localstorageのデータをHTML内に反映する方法について、下記画動画を参考しました。
https://www.youtube.com/watch?v=6eFwtaZf6zc
回答2件
あなたの回答
tips
プレビュー