どうかお願いします。
まず私がやりたい事は、
phpプログラムによってファイル名を入所し、HTMLのコンボボックスとして表示。
それを二つ作る。
その際、一つ目のコンボボックスで選ばれたディレクトリの中に入っているファイルを2つ目のコンボボックスで表示するようにする。
つまり
(1)利用者はディレクトリを一つ目のコンボボックスで選択
(2)そのディレクトリに入っているファイル名(TEXTファイル)などを2つ目のコンボボックスで選択
このような事をしたいと考えています。
一つ目のコンボボックスはできました。
しかし、二つ目ができません。
まず私は$dir = opendir("./");としてディレクトリを開いています。
一つ目は上でいいのですが、2つ目が$dir = opendir("./???");
??の部分に一つ目で選ばれた物を入れなくてはなりません。
しかし、HTMLやJavaScriptからPHPに変数を渡す方法がわからないのでできないんです・・・。。
どのようにしたらよいでしょうか。
長くなりましたがお願いします。
No.2ベストアンサー
- 回答日時:
ajax.html
---------------------------------------------------
<html>
<head>
<title>ディレクトリ</title>
<script type="text/javascript">
var Obj = false;
var loadFlag = 0;
var list_len = 1;
function changeList() {
if (loadFlag) {writeDiv('現在読み込み中です');return false;}
loadFlag = 1;
var dir = getDirName();
if(!Obj){Obj = getObj();}
Obj.open("GET","ajax.php?dir=" + dir,true);
Obj.onreadystatechange = getDir;
Obj.send(null);
}
function getDir() {
if (Obj.readyState == 4 && Obj.status == 200) {
var files = Obj.responseText;
if (files) {makeOption(files);
} else {alert('ディレクトリがないかファイルが存在しません');return;}
loadFlag = 0;
}
}
function getDirName() {
return document.dirList.dir[document.dirList.dir.options.selectedIndex].value;
}
function makeOption(files) {
var fileList = files.split("/");
var max = (fileList.length > list_len) ? fileList.length : list_len;
for (i = 0; i < max; i++) {
if ( i < list_len) {
getFormObj().options[i].value = fileList[i];
getFormObj().options[i].text = fileList[i];
} else if (i > fileList.length){
getFormObj().options = null;
} else {
getFormObj().options[i] = new Option(fileList[i],fileList[i]);
}
}
}
function getObj() {
var Obj = false;
if( window.XMLHttpRequest) {
Obj = new XMLHttpRequest();
} else if(window.ActiveXObject) {
try {
Obj = new ActiveXObject("Msxml2.XMLHTTP");
} catch(e) {
Obj = new ActiveXObject("Microsoft.XMLHTTP");
}
}
return Obj;
}
function getFormObj() {
return document.dirList.fileSelect;
}
</script>
</head>
<body>
<form name="dirList">
<select name="dir" onchange="changeList()">
<option>ディレクトリを選択してください
<option value="php4">php4
<option value="flash">flash
<option value="cgi-bin">cgi-bin
</select>
<select name="fileSelect">
<option>ディレクトリを選択してください
</select>
</form>
</body>
</html>
---------------------------------------------------
ajax.php
---------------------------------------------------
<?php
$dir = './' . preg_replace("~[\./]~",'',$_GET['dir']);
$return = array();
if (is_dir($dir)) {
$od = opendir($dir);
while ($d = readdir($od)) {
if (is_file("{$dir}/$d")) {
$return[] = $d;
}
}
}
echo (is_array($return)) ? join("/",$return) : $return;
?>
---------------------------------------------------
こんなのでどうでしょうか。
長くてすいません。
この回答への補足
わざわざプログラム組んでいただいてありがとうです><
さっそく試してみましたが、できません・・・。
コンボボックスが二つ表示されて、表示された内容は
・ディレクトリを選択してください。
・php4
・cgi-bin
・flash
そんなディレクトリはないのに表示されます。
ちなみにコンボボックスの下にはプログラムが入っているファイル名がすべて書かれます。
また二つ目のコンボには何もリストが表示されません。
ディレクトリを選択してくださいだけです・・・
どうなっているのでしょうか
No.4
- 回答日時:
#2の方へ対しての補足に関して一言。
ちゃんとソースを読んでから使いましょう。
どういう動きをするものなのか分からずに使っていては、
質問意図と返答内容がかみ合いません。
回答されたものはあくまでもサンプルなので、
自分が意図されるものに合うよう修正が必要です。
No.3
- 回答日時:
自分もPHPとJAVASCRIPTを混ぜて使おうとしている人です。
挫折しそうですが…(笑
JavaScriptでの別フレームや別ウィンドウ操作は
参考URLみてみるとわかりやすかったです。
参考URL:http://homepage2.nifty.com/BASH/WWW/JavaScript/a …
No.1
- 回答日時:
>しかし、HTMLやJavaScriptからPHPに変数を渡す方法がわからないのでできないんです・・・。
。HTMLやJavaScriptからPHPに変数を渡すには再度ページを呼び出さなければいけません。
一番簡単なのは一つ目のコンボボックスが選択された時点で一回JavaScriptのsubmit()で内容を送信してしまい、二つ目のコンボボックスに値が入力されているページを開く方法ですね。
ただし欠点としてコンボボックスを変えるたびに再読み込みすることになります。
これを応用しましてJavaScriptで幅と高さを0に設定した隠れたインラインフレームの内部を呼び出すかすぐ閉じるポップアップを開いてそのインラインフレームの内部やポップアップから二つ目のコンボボックスの内容を変更する方法もあります。
また選択するフォルダの数が少ない場合は、最初に全てのフォルダの内容を読み込んでしまっておいて後はJavaScriptで解決する方法もあります。
この回答への補足
>これを応用しましてJavaScriptで幅と高さを0に設定した隠れたイ>ンラインフレームの内部を呼び出すかすぐ閉じるポップアップを>開いてそのインラインフレームの内部やポップアップから二つ目>のコンボボックスの内容を変更する方法もあります。
この方法がまったくわからないのですが、どのようにしたらよいのでしょうか。
フレームに関する知識がないので勉強してみます。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Windows 10 指定したファイルを任意の範囲のディレクトリ内に上書き保存したい 1 2022/11/24 10:42
- MySQL MySQL,JavaScript,PHPコードの結果を表示する方法を教えてください。 1 2023/02/13 17:49
- SQL Server DBのテーブルの設計ができず困っています。 2 2023/06/29 16:43
- JavaScript セレクトを全て選択されていないと、文字によるエラーメッセージを表示させるコードを調べています 2 2023/06/22 15:48
- Access(アクセス) Accessの参照フィールドの列がずれてしまいます 1 2023/07/19 15:00
- PHP ファイルアップロードに関してのセキュリティについてアドバイスお願い致します 1 2023/08/20 00:25
- Visual Basic(VBA) Excel VBA ユーザーフォーム1のコンボボックスに別ブックの値を反映させたいです。 6 2023/03/21 16:12
- UNIX・Linux JSLinuxについて。 Linuxのこの手順のプログラミングは合っているでしょうか。 ①ホームディ 2 2022/06/20 15:33
- Excel(エクセル) フォルダ内のワードファイルをPDFに一括変換するVBA 3 2023/06/09 16:51
- Access(アクセス) Accessフォーム 一部のレコードだけを抽出する方法について 1 2022/06/28 18:45
関連するカテゴリからQ&Aを探す
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
fopenでファイルが開かない場合...
-
バッチを用いたフォルダの自動移動
-
onedrive にexcelファイルをア...
-
リンク先を隠す方法はないでし...
-
ImageCreate関数が undefined f...
-
libmcrypt の使用について
-
PHPのif文でその処理を途中で抜...
-
ローカル環境でのメール送信
-
ZendFrameworlkでZend_Session...
-
use と requireの違いは?
-
【PHP】tmp_nameの命名規約につ...
-
PHPでファイルアップロードを中...
-
youtubeに音声のみのmp4ファイ...
-
ワードプレスサイト PHP8.0.25...
-
PHPからPerlにデータを渡して結...
-
mb_send_mailを実行するとエラ...
-
phpでうまく画像がダウンロード...
-
PHP ページング データベース
-
URLの変わらないページをPHPで...
-
PHPで文字列(日本語)の比較
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
FTPコマンドでディレクトリごと...
-
CFileDialogの最初のディレクト...
-
バッチを用いたフォルダの自動移動
-
現在位置より2つ上のディレク...
-
fopenでファイルが開かない場合...
-
visualstudioでc#のdllができない
-
Subversionのリポジトリの削除
-
絶対パス?絶対アドレス?意味...
-
makefile でファイルをコピーす...
-
ファイル選択ダイアログで選択...
-
ファイルアップロードに関して...
-
rmdirでフォルダが消せません
-
【PHP】declare命令で”Fatal er...
-
[ ディレクトリ '.' は書き込み...
-
aspのページが表示できません
-
VB.NET 最下位のディレクトリ名...
-
glob関数で日本語文字が取得で...
-
図に示す階層構造で,現在のデ...
-
環境変数をMakefile内で有効に...
-
includeが出来ない訳とは?
おすすめ情報