• 締切済み

PHP javascript の関係に関して

現在、MySQLよりPHPを用いてデータを取得し、PHPのある変数にデータを格納しています。 その結果を、javascriptの中でデータとして使用したいと考えていますが、そもそもPHPで格納されている変数をjavascriptの中で使用する事は可能なのでしょうか。。。 //例ですが、   $sql = "select aaa from AAA"; if (!mysql_select_db('db', $con)) { echo 'Could not select database'; exit; } mysql_query("set names sjis"); $result = mysql_query($sql,$con); $row = mysql_num_rows($result); $count = 1; for($i=0;$i<$row;$i++) { $array = mysql_fetch_array($result); $tmp_aaa[$count] = $array[0]; $count++; } <script type="text/javascript"> <!-- msgtxt = new Array(); for (i=0; i<3; i++){ msgtxt[i] = new Array(); } $count = 0; for($i=0;$i<$row_naiyou;$i++) { $msgtxt[$count] = $tmp_aaa[$count]; $count++; } というような形です。 javascript自体、php> ?>の中に囲まれていれば問題ないのでしょうか? 初歩的な質問で申し訳ありませんが、教えて下さい。

みんなの回答

  • maura
  • ベストアンサー率46% (48/104)
回答No.2

PHPの配列を、JavaScriptの配列に ひとつずつ 値を代入しています。 例えば // 配列の宣言 var week = new Array(7) ; '0~6の7要素を持つ配列が作成されます。 // 要素への代入 week[0] = "sun" ; week[1] = "mon" ; week[2] = "tue" ; week[3] = "wed" ; week[4] = "thu" ; week[5] = "fri" ; week[6] = "sat" ; のJavaScirptを PHPで配列から値を与えるために week[0] = "<?php ehco $Week[0] ?>"; と書いてもいいし <?php echo 'week[0] = "' . <?php ehco $Week[0] ?> . '";'; ?> と書いても大丈夫です。 配列の個数が決まっていればその数だけ 1行ずつ書いていけばいいのですが 決まっていないとすると For 分でJavaScript の配列を作成します。

参考URL:
http://www.site-cooler.com/kwl/javascript/5.htm
SANA_999
質問者

補足

すみません。 もう1度確認させて下さい。 <script> <!-- var tmp_aaa = New Array(); <?php for ( $i = 1; $i < $count; $i++ ){ print "tmp_aaa[i] = '" . $tmp_aaa[i] . "';"; ↑この部分でPHPの配列からjavascriptの配列へ 格納しているという事でしょうか??? } ?> --> </script> 何度も申し訳ありません。 教えて下さい。

全文を見る
すると、全ての回答が全文表示されます。
  • maura
  • ベストアンサー率46% (48/104)
回答No.1

初歩的な回答として、JavaScriptをPHPでコーディングするという 方法で可能かと思います。 以下のコードは、PHPの配列をJavaScriptの配列にコピーしています <script> <!-- var tmp_aaa = New Array(); <?php for ( $i = 1; $i < $count; $i++ ){ print "tmp_aaa[i] = '" . $tmp_aaa[i] . "';"; } ?> --> </script> この結果、 -------------------------------------------- <script> <!-- var tmp_aaa = New Array(); tmp_aaa[1] = 'ABC'; tmp_aaa[2] = 'DEF'; tmp_aaa[3] = 'GHI'; } ?> --> </script>

SANA_999
質問者

補足

大変申し訳ありません。 初心者である為、教えて頂いた記述に解説を付けて頂けると 非常に助かります。。。 お願いします。

全文を見る
すると、全ての回答が全文表示されます。

