• 締切済み

MySQL→PHP→Flashへのデータの受け渡しについて

現在、praflaを使って、学習支援のための英単語ゲームを開発しています。 そこで、英単語や日本語訳、ユーザーのデータ(成績や利用履歴など)管理等をMySQLで行い、 データをPHPに渡して、出題する英単語、日本語訳をFlashで表示させ、ゲーム終了後には、データベースに成績等を渡すという流れで作っていこうと考えています。 しかし、PHPからFlashへのデータの渡し方が上手くいかないため質問させていただきました。 開発環境にはxamppを使っているので、MySQLからPHPへのデータの受け渡しは、確認済みなのですが、PHPからFlashへの受け渡しが上手くいきません。 PHPから変数でFlashに渡そうと考えていて、 PHP側には、データベースへのアクセスと、PHPの変数$engwへ英単語のデータを格納して、 echo "jEname=$engw"; としてFlash側に渡せるようにしているつもりです。 (これで渡せるかどうかちゃんと分かっていないため、ここが違う場合は指摘してください) flash側は、ASを使って以下のように書いています。 ///////以下ソース////// function Test(){ EngObj = new LoadVars(); EngObj.onLoad = function(s){ if(s){         //gotoAndPlay("読み込み成功"); trace(this.jEname); } }; EngObj.load("test2.php"); } jEname = new Test(); gotoAndPlay("読み込み成功"); //////ここまで////// //gotoAndPlay("読み込み成功"); は、PHPの読み込みができているかどうか確認するためのラベルジャンプのフレームアクションです。 ここでPHPの読み込みができていたのでコメント扱いにして、jEnameを読み込み、jEnameが表示されているか確認するため、最後の行で「読み込み成功」のラベルに飛び、jEnameが表示されるか確認しようとしたのですが、 [object Object]と表示されてしまいました。 どこが原因なのか掴めず困っているのですが、どなたかご教授いただけませんでしょうか? よろしくお願いいたします。

  • Flash
  • 回答数3
  • ありがとう数3

みんなの回答

  • pakepoke
  • ベストアンサー率0% (0/0)
回答No.3

データが渡っているのを確認できて良かったです。 ということは 変数 = EngObj.jEname; でアクセスできるはずですし、配列に入れることもできます・・・ そういう疑問ではないのでしょうか?

taregin
質問者

補足

そのはずだと思うんですが、 変数 = EngObj.jEname; とおいて、アクセスできているか確認するためにその変数を表示させるようにしたんですが、 なぜか表示されず・・・ 文字コードが関係してたりするんでしょうか? でも、for in文で正しく表示できていたということは文字コードは関係ないと思うのですがどうなんでしょうか?

  • pakepoke
  • ベストアンサー率0% (0/0)
回答No.2

for in は配列はもちろんですがそのオブジェクトの変数を全部吐き出してくれます。多分。 例えば以下のコードをonLoadイベントの中に追加してみてください。 for (Value in EngObj) {   _root.values += Value + "=" + EngObj[Value] + newline; } _rootにダイナミックテキストを置いて変数にvaluesと付けてください。PHPからどういったデータが返ってきているか確認できると思います。※変数以外に関数も出力されるので「なんじゃこれ!っ」とならないように注意してください。 PHPもデータベースも詳しくないですし5年前くらいに 少しかじった程度なのでくれぐれも参考程度で・・<(_ _)> 提示された一連のコードですが最近のPHPは分からないので なんともお答えできません。 ただ、私的にはこうなのかな?と・・ <?php  // MySQL 接続  $cn = mysql_connect("localhost", "root", "pass");  // MySQL DB 選択  $select = mysql_select_db("english", $cn);  if ($cn == false) {    die;  } else {  // MySQL 問い合わせ  $sql = "select * from engdata";  $rs = mysql_query($sql, $cn);  // MySQL レコード参照  while ($item = mysql_fetch_array($rs)) {  $engw.="${item['eng']}";  $jpnw.="${item['jpn']}";  }  // MySQL 切断  mysql_close($cn);   //ひとまず英単語($engw)だけ出力  echo "jEname=".$engw;  } ?> 細かい記述は分からないのでそのままですが データベースとの接続の流れが少し気になったので書いてみました。 すごい勘違いしていましたらお許しください。 良いもの作ってくださいね。

taregin
質問者

お礼

書いていただいたコードを使って、別のファイルで作ってみました。 データベース側のデータ量が多いので、データ数を1つにして、 英単語(eng)にはframeworkのみ入れておいてやってみると、 jEname=framework/onLoad=[function]と表示されました。 (frameworkの後ろの/はfrash側でsplitを使って配列にするための区切り文字としてPHP側に追加した文字です。) 気になったのは、 _root.values += Value + "=" + EngObj[Value] + newline; 上のコードだと変数が表示された後に"="が来ると思ったんですが・・・ 言い訳でしかないですが、何分素人なので、これが何を示しているのか疑問が増えてしまいました・・・。 ですが、一応Flashにデータ自体は渡っていることが確認できただけでも進歩したかなと思います。 回答していただき、本当にありがとうございました。

