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

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

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

XMLは仕様の1つで、マークアップ言語群を構築するために使われています。

PHP

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

JavaScript

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

Q&A

解決済

2回答

1460閲覧

XMLHttpRequestでのデータ取得

Nitta

総合スコア96

XML

XMLは仕様の1つで、マークアップ言語群を構築するために使われています。

PHP

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

JavaScript

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

0グッド

0クリップ

投稿2020/01/20 01:26

編集2020/01/20 02:17

お世話になってます。
今、phpとJS(XMLHTTPREQUEST)を使って、Mysqlから取得しそれを反映させたい
のですが、なぜか一部取得できません。どこが不味いのでしょうか?
お分かりの方おられましたら、ご教示下さい。

mysql(レコード)

id username hold_position
1 sdfdddddddddd aaaaaaaaaaaaaaa
2 ksdfjsdlfjsdkfjal sasdfsdfasdfadsfads

http://sssss.xsrv.jp/ssss6/public/roundcube/skins/elastic/deps/tester2.php

<?php $username="aaaaaa"; $password="bbbbbb" try{ $pdo = new PDO("mysql:host={hostname}; dbname={dbname}; charset=utf8", $username, $password); $sql = "select username, hold_position from uploaders"; $stmt = $pdo->prepare($sql); $stmt->execute(); while($result = $stmt->fetchAll(PDO::FETCH_ASSOC)){ if(!empty($result)){ $message[] = $result; } } $pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); }catch(PDOException $e){ echo "接続失敗: " . $e->getMessage() . "\n"; exit(); } $ehime = ''; foreach($message as $value){ foreach($value as $key => $value2){ $ehime = $value2["username"]; $ehime2 = $value2["hold_position"]; $nitta[] = $ehime; $nitta[] = $ehime2; } } header("Content-Type: text/javascript; charset=utf-8"); echo json_encode($nitta); ?>

JS

<script language="javascript" type="text/javascript"> var request = new XMLHttpRequest(); request.open('GET', 'http://sssss.xsrv.jp/ssss6/public/roundcube/skins/elastic/deps/tester2.php',true); request.resposeType = 'json'; request.addEventListener('load', function(response){ var data = this.response; alert(data); }); request.send(); </script>

alertの結果

array(2){ ["hold_position"]=>string(65)"sasdfsdfasdfadsfads" ["username"]=>string(40)"ksdfjsdlfjsdkfjal" } {"hold_position":"sasdfsdfasdfadsfads","username":"ksdfjsdlfjsdkfjal"}

(修正後)

<?php try{   $username = "asasdasdasd";   $password = "safsadfasdfdsaf";   $pdo = new PDO("mysql:host=mysql8093.xserver.jp; dbname=gay86_roundcubemail; charset=utf8", $username,   $password);   $sql = "select username, hold_position from uploaders";   $stmt = $pdo->prepare($sql);   $stmt->execute();   header("Content-Type: application/json; charset=utf-8");   echo json_encode($stmt->fetchAll(PDO::FETCH_ASSOC));   $pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); }catch(PDOException $e){   echo "接続失敗: " . $e->getMessage() . "\n";   exit(); } ?>

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

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

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

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

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

m.ts10806

2020/01/20 01:29

インデントは手元のコードからきちんとつけてください。読むにたえません。 あとwhileのところの謎の実装はなんでしょう。 なぜ2回も3回もループさせてるんでしょう。
miyabi_takatsuk

2020/01/20 01:32 編集

PHP構文の方にインデント入れてください。 それと、alertでの結果は、javascriptでの実行時に、そのような文章のalertがまんま出る、ということでよろしいですか?
m.ts10806

2020/01/20 01:36

デバッグならalertよりconsoleです。
Nitta

2020/01/20 01:36

インデント調整しました。 alertの結果はまんま出るで間違いないです。
Nitta

2020/01/20 01:39

fetchに変えましたが、結果はかわりませんでした。 どうすれば?
guest

回答2

0

ベストアンサー

謎の実装になってますけど
fetchAll()そのままjson_encode()したらいいんでは。加工してる様子もないし。

投稿2020/01/20 01:38

m.ts10806

総合スコア80850

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

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

Nitta

2020/01/20 01:46

$messageをjson_encode()しろと言うこと?
m.ts10806

2020/01/20 01:48

あなたと友達になった覚えは全くないですけど、全く違います。 echo json_encode($stmt->fetchAll(PDO::FETCH_ASSOC));
miyabi_takatsuk