関連するQ&A

  • 文字設定に関して

    教えて下さい。 自身の環境の文字設定が把握できておらず申し訳ありません。 以下のようにSQLを投げ、取得したデータを表示させようとしていますが、取得はできている ものの $tmp_kenmei を表示させようとしたところ、表示されません。 echo で中身を確認した際には、問題なくセットされていました。 また、where句で条件を指定しない場合は、問題なく取得できます。 文字設定か何かの問題かと思われますが、、、 何が原因でしょうか、、、教えて下さい。 よろしくお願いします。 《内容》 $tmp_kenmei = mb_convert_encoding($tmp_kenmei,"UTF-8","SJIS"); $con = mysql_connect("localhost", "root", "999999"); //データベースへ接続する if (!$con) { die('接続できませんでした: ' . mysql_error()); } $sql = "select kenmei from tbl_AAA where kenmei like '%" . $tmp_kenmei . "%'"; if (!mysql_select_db('db', $con)) { echo 'Could not select database'; exit; } $result = mysql_query($sql,$con); mysql_query("set names sjis"); if (!$result) { echo "DB Error, could not query the database\n"; echo 'MySQL Error: ' . mysql_error(); exit; } $row = mysql_num_rows($result); $count = 1; for($i=0;$i<$row;$i++) { $array = mysql_fetch_array($result); //件名 $tmp_kenmei[$count] = mb_convert_encoding($array[0],"SJIS","UTF-8"); echo mb_convert_encoding($array[0],"SJIS","UTF-8"); $count++; }

    • ベストアンサー
    • PHP
  • PHP+MySQLを実行するとエラーが出てパソコンがフリーズする。

    次のphpを実行すると、求めるデータは表示出来ますが、その下に引き続き Warnning:mysql_result()[function.mysql_result]: Unable to jump to row 7 on MySQL result index 3 in C:****test.php on line 10; 同文で on line 11; 以下,Unable to jump toの 「 row 7」 が row 8 row 9・・・・・・ と延々と続き、パソコンがフリーズしてしまいます。 実行したphp文。 <?php $con=mysql_connect(localhost,"root","root"); $selectdb=mysql_select_db("sales",$con); $sql="select * from sample"; $result=mysql_query($sql,$con); $row=mysql_fetch_array($result); $price=mysql_result($result,$i,1); $volume=mysql_result($result,$i,2); echo("$price:$volume<br>\n"); mysql_close($con); ?> 参考書を調べて、いろいろ変えてみましたが、分かりません。 幼稚なphp文で恐縮ですが、悪いところをご指摘頂ければ有難いです。

    • ベストアンサー
    • PHP
  • SQLのどこがおかしいでしょうか?

    PHP4、MySQLです。 for($i=1;$i<34;$i++){ $sql = "select count(group) as cnt".$i." "; $sql.= "from stock "; $sql.= "where group=".$i." "; //print "sql= ".$sql."<br>"; $result = mysql_query($sql,$db) or die("失敗しました".mysql_error ()); $Row = mysql_fetch_array($result, MYSQL_ASSOC); $cnt.$i = $Row['cnt".$i."']; } としています。どこがおかしいでしょうか? 教えてください。 よろしくお願いいたします。

    • ベストアンサー
    • PHP
  • データーベースの結果セットを分けて表示する方法について教えてください(PHP&MYSQL)

    PHP5.2.4 MYSQL14.12DistriB5.0.4 WINXP IE6.0 やりたいこと、結果セットを分けて表示したい。 20行の結果セットがあるとして、結果セットを表示するのに、10行を表示し、その後10行を表示すると言うように、結果セットを分けて表示する方法を教えてください。現在、下のように考えていますが、これでは、表示が、同じになってしまいます。$row=mysql_fetch_array($result);を使っているのがいけないのでしょうが、どう変更したらいいのかわかりません。宜しくお願いします。   for($i=1;$i<10;$i++){     if($i<=20){       $row=mysql_fetch_array($result);     }   }   for($i=11;$i<21;$i++){     if($i<=20){       $row=mysql_fetch_array($result);     }   }

    • ベストアンサー
    • PHP
  • PHPでjavascriptの2次元配列を宣言する

    はじめまして。 とっても困ってるので質問させてください。 「データベースからの取り出したデータをjavascriptで扱いたい」 下記のソースでjavascriptの2次元配列を宣言しているつもりなのですが、 データの取り出しが上手くいきません。。。 宣言自体ができてないのでしょうか??? PHPのソースを貼り付けます↓ echo "<script type=\"text/javascript\">"; echo "//<![CDATA["; echo "var SKind_name=new Array(".$temp.");"; for ($i=1;$i<=$cat_dtcnt;$i++) { $sql_scat_cnt = "SELECT COUNT(*) AS cnt FROM `map_subkind` WHERE kind_id = '".$i."'"; $res_scat_cnt = mysql_query($sql_scat_cnt) or die("データ抽出エラー"); $row_scat_cnt = mysql_fetch_array($res_scat_cnt, MYSQL_ASSOC); $scat_dtcnt = $row_scat_cnt["cnt"]; $temp = $scat_dtcnt+1; echo "SKind_name[".$i."]=new Array(".$temp.");"; echo "SKind_name[".$i."][0]=".$scat_dtcnt.";"; $sql_subcat= "SELECT * FROM `map_subkind` WHERE kind_id = '".$i."'"; $rst_subcat=mysql_query($sql_subcat) or die("データ抽出エラー"); $scatcnt = 1; while($row_scat=mysql_fetch_array($rst_subcat)) { echo "SKind_name[".$i."][".$scatcnt."] = \"".mb_convert_encoding($row_scat["skind_name"],"SJIS","EUC-JP")."\";"; $SKind_name_array[$i][$scatcnt] = mb_convert_encoding($row_scat["skind_name"],"SJIS","EUC-JP"); $scatcnt ++; } $scatcnt--; } echo "// --></script>";

  • phpの配列の宣言を自動でしたい

    $result = sqlite_query($sql,$con); // クエリを実行 $row = sqlite_num_rows($result); // 取得したレコード件数を変数$rowに格納する $a[1]=a; $a[2]=b; ~~ $a[rowの数値まで]=z; 上のように$a[$row]=~~;と配列の受け口を作り、そこにデータベースのデータを入れたいのですが、どうすればいいのでしょうか? $array = sqlite_fetch_array($result);とは別の配列にしたいです int seiseki[$row]でもだめでした どなたかお願いします

    • ベストアンサー
    • PHP
  • 連想配列(PHP 対 JavaScript)

    こんにちは。質問をさせてください。 PHPでOracleのデータを取得してそのデータを連想配列に格納するとします。 /------- PHP内でのソース -----------------/ (例) $Count:検索データ数  for($cnt=0;$cnt<$Count;$cnt++){ $data[$cnt] = "取得したデータ";  Fech(次のレコードを取得する); } 上記で取得した連想配列の値をJavaScriptでしようしたいのですが うまくいきません。 JavaScriptではArrayに取得したデータを格納したいのです。 (例) /-- JavaScript内のソース Afor2=new Array("取得data1","取得data2",・・・"最後の取得data"); としてHTMLの何かのイベント時にしようしたいと考えています。 今僕は以下のような動きをしたいです。 /----以下、JavaScriptでの記述-----------------/ var New_Array=new Array(5); for(i=0;i<<?=$Count?>;i++){ document.form.cmb_box.options[i] = new Option(<?=$data[i]?>, i); } のようなことをしたいのですが。 (もちろん上記はだめですが・・・) 質問がわかりにくくて大変もうしわけありませんが、 アドバイス、質問などよろしくお願いいたします。

    • 締切済み
    • PHP
  • MYSQLとPHPによって取得する多次元配列

    はじめてご質問させていただきます。 現在以下のようなテーブルが3つあります。 [ tbl1 ] | tbl1Key | title | | 1 | a | | 2 | b | | 3 | c | | 4 | d | [tbl2] | tbl2Key | tbl1Key | tbl3Key | | 1 | 2 | 2 | | 2 | 3 | 1 | | 3 | 3 | 4 | | 4 | 1 | 3 | [tbl3] | tbl3Key | value | | 1 | aaa | | 2 | bbb | | 3 | ccc | | 4 | ddd | 上記のデータソースを元に以下のような結果を得たいと考えています。 array( array( 'tbl1Key'=>1, 'title'=>'a', 'values' => array( array( 'tbl3Key'=>3, value='ccc' ) ), array( 'tbl1Key'=>2, 'title'=>'b', 'values' => array( array( 'tbl3Key'=>2, value='bbb' ) ), array( 'tbl1Key'=>3, 'title'=>'c', 'values' => array( array( 'tbl3Key'=>1, value='aaa'), array( 'tbl3Key'=>4, value='ddd' ) ), array( 'tbl1Key'=>4, 'title'=>'d', 'values' = > array( array( 'tbl3Key'=> , value='' ) ) ) この場合phpによって $sql = ("select * from `tbl1`"); $res = mysql_query( $sql, $con ); $data = array(); while( $row =mysql_fetch_object( $res ) ) { $sql = ("select * from `tbl3` inner join `tbl2` on `tbl3`.`tbl3Key`=`tbl2`.`tbl3Key` where `tbl2`.`tbl1Key`={$row->tbl1Key}"); $res2 = mysql_query( $sql, $con ); $tmp = array(); while( $r = mysql_fetch_object( $res2 ) ) { $tmp[] = $r->value; } $row->values = $tmp; $data = $row; } まずtbl1のデータをすべて取り、配列dataに格納する段階で、tbl1と関連付けされたtbl3のvalueを取得し配列tblに格納、それを新しい要素として配列dataにプッシュしている状況です。 こういったテーブルでいうところの1カラムのみ配列で返すような事は、こういったループを使って以外にも可能なのでしょうか。 よろしくお願いいたします。

    • 締切済み
    • PHP
  • mysqlからphpで値を取得する

    こんにちは、php初心者のBlackwinglsです。 mysql上に住所録があります。 mysql> select count(*) from jyusyo where seibetu = 'man' and name = 'tanaka'; とやると男性の田中さんは、6名と表示されます。 これをphpでやりたいのですが、 $sql ="select count(*) from jyusyo where seibetu = 'man' and name = 'tanaka'"; $result = mysql_query($sql,$con); ここから先の記述がよく分かりません。 mysql_fetch_array や mysql_result 等を試してみたんですが、基本的な事が分かってないので当然上手く動いてくれません(^^;) どなたかアドバイスを頂けたら幸いです。 環境 apache 1.3.26 mysql 3.23.49 php 4.1.2 ps php初心者にお勧めのWebPageありましたらあわせて紹介ください。

    • ベストアンサー
    • PHP
  • phpのmysql_fetch_arrayに該当する関数はありますか?

    以下のようなphp、MySQLのセレクト文は perlだとどのようになるのでしょうか? $sql="SELECT abc,xyz FROM table "; $res=mysql_query($sql,$con) or die("データベースを検索できませんでした。 mysql_error(); "); $i=0; while($row=mysql_fetch_array($res)) { $abc[$i]=$row['abc']; $xyz[$i]=$row['xyz']; $i++; }

    • ベストアンサー
    • Perl