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

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

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

SQL(Structured Query Language)は、リレーショナルデータベース管理システム (RDBMS)のデータベース言語です。大きく分けて、データ定義言語(DDL)、データ操作言語(DML)、データ制御言語(DCL)の3つで構成されており、プログラム上でSQL文を生成して、RDBMSに命令を出し、RDBに必要なデータを格納できます。また、格納したデータを引き出すことも可能です。

PHP

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

JavaScript

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

HTML

HTMLとは、ウェブ上の文書を記述・作成するためのマークアップ言語のことです。文章の中に記述することで、文書の論理構造などを設定することができます。ハイパーリンクを設定できるハイパーテキストであり、画像・リスト・表などのデータファイルをリンクする情報に結びつけて情報を整理します。現在あるネットワーク上のほとんどのウェブページはHTMLで作成されています。

Q&A

解決済

2回答

268閲覧

javascriptの配列から取得からPHPでの処理まで…

退会済みユーザー

退会済みユーザー

総合スコア0

SQL

SQL(Structured Query Language)は、リレーショナルデータベース管理システム (RDBMS)のデータベース言語です。大きく分けて、データ定義言語(DDL)、データ操作言語(DML)、データ制御言語(DCL)の3つで構成されており、プログラム上でSQL文を生成して、RDBMSに命令を出し、RDBに必要なデータを格納できます。また、格納したデータを引き出すことも可能です。

PHP

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

JavaScript

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

HTML

HTMLとは、ウェブ上の文書を記述・作成するためのマークアップ言語のことです。文章の中に記述することで、文書の論理構造などを設定することができます。ハイパーリンクを設定できるハイパーテキストであり、画像・リスト・表などのデータファイルをリンクする情報に結びつけて情報を整理します。現在あるネットワーク上のほとんどのウェブページはHTMLで作成されています。

0グッド

0クリップ

投稿2018/02/04 12:32

編集2018/02/04 18:15

どなたか助けて下さい。
プログラミングは現在勉強中なので、超初心者です。。。

行いたい事

  1. sortable内にSQL内からPHPで読みだしたデータを表示(店舗情報)
  2. リストをドラッグ&ドロップで並び替え
  3. 表示された上下店舗の距離情報(SQL内にあり)をPHPで計算して特定の場所に表示

現在1.2.については皆様にお助け頂き、概ね完成しております。
又、3,の計算式についてもネットで検索した情報で完成しています。
この計算式の変数に代入する為に、2,のD&Dで移動後にリストのIDを取得して、どの様な並びになっているか特定しようと考えました。
そこで、コールバックイベントを利用して、"toArray"にsortableのliのIDを取得する事もできました。
困っているのは、このjsで取得したtoArray内のID情報からどの様にPHPの計算式に利用する変数に代入するのか?です。
※すいません…説明が下手で分かりにくいと思います。

距離計算については既にPHPで完成しているので、何とか最下部の計算式の変数に代入したいのですが、
いくら考えても最善の方法がわかりません。
【例】
js側⇒ Ver log = 2,1,3,5,6,4,9,7,8,10(D&D後はこの様な形で各liのidが保存されています)
このidを元にそのli内の$row['KEIDO']と$row['IDO']の情報をPHPの計算式の変数に代入したい

以下が現状のコードになります。

php

1 <ul id="datas"> 2 <li id="1"><?php 3 $sql = "SELECT * FROM shop LIMIT 0,1"; 4 $stmt = $dbh->query($sql); 5 foreach ($stmt as $row) { 6 echo $row['SHOP_NAME'].':'.$row['ADDRESS']; 7 $aa =$row['KEIDO']; 8 $ab =$row['IDO']; 9 10 }?> </li> 11 12 <li id="2"><?php 13 $sql = "SELECT * FROM shop LIMIT 1,1"; 14 $stmt = $dbh->query($sql); 15 foreach ($stmt as $row) { 16 echo $row['SHOP_NAME'].':'.$row['ADDRESS']; 17 $aa =$row['KEIDO']; 18 $ab =$row['IDO']; 19 20 }?> 21 </li> 22               //*このテーブルが10個ほど並びます  23   </ui> 24   <p id="log"></p>   //ここに下記jsのidは正常に表示されます。 25 26

JavaScript

1$('#datas').sortable({ 2 update: function(){ 3 var log = $(this).sortable("toArray"); 4 $("#log").text(log); 5 } 6});