taregin
質問者

補足

お礼を書いた後にコードがどう働いているのかが少しわかりました。 Valueが渡ってきた変数名を、EngObj[Value]がその変数の中身を示していたわけですね。 表示された内容が正しいならtraceが使えるはずだと思ったんですが、表示はされませんでした。 for inの中身を、 _root.values += EngObj[Value]; のみにして、無理やりsplitをかけて別の変数に配列にしてからやろうとしましたが、 これも上手くいかず・・・ ほかに何か案がないか探してみます。 もし何かわかればまた補足なりをつけたいと思います。

  • pakepoke
  • ベストアンサー率0% (0/0)
回答No.1

素人ですが今のところ回答がないようなので もしヒントになればと思い投稿しますね。 for inループを使ってEngObjの項目全てを洗い出して PHPからFlashに渡ってくるデータがどうなっているのか 参考にされてはどうでしょうか。

taregin
質問者

補足

返事が遅くなってしまい申し訳ありません。 PHPもflashもほぼ無知であるため、質問内容が明確でないにも関わらず回答してくださりありがとうございます。 for inループというのも知らなかったので、調べてみましたが、これは配列を出力する際に使う構文だと認識しました(違ってたらすみません)。 ただ、PHPからFlashに渡す際に、配列ではなく一つの変数で渡しているため、for inで調べられるのか疑問なのですが・・・どうでしょうか? あと、補足として、PHPのソースも記載しておきます。 <?php  // MySQL 接続  if (!($cn = mysql_connect("localhost", "root", "pass"))) {   die;  }  // MySQL DB 選択  if (!(mysql_select_db("english"))) {   die;  }  // MySQL 問い合わせ  $sql = "select * from engdata";  if (!($rs = mysql_query($sql))) {   die;  }  // MySQL レコード参照  while ($item = mysql_fetch_array($rs)) {  $engw.="${item['eng']}";  $jpnw.="${item['jpn']}";  }  // MySQL 切断  mysql_close($cn);   //ひとまず英単語($engw)だけ出力  echo "jEname=".$engw; ?>