2020/01/20 01:50

横槍すみません、 json_encodeしてるのだから、 header("Content-Type: application/json; charset=utf-8"); という風に、jsonとして出力して、 js側のリクエストも、jsonで受け取る設定にした方が安全な気がします。 (オブジェクトの形式が安定するという意味で)
m.ts10806

2020/01/20 01:59

よく見たらまさかのtext/javascriptだったとは。
miyabi_takatsuk

2020/01/20 02:08

目を凝らすと実は、という 汗 あとさらに突っ込むと、 XMLHttpRequestオブジェクトに対して、loadイベントをaddEventListenerしてるところも、気になります。 動いているようなので、大丈夫かと思いますが、 ただ、レスポンスの形式とかの設定が反映されないかも。 (ここまでコメントするなら回答しろよ、自分)
Nitta

2020/01/20 02:18 編集

>>miyabi,m.ts10806様 お世話になってます。何とか全てのレコードを取得できました。 ありがとうございました。 >>XMLHttpRequestオブジェクトに対して、loadイベントをaddEventListenerしてるところも、気になります。 これ自分で考えてみます。 一部まだ聞きたい点もあります。
m.ts10806

2020/01/20 02:15

アドバイスをおおよそ受け入れてなさそうな謎コードが増えたようなので、このあたりで引くかな。 PHPマニュアル読まずにどこかしらのコピペで理解できないコード書くから…
m.ts10806

2020/01/20 02:16

それよりuser,password出しちゃってますけど大丈夫ですか? 私なら質問削除依頼だします。
miyabi_takatsuk

2020/01/20 02:19

Nittaさん > 自分で考える前に、PHPのマニュアルみたり、調べてください。 多分というか間違いなく、"基本の部分"なので自分で考えてもどうにもなりません。
Nitta

2020/01/20 03:42

miyabiさん> var data =[{a:'ehime',b:'kagawa'},{a:'kochi',b:'tokusima'}] とあった場合、順次取り出すのはどんな感じですかね?
miyabi_takatsuk

2020/01/20 03:46

Nittaさん > 名前は省略しないようお願いします。 (ユーザーを特定できなくなる) その質問は本質問の要件から逸脱する、またこのコメント欄は、私の回答ものではないので、ここでは答えられません。 本質問が解決したなら、本質問は解決済みにし、別途質問を立てられるとよいかと思います。
m.ts10806

2020/01/20 04:15

解決したかどうかもコメントなしに次の話っぽいのをされていきなり締められても。 あと、私はあなたの友達ではないのですけど、馴れ馴れしい態度とったことに関する言及はなしですか? とりあえず通報しておきます。
Nitta

2020/01/20 04:19

申し訳ありません。 馴れ馴れしくしたつもりはありません。 誤解なきようよろしくお願いいたします。 以後、誤解ないよう気を付けます。
m.ts10806

2020/01/20 04:24

>$messageをjson_encode()しろと言うこと? これで馴れ馴れしくないと思う方が無理ですね。逆に赤の他人にいきなり言われたと思ってください。 丸投げ同然の質問に厚意でアドバイスをしているのに、です。 不快になりませんか?イラッとしませんか? 私は非常に不愉快になりました。始めに「友達になったつもりはない」と書いたのに無反応であったことも拍車をかけています。 それに、解決したのかどうかわからないまま解決したことにしてるのも非常に不愉快です。 ヘルプ全部読んで出直してきてください。
Nitta

2020/01/20 04:27

本当に大変申し訳ございません。 二度とこのような事がないように致します。 大変失礼しました。猛省しています。
m.ts10806

2020/01/20 04:29

ヘルプ全部読んで出直してきてください。
m.ts10806

2020/01/20 04:32

第三者から見て「どう解決したか」わかる内容になっているかどうか熟考してください。丸投げ同然の質問も二度としないこと(これまでの経緯から無理だと思ってますが念のため)。 できないなら解決しようがしまいが知りません。丸投げという低評価がつくだけ。所詮他人同士ですしね。
Nitta

2020/01/20 04:34

返信いただけるだけで、有難いです。 本当に申し訳ございません。
m.ts10806

2020/01/20 04:36

謝ってほしいのは馴れ馴れしくしたところだけ。 他は謝ったところで繰り返してるのでもう無理。
guest

0

while($result = $stmt->fetchAll(PDO::FETCH_ASSOC)){

fetchAllは全体をとるのでwhileで回すならfetch

投稿2020/01/20 01:28

yambejp

総合スコア114843

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問