↓距離計算用のPHP

PHP

1<?php 2 $lat1 = 緯度;  **//ここに$row['KEIDO']; を入れたい**(jsの変数(id1つ目の)) 3 $lon1 = 経度; **//ここに$row['IDO'];を入れたい**   (jsの変数(id1つ目の)) 4 $lat2 = 緯度;  **//ここに$row['KEIDO']; を入れたい**  (jsの変数(id2つ目の)) 5 $lon2 = 経度;  **//ここに$row['IDO'];を入れたい**    (jsの変数(id2つ目の)) 6 $hoge=location_distance($lat1, $lon1, $lat2, $lon2); 7 $hoge["distance"];//が小数点付きの直線距離を返します(メートル単位)。 8 $hoge["distance_unit"];//が整形された直線距離を返す(1000m以下ならメートルで記述 例:836m | 1000m以上は小数点第一位以上の数をkmで記述 例:2.8km) 9 function location_distance($lat1, $lon1, $lat2, $lon2){ 10 $lat_average = deg2rad( $lat1 + (($lat2 - $lat1) / 2) );//2点の緯度の平均 11 $lat_difference = deg2rad( $lat1 - $lat2 );//2点の緯度差 12 $lon_difference = deg2rad( $lon1 - $lon2 );//2点の経度差 13 $curvature_radius_tmp = 1 - 0.00669438 * pow(sin($lat_average), 2); 14 $meridian_curvature_radius = 6335439.327 / sqrt(pow($curvature_radius_tmp, 3));//子午線曲率半径 15 $prime_vertical_circle_curvature_radius = 6378137 / sqrt($curvature_radius_tmp);//卯酉線曲率半径 16 17 //2点間の距離 18 $distance = pow($meridian_curvature_radius * $lat_difference, 2) + pow($prime_vertical_circle_curvature_radius * cos($lat_average) * $lon_difference, 2); 19 $distance = sqrt($distance); 20 21 $distance_unit = round($distance); 22 if($distance_unit < 1000){//1000m以下ならメートル表記 23 $distance_unit = $distance_unit."m"; 24 }else{//1000m以上ならkm表記 25 $distance_unit = round($distance_unit / 100); 26 $distance_unit = ($distance_unit / 10)."km"; 27 } 28 29 //$hoge['distance']で小数点付きの直線距離を返す(メートル) 30 //$hoge['distance_unit']で整形された直線距離を返す(1000m以下ならメートルで記述 例:836m | 1000m以下は小数点第一位以上の数をkmで記述 例:2.8km) 31 return array("distance" => $distance, "distance_unit" => $distance_unit); 32 } 33 34 35 ?>

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

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

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

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

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

guest

回答2

0

ベストアンサー

javascriptでHTMLにある情報を取得しようと思うなら、すでに実装にあるように

<ul id="datas">
このidを

getElementByIdなどを使うことで取得できます。

他にも色々と方法はあるでしょうが、まずは取得したい情報に何らかの形でidを振り、HTMLで画面に配置しなければならないでしょう(inputのhiddenでデータを保持するとか)。
現状はただ単純に変数に入れ替えているだけの各店舗の位置情報をjavascriptでも扱うことができるようにする、ということです。

投稿2018/02/04 13:43

SatoshiMashino

総合スコア210

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

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

退会済みユーザー

退会済みユーザー

2018/02/04 15:59

回答ありがとうございます! やはり、html内に配置しないと無理ですよね… ちなみにtoArray内の配列通りに(sortabuleの並び替えした後の順番)計算する必要があるのですが、javascript対応可能なのでしょうか?
guest

0

このidを元にそのli内の$row['KEIDO']と$row['IDO']の情報をPHPの計算式の変数に代入したい

根本的な部分ですが、JavaScriptが実行されるときにはPHPの実行は終了しています。
計算処理がどのようなものかはコードを読んでいませんが、JavaScriptで実装してしまうか、PHPにフォームで送るか非同期通信で送るかどれかになります。

投稿2018/02/05 02:55

kei344

総合スコア69357

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

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

退会済みユーザー

退会済みユーザー

2018/02/05 03:16

回答ありがとうございます! やはりそうなんですね… 一度非同期でやってみようと思ったのですが、うまくいかず、jsで実装しようと考えています。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.51%

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

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

質問する

関連した質問