質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.35%
HTML5

HTML5 (Hyper Text Markup Language、バージョン 5)は、マークアップ言語であるHTMLの第5版です。

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

Q&A

解決済

1回答

694閲覧

draggable="true"で項目を入れ替えた後、その情報を保存する方法

退会済みユーザー

退会済みユーザー

総合スコア0

HTML5

HTML5 (Hyper Text Markup Language、バージョン 5)は、マークアップ言語であるHTMLの第5版です。

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

0グッド

0クリップ

投稿2021/10/23 16:09

前提・実現したいこと

HTML, CSS, JavaScript, PHPで表を作るアプリケーションを作成中です。
この表では、チェックボックスで選択した内容を別のページの表に○と表示するようにしたいです。
現在はこの表をブラウザ側で編集して、自分なりのチェックボックスを作れるようになることを目指しています。

発生している問題・エラーメッセージ

項目の入れ替えはHTMLのdraggable="true"で出来そうだと思ったのですが、
それを保存する方法が分からず、止まってしまいました。
PHPならブラウザの表示を書き換えることが出来そうだと思ったのですが、
書き換えた後保存する方法をインターネット、書籍で探してみても見つけられず、
先が見えない状態です。

具体的には、以下の「draggable属性の参考サイト」のサンプルプログラムで
順序を変更した後その変更情報を保存して、
次に開くときには、順序を変更した後の状態で表示できれば、
表の項目の入れ替え情報を保存することできるのではないかと考えています。

そもそも実現ができるかできないかも含めて、回答をお願いしたいです。
よろしくお願いします。

該当のソースコード

<!DOCTYPE html> <html lang="ja"> <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"> <link rel="stylesheet" href="style.css"> <title>Document</title> <script type="text/javascript"> var dragSrcEl = null; function handleDragStart(e) { dragSrcEl = this; e.dataTransfer.effectAllowed = 'move'; e.dataTransfer.setData('text/html', this.outerHTML); this.classList.add('dragElem'); } function handleDragOver(e) { if (e.preventDefault) { e.preventDefault(); } this.classList.add('over'); e.dataTransfer.dropEffect = 'move'; return false; } function handleDragEnter(e) { } function handleDragLeave(e) { this.classList.remove('over'); } function handleDrop(e) { if (e.stopPropagation) { e.stopPropagation(); } if (dragSrcEl != this) { this.parentNode.removeChild(dragSrcEl); var dropHTML = e.dataTransfer.getData('text/html'); this.insertAdjacentHTML('beforebegin', dropHTML); var dropElem = this.previousSibling; addDnDHandlers(dropElem); } this.classList.remove('over'); return false; } function handleDragEnd(e) { this.classList.remove('over'); } function addDnDHandlers(elem) { elem.addEventListener('dragstart', handleDragStart, false); elem.addEventListener('dragenter', handleDragEnter, false); elem.addEventListener('dragover', handleDragOver, false); elem.addEventListener('drop', handleDrop, false); elem.addEventListener('dragend', handleDragEnd, false); } function PageLoad() { var cols = document.querySelectorAll('#columns .column'); [].forEach.call(cols, addDnDHandlers); } </script> </head> <body onload="PageLoad();"> <ul id="columns"> <li class="column" draggable="true"><header>ぺんぎんクッキー</header></li> <li class="column" draggable="true"><header>あひるサプレ</header></li> <li class="column" draggable="true"><header>しろくまアイス</header></li> <li class="column" draggable="true"><header>にわとりタルト</header></li> <li class="column" draggable="true"><header>かるがもクラッカー</header></li> </ul> </body> </html>

補足情報

・draggable属性の参考サイト
https://www.ipentec.com/document/javascript-list-sortable-item
ここにより詳細な情報を記載してください。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

まずdraggableな要素はベタ書きではなく可変データ(DBやファイルなどのデータ)から動的に生成するようにする必要があります。
その上で、PHP側にそのデータを更新するためのAPIを用意し、画面側では要素を入れ替えた時にそのAPIを呼び出して元データを更新するようにすることで実現できます。

投稿2021/10/23 17:07

175

総合スコア147

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

退会済みユーザー

退会済みユーザー

2021/10/23 17:29

回答ありがとうございます。難しそうですね。 質問が2点ございます。 「銅的に生成」とありますが、項目に関するDBやファイルを作って、それをJSで属性を付加するということでしょうか? 「APIを用意し」とありますが、恥ずかしながらAPIを作ることを今まで考えたことがないので、 基礎的なところから勉強したいです。「Web API」と書かれているような書籍を当たれば良いのでしょうか? よろしくお願いします。
175

2021/10/23 18:07

「動的に生成」はPHPでもJSでも構いません。 PHPでやるパターン:PHPでDBのデータを取得し、そのデータを元にHTMLにdraggableな要素を挿入する JSでやるパターン:DBから現状の表示順でデータを返すAPIをPHPで実装し、画面側はJSでそのAPIから取得したデータを元にdraggableな要素を生成する APIについては「PHP Web API」などでググればいくらでもヒットするので適当なページを参考にしてください。
退会済みユーザー

退会済みユーザー

2021/10/23 18:40

わかりました。ありがとうございました。 調べて少し考えてみます。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.35%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問