• ベストアンサー

PHP→flashの連携

いつもお世話になっております。 以下の工程を考えて、作っていますが、どうしても疑問点があるので、質問させていただきました。よろしくお願い申し上げます。 (1)WEB上で入力した値をFORMのPOSTでPPP.phpに送信。 (2)PPP.phpは、下記の様に、(1)の値を受けとって、データベース(mysql)に,照会する。 if(isset($_POST["ansyou"])and isset($_POST["useid"])){ $ansyou = $_POST['ansyou']; $useid = $_POST['useid']; } else{ $ansyou="AAAAA"; $useid="BBBBB"; }→データベースに問い合わせ (3)データベースに照会して、出てきた値を以下のように出力 print"&result1=".$name."&result2=".$age ・・・・ (4)PPP.phpには、下記のように、PPP.swf を出力させる プログラムを最後に書いています。 print(" <html> <head> <meta http-equiv='Content-Type' content='text/html; charset=Shift_JIS'> <title>ppp</title> </head> <body> ~PPP.swfを設置~ (5)FLASHには「myData = new LoadVars()・・・」で出力させる。 以上の工程で作成しているのですが、[(1)]の値が、ちゃんとPPP.phpに送信されても、[(2)]のAAAAAとBBBBBで照会した値が PPP.swfに反映されます。しかし、PPP.phpには、ちゃんと、送信された値で照会した情報が出力されています。なぜでしょうか?よろしくお願いします。

  • PHP
  • 回答数3
  • ありがとう数2

質問者が選んだベストアンサー

  • ベストアンサー
回答No.2

なんかボタン掛け間違えているような印象。 最後のPPP.swfからLoadVars()でPPP.phpに読みにいった場合は、POSTされたデータは関係無いでしょうから、AAAAA、BBBBBと表示されて当然です。 こういった場合はLoadVars()ではなくて、PPP.phpでswfの出力をするときにHTMLに書き込んだ形で値を渡してやれば簡単です。 ~PPP.swfを設置~ <obcect ~> <param name="movie" value="PPP.swf?result1=".$name."&amp;result2=".$age ・・・・"> </object> どうしてもLoadVars()を使うというなら、セッションやクッキーを使えば可能かもしれませんが。。。

ohirosi
質問者

お礼

こんな方法があったんですね!! すごく感動してます。 今までかなり遠回りしていました。 どうもありがとうございます。解決しちゃいました。 この方法を詳しく説明しているサイトを探したのですが、 なかなか見つかりません。 もし、ご存知でしたらよろしくお願いします。

その他の回答 (2)

  • BlurFiltan
  • ベストアンサー率91% (1611/1754)
回答No.3

#2の方の方法で行かれるのでしたら,FlashVars を使うのが一般的かと思います。 PHP はよくわからないので、どのサイトが良いのかはわかりませんが、 この辺りで検索されてはいかがでしょうか。 http://www.google.com/search?hl=ja&q=FlashVars+PHP&lr=lang_ja

ohirosi
質問者

お礼

どうもありがとう御座います。お返事が遅くなり申し訳御座いません。 早速勉強してみようと思います。 ありがとう御座いました。

回答No.1

このコードを見る限り、入力値が受け取れてない可能性が高いですね。 >しかし、PPP.phpには、ちゃんと、送信された値で照会した情報が出力されています。 この情報はどこで取得しているのですか?

ohirosi
質問者

補足

ご回答ありがとうございます。 PPP.phpには、(1)で送信した値で、データベースに照会した情報が&result1=照会結果1&result2=照会結果2・・・として、表示されます。 PPP.phpには、 if(isset($_POST["ansyou"])and isset($_POST["useid"])){ $ansyou = $_POST['ansyou']; $useid = $_POST['useid']; } else{ $ansyou="AAAAA"; $useid="BBBBB"; }→データベースに問い合わせ 問い合わせ成功したら データベースの”PPP”テーブルから $ansyou及び$useidと値が一致するフィールドがあれば、・・・ $sql3 = "select * from PPP where useid = '$useid '"; $rs3 = mysql_db_query($db,$sql3); $pppdata=mysql_fetch_array($rs3); $name=$pppdata["name"]; $age=$pppdata["age"]; (値を抽出)     |     |     |     ↓ print"&result1=".$name."&result2=".$age ・・・・ (値を出力)     |     |     |     ↓ (出力された文字情報の下に、swfを表示させる。) print(" <html> <head> <meta http-equiv='Content-Type' content='text/html; charset=Shift_JIS'> <title>ppp</title> </head> <body> <EMBED src='PPP.swf' loop=false bgcolor=#FFFFFF WIDTH=850 HEIGHT=1270 TYPE='application/x-shockwave-flash' PLUGINSPAGE='http://www.macromedia.com/go/getflashplayer'> </EMBED> </tr> </table> </body> </html> と記述しています。 従って、PPP.phpが表示される内容は、 &result1=太郎&result2=35歳&result3=男・・・ という文字情報の下に、PPP.swfが表示されます。 このPPP.swfには、PPP.phpで表示されている &result1=太郎&result2=35歳&result3=男・・・ ではなく、(2)にある $ansyou="AAAAA"; $useid="BBBBB"; で照会された &result1=次郎&result2=33歳&result3=男・・・ の結果が読み込まれてしまいます。 長文にも関らず分かりづらくてすみません。。。。 何卒よろしくお願いします。

関連するQ&A

  • FLASHとの連携について

    FLASHに値を渡すためPHPを書いていますが行き詰ってしましました。 下の文面の  $messeid = ?; echo "&res1=".$messeid."&"; の$messeidに<?=$rs['id']?>の値を代入したいのですが出来ません。 ブラウザで確認するとテーブルに値がちゃんと入って表示されますし   $messeid = 1; とするとFLASH側で1と表示されますのでデータベース、FLASHともに通信は出来ているようです。 (xx)/~何卒ご指導お願いいたします。 <?php require_once("DB.php"); $dbUser = "Youser"; // ユーザー名 $dbPass = "Pass"; // パスワード $dbHost = "localhost"; // ホスト名 $dbName = "Database"; // データベース名 $dbType = "mysql"; // データベースの種類 $dsn = "$dbType://$dbUser:$dbPass@$dbHost/$dbName"; // データベースに接続 $conn = DB::connect($dsn); // 接続に失敗したらメッセージを表示して終了します。 if (DB::isError($conn)){ die($conn->getMessage()); } // POSTされたデータを受け取り、エスケープします。 $s_designid = addslashes($_POST['search_designid']); $s_newpass = addslashes($_POST['search_newpass']); $sql = <<<EOS SELECT * FROM passkanri where back_pass = '$s_designid' and new_pass = '$s_newpass'; EOS; //この$messeidにデータベースから得た値を代入したい $messeid = <?=$rs['id']?>; echo "&res1=".$messeid."&"; // SQL文を発行 $result = $conn->query($sql); if (DB::isError($result)) { die ($result->getMessage()); } // 検索件数の表示 $count = $result->numRows(); print "検索結果は" . $count . "件です。<BR>"; if($count > 0){ ?> <TABLE width="450" border="1" cellspacing="0" cellpadding="8"> <TBODY> <TR><TH>ID</TH><TH>DESIGN_ID</TH><TH>BACK_PASS</TH><TH>NEW_PASS</TH></TR> <?php while ($rs = $result->fetchRow(DB_FETCHMODE_ASSOC)) { mysql_query("set names utf8"); ?> <TR> <TD align="center"><?=$rs['id']?></TD> <TD align="center"><?=$rs['design_id']?></TD> <TD align="center"><?=$rs['back_pass']?></TD> <TD align="center"><?=$rs['new_pass']?></TD> <?php } ?> </TBODY></TABLE> <?php } $result->free(); $conn->disconne ?>

    • 締切済み
    • PHP
  • phpとMySQLの連携の不具合

    こんにちは。 現在私はhtmlのフォームに文字を入力してデータベース内にデータを追加するプログラムを 作成しています。 ですがMySQLとの連携のところで行き詰ってしまい、どうにかみなさんのお力をお借りしたいです。 まずhtmlファイルです。ここに文字を入力してup.phpに値を渡しています。 <html> <head> <title>用語情報入力</title> </head> <body> 用語を入力してください。<br> <br> <form method="POST" action="up.php"> yougoid:<input type="text" name="yougoid" size="25"><br><br> 用語名:<input type="text" name="yougo" size="25"><br><br> 説明:<input type="text" name="sestumei" size="10"><br><br> 読み:<input type="text" name="yomi" size="10"><br><br> 講義回:<input type="text" name="kougi" size="10"><br><br> 回:<input type="text" name="kai" size="10"><br><br> <input type="submit" value="登録する"> </form> </body> </html> そしてこちらがup.phpファイルです。postで送られてきた値をMySQLに反映するプログラムです。 <html> <body> 用語情報<br><br> yougoid:<?php echo $_POST['yougoid'] ?><br><br> 用語名:<?php echo $_POST['yougo'] ?><br><br> 説明:<?php echo $_POST['sestumei'] ?><br><br> 読み:<?php echo $_POST['yomi'] ?><br><br> 講義回数:<?php echo $_POST['kougi'] ?><br><br> 回:<?php echo $_POST['kai'] ?><br><br> <?php $db = mysqli_connect("localhost", "root", "c0106426" , "network"); mysqli_query($db, "SET NAMES UTF-8"); $sql = "insert into employee (yougoid,yougo,sestumei,yomi,kougi,kai,) values (\"".$_POST['yougoid']."\",\"".$_POST['yougo']. "\",\"".$_POST['sestumei']. "\",\"".$_POST['yomi']."\",\"".$_POST['kougi']."\",\"".$_POST['kai']."\")"; $result = mysqli_query($db, $sql); if($result == TRUE) { print "データベースに格納しました。"; } else{ print "データベースに格納できませんでした。"; } mysqli_close($db); ?> </body> </html> データベースはnetworkという名前でテーブル名はyougoid,yougo.setsumei,yomi,kougi,kai というテーブルがあります。 現在の状況は最後のデータベースに格納・・・も表示されないので resultに値が返ってきていないと推測していますが エラーも出ない状況なのでどうしていいかわかりません。 実行結果を画像で添付いたします。よろしくお願いします。

    • 締切済み
    • PHP
  • セルの値を転記

    下記のコードで sub main() Dim i As Long Dim rowToWrite As Long Dim 最終行 As Long Dim result As Variant Dim tmp As Variant Dim j As Long 最終行 = Range("B1").End(xlDown).Row result = Cells(1, 1).Resize(最終行, 2).Value For rowToWrite = 1 To 最終行 If tmp <> result(rowToWrite, 2) Then i = i + 1 j = 1 result(rowToWrite, 1) = i & "-" & j tmp = result(rowToWrite, 2) Else j = j + 1 result(rowToWrite, 1) = i & "-" & j End If Next rowToWrite Cells(1, 1).Resize(最終行, 2).Value = result End Sub Bセルの値が aaaaa aaaaa aaaaa bbbbb bbbbb bbbbb bbbbb bbbbb bbbbb ccccc ccccc だった場合 ↓ Aセル,Bセル 1-1,aaaaa 1-2,aaaaa 1-3,aaaaa 2-1,bbbbb 2-2,bbbbb 2-3,bbbbb 2-4,bbbbb 2-5,bbbbb 2-6,bbbbb 3-1,ccccc 3-2,ccccc とBセルの値が 変わったタイミングで Aセルに管理番号が増えていくのですが Cells(1, 1).Resize(lastRow, 2).Value = resultの値を 表示せずに 2次元配列として resultの値を result = 結果(debug.print 結果) としてAセルの値を 1-1 1-2 1-3 2-1 2-2 2-3 2-4 2-5 2-6 3-1 3-2 と転記したいのですがアドバイスいただけたら助かります。 よろしくお願いいたします。

  • phpとMysQLの連携がうまくいきません

    現在phpとmysqlを連携させて、phpのフォームから文字を入力してmysqlのデータベース上からマッチした検索結果を表示するプログラムを作っているのですがなかなかうまくいきません・・・ お手数ですが詳しい方解答お願いいたします。 <html> <head> <title>PHP SEARCH RESULT</title> <meta http-equiv="Content-type" content="text/html;charset=utf-8"> </head> <body> <? $debug = false; //DB接続 mysql_connect("localhost","root","c0106426"); mysql_select_db("network"); if($debug) print_r($HTTP_POST_VARS); //エラーチェック //リクエストメソッドチェック if($REQUEST_METHOD != "POST") { print "Error: invalid method"; exit(); } //クエリ生成 $query = "SELECT * FROM yougo "; //検索条件生成 //用語 if(!empty($yougo)) { $yougo = yougo($yougo); $where .= "yougo REGEXP '$yougo' && "; } if(!empty($where)) { $where = substr($where, 0, -4); $where = "WHERE " . $where; } $result = mysql_query($query); $num_rows = mysql_num_rows($result); if($num_rows == 0) $message = "該当するデータはありませんでした"; else $message = $num_rows . "件ヒットしました"; ?> 検索結果<br> <?=$message?> <table border=1> <tr><td>用語</td><td>説明</td><td>講義回数</td></tr> <? while($row = mysql_fetch_assoc($result)): ?> <tr><td><?=$row[yougo]?></td><td><?=$row[sestumei]?></td><td><?=$row[kougi]?></td></tr> <? endwhile; ?> </table> <a href="search.html">再検索</a> </body> </html> このようなプログラムを書いているのですがうまく動作しません。。。 フォームからはyougoという形でpostで値をこのphpプログラムに渡しています。 データベースはnetworkという名前で テーブルはyougoid,yougo,sestumei,yomi,kougi,kai というテーブルがありまして yougoの文字を文字入力で検索して yougo,sestumei,kougi内の内容をテーブルで表示させたいのですが、 どうしてもうまくいきません。 よろしくお願いいたします。

    • 締切済み
    • PHP
  • ActionScript2.0とPHPの連携

    下記のスクリプトをflashプレーヤー8.0、Action Script2.0 でムービーの書き出しを行って、実行すると 合計の計算結果蘭に「undefined」と表示され、 合計値がちゃんと表示されません。 どこが間違っているのでしょうか? 【test1.fla】 (scriptレイヤー) //Shift-jisを使う //System.useCodepage = true; //loadvarsobject作成 LV1=new LoadVars(); //送信が成功した場合 LV1.onLoad = function(success){ //LoadVarsオブジェクトに得られた計算結果を反映させる out1=LV1.out1; } gotoAndStop(1); (mainレイヤー) //送信ボタンが押されたとき on (press) { //LoadVarオブジェクトに変数をセット LV1.in1=in1; LV1.in2=in2; LV1.in3=in3; LV1.in4=in4; //LoadVarオブジェクトの内容をphpスクリプトへ送信する LV1.sendAndLoad("test1.php",LV1,"POST"); } 【test1.php】 <?php //Flashから送られてくる変数を受け取る $in1=$_POST['in1']; $in2=$_POST['in2']; $in3=$_POST['in3']; $in4=$_POST['in4']; //合計を求める $result=$in1+$in2+$in3+$in4; var_dump($result); //Flashに合計を伝える echo 'out1='.$result; //送信されてきた変数をログファイルに残す $fp=fopen("log.txt","ab"); fputs($fp,"$in1,$in2,$in3,$in4\n"); fclose($fp); ?>

  • DBのWHERE~ANDの使い分けをphpで処理

    <input type="text" name="aaaaa" value=""> <input type="text" name="bbbbb" value=""> <input type="text" name="ccccc" value=""> このinputは全部で30個あります。DBには30個のカラムがあって、 対象のカラムと比較する値valueが""のときはWHERE以降をやらないで、 1つ以上のときはWHERE句をやってANDで繋げて絞り込んでいきたいです。 $_GETのキー名とその対象のカラム名は別々につけています。 $_GETの値は文字列や数字が入ります。 <?php mb_http_output('UTF-8');/*ajaxの読み込みにつかうファイルのため*/ mb_internal_encoding('UTF-8');/*ajaxの読み込みにつかうファイルのため*/ if(isset($aaaaa) && strlen($aaaaa)>0){ $aaaaa = mb_convert_encoding($_GET['aaaaa'], "UTF-8"); htmlentities($aaaaa, ENT_QUOTES); $test1["id"] = $aaaaa; } if(isset($bbbbb) && strlen($bbbbb)>0){ $bbbbb = mb_convert_encoding($_GET['bbbbb'], "UTF-8"); htmlentities($bbbbb, ENT_QUOTES); $test1["name"] = $bbbbb; } if(isset($ccccc) && strlen($ccccc)>0){ $ccccc = mb_convert_encoding($_GET['ccccc'], "UTF-8"); htmlentities($ccccc, ENT_QUOTES); $test1["textdata"] = $ccccc; } /*あと27個つづきます*/ mysql_set_charset('utf8'); $my_1 = "SELECT * FROM tablename"; if(isset($test1) && !$test1==null){ foreach($test1 as $key => $value){$test2 = $key;} $my_1 .= " WHERE "; while($test1--){ $my_1 .= $test2."=".$test1[$test2]." AND "; if($test1==0){$my_1 .= $test2."=".$test1[$test2];} } $my_1_q = mysql_query($my_1,$mysql); } /*$my_1を他のとこでも使いたい*/ $my_2 = $my_1." ORDER BY id LIMIT 0,10"; $my_2_q = mysql_query($my_2,$mysql); $my_3 = "SELECT COUNT(*) AS ccc FROM tablename WHERE name='$aaaaa' AND bbbbb='$bbbbb'"; $my_3_q = mysql_query($my_3,$mysql); if(!$my_1_q && !my_2_q && !$my_3_q){die(mysql_error());} こんなかんじでやったのですが、クエリの作成でエラーになってしまいます。 できれば最初のifがいっぱい続くのももっと上手にできるようにしたいです。

    • ベストアンサー
    • PHP
  • PHPでDBからデータを抽出してHTMLで表示する

    クライアント上で表示されているHTMLのテキストボックスに入力された文字列をホストに送信し、送信した文字列をSQLの抽出条件に設定してDB(MySQL)に登録しているデータ一覧をPHPで取得後、取得したデータ一覧をクライアントのHTMLのTABLEに一覧で表示したいのですが、どのようにPHPとHTMLをプログラムすればよいでしょうか? イメージ MysSQL テーブル カラム1|カラム2|カラム3| AAAAA|BBBBB|CCCCC| BBBBB|BBBBB|CCCCC| DDDDD|BBBBB|CCCCC| HTML テキストボックス カラム1「AAAA」 検索実行↓ HTML テーブル カラム1|カラム2|カラム3| AAAAA|BBBBB|CCCCC| AAAAA|BBBBB|CCCCC| 素人染みた質問で申し訳ございませんが、ご存知の方がいらっしゃいましたら終えてください。 以上

    • ベストアンサー
    • HTML
  • PHPでDBからデータを抽出してHTMLで表示

    こんにちは。 PHP初心者のものです。 クライアント上で表示されているHTMLのテキストボックスに入力された文字列をホストに送信し、送信した文字列をSQLの抽出条件に設定してDB(MySQL)に登録しているデータ一覧をPHPで取得後、取得したデータ一覧をクライアントのHTMLのTABLEに一覧で表示したいのですが、どのようにPHPとHTMLをプログラムすればよいでしょうか? イメージ MysSQL テーブル カラム1|カラム2|カラム3| AAAAA|BBBBB|CCCCC| BBBBB|BBBBB|CCCCC| DDDDD|BBBBB|CCCCC| HTML テキストボックス カラム1「AAAA」 検索実行↓ HTML テーブル カラム1|カラム2|カラム3| AAAAA|BBBBB|CCCCC| AAAAA|BBBBB|CCCCC| 素人染みた質問で申し訳ございませんが、ご存知の方がいらっしゃいましたら終えてください。 以上

    • 締切済み
    • PHP
  • PHP ログインについて

    PHPを使い会員サイトを作っています。 遷移としては index→login→top でログインして中の各ページで、サイトロゴをクリックすればマイページトップに戻るようにしたいです。 ログイン時はPOSTでデータを受け取り、ログイン後はセッションで全ページを繋いでいます。 そののtopで困っています。 ログインしようとすると画面が真っ白になり、検証を見てもエラーは出ていませんでした。エラー表示になるよう設定しており、今までのエラーは見れていました。 session_start(); if(!isset( $_SESSION["uid"])&&(!isset( $_SESSION["pass"]))){ if(!isset ( $_POST ["uid"] )&&(!isset( $_POST["pass"]))){ header ( "Location: login.php" );} } if((isset ( $_POST ["uid"] ))&&(isset( $_POST["pass"]))){ login(); exit; } 上記で$_SESSIONのuidとpassがなければ$_POSTのuidとpassをチェック。$_POSTもなければ、login画面に移動。 $_POSTが入っていたら次のIF文で、関数login()。 関数login()は下記の通りです。 function login(){   function inputCheck($uid, $pass){ $flg=0; // IDの登録チェック require("dbConnect.php");//接続 $sql = "select * from usr where uid ={$uid}" ; //echo "sql=".$sql."<br>"; $result = $dbInfo->query ( $sql ); $record = $result->fetch ( PDO::FETCH_ASSOC ); $count = $result->rowCount (); if($count<=0){ echo "このIDは存在しません<br>"; $flg=1; } if($pass<>$record["pass"]){ echo "パスワードが違います<br>"; $flg=1; // データベースの切断 $dbInfo = null; } return $flg; } // 送信データの取得 $uid = htmlspecialchars($_POST ["uid"], ENT_QUOTES); $pass = htmlspecialchars($_POST ["pass"], ENT_QUOTES); $flg=inputCheck($uid, $pass); if($flg<>0){ require("login.php"); exit; }} 関数に入れ子で関数が使えると見たので中に入れましたが、inputCheck()をlogin()の外に出してみても同じように画面が真っ白になりました。 最初にログインだけ作って動かした際にはログインすることが出来ました。 ログイン状態のチェックが悪いのか関数の使い方が悪いのか、わかりません。 ご教授いただければ幸いです。

    • ベストアンサー
    • PHP
  • FLASHとPHPの連携について

    プログラミング初心者です。 いまポストカード作成システムを大学の課題で作っています。 環境はWindowsXP FLASH8Proです。 最後の保存するところで詰まっています。 現時点でできているところまでHPにアップしたので載せます。 ​http://www.geocities.co.jp/ysmnh028/otameshi.html​ URLより画像を読み込み最後に保存をしたくていろいろ調べていて、PHPと連携させてブラウザ上に新しいページで画像を生成し、それを右クリック⇒保存という形で保存できる事はわかりました。 SAVEボタンのASは以下のとおりです。 on (press) { // 保存用Bitmapを生成 var bmpSnap = new flash.display.BitmapData(300, 444, false); // 保存したいMovieClipをBitmapに描画する bmpSnap.draw(_root.photo_mc); // BitmapデータをRGB配列にする var img_data = new Array(); for (var x = 0; x<bmpSnap.width; x++) { for (var y = 0; y<bmpSnap.height; y++) { var col = bmpSnap.getPixel(x, y); img_data.push(("000000"+col.toString(16)).substr(-6, 6)); } } // データを送信 System.useCodepage = true; myLoader = new LoadVars(); myLoader.img_width = bmpSnap.width; // 画像幅 myLoader.img_height = bmpSnap.height; // 画像高さ myLoader.img_data = img_data.join(""); // 画像データ myLoader.send("snapshot.php", "_blank", "POST"); } PHP側は <?php // 送信データを取得 $img_data = $_POST['img_data']; $width = $_POST['img_width']; $height = $_POST['img_height']; $type = $_POST['img_type']; // IMAGE生成 $source_img = imagecreatetruecolor ($width, $height); // 背景色を生成 $bg_col = imagecolorallocate($source_img, 0xFF, 0xFF, 0xFF); $border_col = imagecolorallocate($source_img, 0x00, 0x00, 0x00); // イメージを描画 $p = 0; for ($x = 0; $x < $width ; $x++) { for ($y = 0; $y < $height ; $y++) { $rgb = hexdec(substr($img_data, $p, 6)); $p+=6; $r = ($rgb >> 16) & 0xFF; $g = ($rgb >> 8) & 0xFF; $b = $rgb & 0xFF; $col = imagecolorallocate($source_img, $r, $g, $b); imagesetpixel($source_img, $x, $y, $col); } } header("Content-Type: image/jpeg"); imagejpeg($source_img); exit; // JPEG出力 touch("test.jpg"); // まずは空ファイル生成 imagejpeg($source_img, "test.jpg"); // 画像を保存 header("Content-Type: image/jpeg"); readfile('test.jpg'); exit; ?> 以上です。 ローカルでためしたところ画像は表示されず、かわりに代替画像としてアドレスが表示されます。 考えられる原因はなんでしょうか?? よろしくお願いします。

    • 締切済み
    • PHP

専門家に質問してみよう