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

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

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

phpMyAdminはオープンソースで、PHPで書かれたウェブベースのMySQL管理ツールのことです。

PHP

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

JavaScript

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

Q&A

解決済

2回答

2042閲覧

別フレームにjsで変数を送信することができません。

alkeran

総合スコア29

phpMyAdmin

phpMyAdminはオープンソースで、PHPで書かれたウェブベースのMySQL管理ツールのことです。

PHP

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

JavaScript

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

0グッド

0クリップ

投稿2017/06/08 14:10

表題の件ですが、データベースの中にテーブルリストがtable1~10まであるのですが、どのテーブル名でリンクを飛ばしてもtable2.phpにはtable10としか表記されません。
どなたかご教授宜しくお願い致します。

//frame.php// <html> <head> <title></title> </head> <frameset cols="200,*"> <frame src="table.php" name="left" title="左フレーム"> <frame src="table2.php" name="right" title="右フレーム"> </html>
//table.php// <html> <head> </head> <body> <?php error_reporting(E_ALL ^ E_NOTICE ^ E_DEPRECATED); // データベースサーバへの接続 $db = mysql_connect('xxx','xxx','xxx'); // テーブルの一覧表示の関数呼び出し(ユーザ定義関数) show_tables('xxx',$db); // データベースサーバの切断 mysql_close($db); // ---------------------------------------------- // テーブルの一覧表示の関数の定義 function show_tables($db_name,$db) { // 指定されたデータベース内のテーブルリストの取得 $rs = mysql_list_tables($db_name,$db); // 結果セット内のレコード数の取得 $num_rows = mysql_num_rows($rs); print "<table>\n"; print "<tr>\n"; print "<td align=center>Tables in {$db_name}</td>\n"; print "</tr>\n"; // テーブルがある場合 if($num_rows > 0) { // 結果セット内のレコードを順次参照 for($i = 0; $i < $num_rows; $i++) { // テーブル名の取得 $table_name = mysql_table_name($rs,$i); ?> <script type="text/javascript"> <!-- function jump(){ parent.right.location.href = "table2.php?table_name=<?php print $table_name;?>"; } // --> </script> <?php // テーブル名の表示 print "<tr>\n"; print '<td><a href="#" onClick="jump(); return false;">'; print $table_name; print '</a></td>'; print "</tr>\n"; } } // テーブルが無い場合 else { print "<tr>\n"; print "<td>テーブルはありません</td>\n"; print "</tr>\n"; } print "</table>\n"; // 結果セットの解放 mysql_free_result($rs); } ?> </div> </body> </html>
//table2.php// <?php $table_name=$_REQUEST['table_name']; print $table_name; ?> ```

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

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

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

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

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

guest

回答2

0

jump()をループ内で関数宣言しているから10個のjump()が定義されてますね。
そして、それぞれが同じ名前であるためループ内で上書きしてます。
最終的に10個目のjump()のみが存在する形です。
なので、どこで呼び出しても10個目のjump()が実行されます。

対策としてはjump()をループの外で定義して、渡す引数でどこへ移動させるかを決めるような方法にするのが良いと思います。

php

1<script> 2function jump(table_name){ 3//処理 4} 5</script> 6 7<?php 8//テーブルを出力するループ処理 9?>

投稿2017/06/08 15:54

oskbt

総合スコア1895

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

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

alkeran

2017/06/09 13:40

ループの外で定義すると以下の部分が「ページのソースを表示」で確認すると何も表示されなくなるのですが...。 <?php print $table_name; ?>
guest

0

ベストアンサー

下記のように2回同じ名前の関数を定義すると後者に上書きされます。

HTML

1<script type="text/javascript"> 2<!-- 3function jump(){ 4 parent.right.location.href = "table2.php?table_name=1"; 5} 6// --> 7</script> 8<script type="text/javascript"> 9<!-- 10function jump(){ 11 parent.right.location.href = "table2.php?table_name=2"; 12} 13// --> 14</script>

また、table要素の直下にscript要素を入れるのは文法違反です。

<table> - HTML | MDN】
https://developer.mozilla.org/ja/docs/Web/HTML/Element/table


JavaScriptの関数jumpを引数を取るようにしてみてはいかがでしょうか。

HTML

1<script type="text/javascript"> 2<!-- 3function jump( num ) { 4 parent.right.location.href = "table2.php?table_name=" + num; 5} 6// --> 7</script> 8<table> 9<!-- --> 10</table>

PHP

1print "<tr>\n"; 2print '<td><a href="#" onClick="jump('; 3print $table_name; 4print '); return false;">'; 5print $table_name; 6print '</a></td>'; 7print "</tr>\n";

投稿2017/06/08 16:04

kei344

総合スコア69407

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

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

alkeran

2017/06/08 22:18

ありがとうございます。参考になります。 試したのですが、jsをテーブルの外に表記したら、"undefined"と表示されます。
alkeran

2017/06/08 22:21

申し訳ありません。 "undefined"ではなく何も表示されませんでした。
kei344

2017/06/08 22:21

print '<td><a href="#" onClick="jump('; print $table_name; print '); return false;">'; 上記部分で出力されたHTML(ブラウザで「ページのソースを表示」)はどうなっていますか?
alkeran

2017/06/09 13:25

申し訳ありません。 どこを見ればいいのかわからないですが、table2.phpの表示は変わりません。
alkeran

2017/06/09 13:31

すみません。見方が分かりました。 <a href="#" onClick="jump(table1) ... <a href="#" onClick="jump(table2) ... <a href="#" onClick="jump(table3) ... と続いていました。
kei344

2017/06/09 14:11

print '<td><a href="#" onClick="jump(`'; print $table_name; print '`); return false;">'; これでは?
alkeran

2017/06/09 14:21

できましたーー! ありがとうございます。!! バックオーテーションがないと駄目なんですね。 勉強になりました。
kei344

2017/06/09 14:25

''の中にある""の中にあるテキストなので、エスケープが面倒なのでバッククオートを利用しましたが、エスケープさえすればどれでも大丈夫だと思います。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問