関連するQ&A

  • phpによるflashにデータを読み込む

    お世話になっております。 現在、MySQLのデータをFlashにで表示させたいですが、なかなか うまく行きません。(MySQL -> PHP ->flash) どなたか、ご教授よろしくお願いします。 http://oshiete1.goo.ne.jp/qa5664918.html こちらの php ファイルで表示されるデータをflashに読み込ませて flashに表示させたいです。 flashに書いたアクションスクリプトは http://oshiete1.goo.ne.jp/qa5673292.html にあります。 php側はブラウザで打つとちゃんとデータが出力されます。問題としては、flash側のアクションスクリプトの問題だと思いますが、、、 実際どのカテゴリー投稿したらいいか困って、両方出します。 ぜひ、よろしくお願いいたします。

    • ベストアンサー
    • PHP
  • PHPからデータをFlash(swf)に送りたいのですが

    PHPに下記のように記述し、データを ActionScript で作成したフラッシュのtarget.swfファイルに送ろうとしています。 データがtarget.swfファイルに渡らなくて困っています。教えていただけないでしょうか。 PHP側: $data="sample";********渡したいデータです。***** print" <object-----swfファイル 中略 <parameter name=\"movie\" value=\"target.swf\" ?sendData=$data> 中略 "; swfファイル側: test.text=sendData;*****渡したデータを読み出すものです。***** 環境は、連絡サーバのPHP5とActionScript2を使用しています。 よろしくお願いいたします。

    • ベストアンサー
    • PHP
  • Flash→PHP→MySQLへの値の受け渡しについて

    現在、Flashのフォームで受け取った値をPHP経由でMySQLへデータを格納するシステムを作成しています。 現在、詰まっている点とは、Flashで送信したデータがMySQLまで到達できないというところです。 少し分析してみたところ、PHPを単独でブラウザにて開くと "フィールドが取得できません。" と出力されていました。 これは、 ----- <?php $setsuzoku = mysql_connect("localhost", "*****", "*****"); if (! $setsuzoku) { die ("データベースに接続できません"); } if (! mysql_select_db ("test")) { die ("データベースが取得できません"); } mysql_query("INSERT INTO rank VALUES('".$HTTP_GET_VARS['nickname']."', ".$HTTP_GET_VARS['score']); if (!$fd) { die ("フィールドが取得できません。"); } // 処理が終わったことを知らせる print('OK'); ----- というプログラムで動かしていまして、『mysql_select_db ("test")』まで動作しているのではないかと思われます。 ですので、もしかしたらFlash以前にPHPとSQLの連携がうまくいっていないような気がするのですが…どうでしょうか? Flashからの情報を送信するシステムである以上、PHPで表示すると必ずこのような形になるのでしょうか? ちなみにMySQLには、必要なDatabaseとテーブルを作成しました。 問題の切り分けは一応してみましたが、間違っているかもしれません。何かご教授頂ければ幸いです。 よろしくお願いいたします。

    • ベストアンサー
    • Flash
  • FLASHとCGIでのデータの受け渡しについて

    http://oshiete1.goo.ne.jp/kotaeru.php3?q=602714 でも質問をしたのですが、 FLASHとCGIのデータ受け渡しについて質問です。 FLASH側でテキスト入力したものをCGIで受信して表示を、と思ってるのですが、 イマイチうまくいきません。 FLASHのcgi実行ボタンのアクションスクリプトは on(press){ this.getURL("http://***/test.cgi","NAKA","POST"); } test.cgiの中身は read(STDIN,$buffer,$ENV{'content_length'}); ($title,$value)=split(/=/,$buffer); $buffer =~ s/%([a-fA-F0-9][a-fA-F0-9])/pack("C", hex($1))/eg; print "Content-type:text/html\n\n"; print "<FONT COLOR=RED>文字列</FONT><BR>\n"; print "$buffer<BR>\n"; なんてしてみましたが、「文字列」だけきちんと表示されて後は文字化けしてます。 (変換がうまくいってないのかな?) このデータの受け渡しはあってるのでしょうか?間違ってるのでしょうか? よろしくお願いします。

    • ベストアンサー
    • CGI
  • PHPでmySQLのデータを取り出す

    お世話になります。 php、smarty、mySQLを利用してサイトを構築しています。 下記のPHPプログラムを記述してデータベースからデータを取り出そうとしているのですが、queryの利用方法が良く判りません。 下記の場合、ブラウザ上には、『 Object 』と表示されています。 アドバイスをお願いします。 $sql = 'select footer from common where id=1'; $footer =& $mdb2 -> query($sql); if (PEAR::isError($footer)) {die($footer->getMessage());} $smarty->assign("footer",$footer);

  • MySQL 5 PHP 5 データの受け渡しについて 困ってます。。

    MySQL 5 PHP 5 データの受け渡しについて 困ってます。。 下記内容で困ってます。機能としては (1)プロダクトテーブルからデータを読み込み表示。 ※プロダクトテーブルには商品データが8件登録されています。 (2)注文ボタンが押されたら受注テーブルにデータをカキコミ。 なんですが。。。 プロダクトテーブルから読み込んだデータを受注テーブルに書き込むと $product_id がいつも8(受注テーブルデータの一番最後の数字) $product_name  同じ $product_price 同じ ・・・ になってしまいます。 whileループしているので変数に代入するのも繰り返されて一番最後のデータが いつも格納されている状態だと思うのですが、この解決策を教えて下さい! 最近始めたばかりで良く理解出来ないので噛み砕いて教えてくれる方お願いします>< <?php //---------------------------------------- // □:テーブルからデータを読む //---------------------------------------- $mysql->query("SELECT * FROM products ORDER BY product_id") or die(mysql_error()); while($row = $mysql->fetch()){ $product_id = $row["product_id"]; $product_name = $row["product_name"]; $product_price = $row["product_price"]; echo <<<EOT <tr> <td align="center">$product_id<input name="product_id" type="hidden" value="$product_id" size="10" /></td> <td align="center">$product_name<input name="product_name[$product_id]" type="hidden" value="$new_product_name" size="10" /></td> <td align="right">$product_price<input name="product_price[$product_id]" type="hidden" value="$new_product_price" size="10" /></td> <td><input name="new_use_date[$product_id]" type="text" value="$new_use_date" size="20" /></td> <td><input name="new_use_time[$product_id]" type="text" value="$new_use_time" size="20" /></td> <td><input name="remarks[$product_id]" type="text" value="$new_remarks" size="40" /></td> <td><input name="submit_add" type="submit" value="注文する" /></td> </tr> EOT; } //ここまでwhileループ[終了の閉じカッコ] ?>

    • ベストアンサー
    • MySQL
  • mysqlへのデータ追加について

    以下を実行すると”失敗しました”が表示されます。 $q1~$q5にはtest.html(FORM)からから受け取った(POST),2ビット文字を含む100文字未満が格納されています。(POSTの受け渡しテスト部分で受け渡しの成功は確認) それをmysqlのテーブルに格納したいのですが,そこがうまくいきません。 mysqlのdataテーブルにはq1~q5のフィールドがあり,すべてtext(200)です。本やネットで調べていますが原因がよくわかりません。 mysql_query($sql, $con)の書き方がおかしいのでしょうか。 どなたかご教授下さい。よろしくお願いします。 <?php $q1 = $_POST['q1']; $q2 = $_POST['q2']; $q3 = $_POST['q3']; $q4 = $_POST['q4']; $q5 = $_POST['q5']; /*POSTの確認 $body = $q1; $body .= $q2; $body .= $q3; $body .= $q4; $body .= $q5; print $body; */ require_once("dbini.php"); $con = mysql_connect($DBSERVER, $DBUSER, $DBPASS); mysql_query("SET_NAMES 'sjis'"); $selectdb = mysql_select_db($DBNAME, $con); $sql = "insert into data (q1, q2, q3, q4, q5) values ($q1, $q2, $q3, $q4, $q5)"; $rst = mysql_query($sql, $con); if($rst){ print $q1."<br>"; print $q2."<br>"; print $q3."<br>"; print $q4."<br>"; print $q5."<br>"; print "上記の内容で登録しました。"; }else{ print "失敗しました。";} $con = mysql_close($con); ?>

    • ベストアンサー
    • PHP
  • PHPとMySQLについて

    PHPとMySQLについて PHP、MySQLともに初心者の者です。 ネットの情報を参考に以下のようなプログラムを作成しました。 <?php //ファイルを読み込み require_once("DB47.php"); // クエリを送信する $sql = "SELECT * FROM japanDB ORDER BY PREF_CD"; $result = executeQuery($sql); //結果セットの行数を取得する $rows = mysql_num_rows($result); //表示するデータを作成 if($rows){ while($row = mysql_fetch_array($result)) { $tempHtml .= "".$row["PREF_CD"]." ".$row["PREF_NAME"]." "; $tempHtml .= "\n"; } $msg = $rows."件のデータがあります。\n\n"; }else{ $msg = "データがありません。\n\n"; } //結果保持用メモリを開放する mysql_free_result($result); ?> <?= $msg ?> <?= $tempHtml ?> これはデータベースに 1、北海道 2、青森 ・  ・ ・  ・ ・  ・ 47、沖縄 といった情報を与えており、PHP側でMySQLに接続し、その内容をコマンドプロンプト上で表示するといったものです。 しかし、PHPプログラムを実行してしまうと、全データが一気に表示されてしまうので、見づらいものとなっています。 そこで、地名や番号を入力すれば、地名を表示するような検索機能を付けたいのですが、PHPからMySQLデータベース内を検索する方法が分かりません。検索機能をこのプログラムに組み込みたいのですが・・・。 どなたかご教授お願いいたします。 ***環境*** OS : Windows XP Pro PHP4.2.3 、MySQLインストール済み **********

    • ベストアンサー
    • PHP
  • PHPサイトからMySQL内のデータを知る方法

    質問失礼いたします。 MySQLにあるデータベースをPHPサイトに表示しています。 PHPでは、 【datab.php】で、データベースへ接続し $link = mysql_connect('localhost', 'user', 'pass'); 【hyouji.php】にて、データを表示しています require_once("datab.php"); //SQL文 mysql_close($link); //データ配列 MySQL内のカラムには name , add , memo の3つがあり、PHPに表示させているのは name , add のみです。 しかし、どうやら memo にある内容が閲覧している人にわかったらしいのですが、 どこを見ても、memoの内容は表示されていません。 すみません、うまく言えないのですが… 上記にある【datab.php】の接続方法では、 MySQL内のデータがバレてしまうのでしょうか…? 原因も分からないのですが、何がお知恵をいただけたらと思います。 宜しくお願い致します。

    • ベストアンサー
    • MySQL
  • phpでMysqlにデータを書き込むと文字化

    皆様、教えて下さい。 phpで、日本語文字を入力させて、その内容をMysqlデータベースに保存しようと しているのですが、文字化けしてしまってます。(>_<) 素人なので、ネットで色々と方法を検索してみたのですが、よく判りません。 どなかた、教えて頂けますでしょうか? php側: mb_language("Japanese"); mb_internal_encoding("EUC-JP"); $aaa = 'あああ'; $query = "UPDATE database1 SET data2 = '$aaa' WHERE data1 = '$id'"; mysql_query($query); print $aaa; 上記のような内容ですが、画面上では、きちんと「あああ」と表示されている のですが、Mysqlのデータを見ると、文字化けしております。 お手数ですが、どなたか宜しくお願いします♪

    • 締切済み
    • PHP