人に聞けない痔の悩み、これでスッキリ >>

こんにちは。DB+PHPが初心者のものです。
前にもここで質問させていただきましたが、
自分なりにコードを書いてみたので
コードの訂正、ご教授をよろしくお願いいたします。

セレクトボックス1には、[table 1]の、種類が入り
れレクトボックス2には、[table 1]の種類に連動して、[table 2]の名前が選択できるようにする。

下記のようにソースを書いてみましたが、
table1の値は、セレクトボックスでちゃんと表示されますが、table2はセレクトボックスは表示されるものの、何も値がありません(T_T)

動きとしては、table1のセレクトボックスで選択したら、その項目をDBへ問い合わせ、その項目に対応した、DBに登録されているtable2の値を二つ目のセレクトボックスに表示させたいです。

<html>
<body>

<select name="mkoumoku">
<option selected>-------------</option>

<?php
//DB接続
$dbcon=mysql_connect("localhost","abcd","defg");
//DB選択
mysql_select_db("zozozo");

//table1を取得
$res=mysql_query("select distinct * from table1");
while ($rows=mysql_fetch_array($res)) {
echo "<option value=\"".$rows['id']."\">".$rows['kind']."\n";
}
echo "</select>";
?>

<select name="skoumoku">
<option selected>-------------</option>
<?
//table1に連動して項目を変えたいところのコード
$res1=mysql_query("select * from table2 where key =$_POST[mkoumoku] order by id");
while ($rows=mysql_fetch_array($res1)) {
echo "<option value=\"".$rows['id']."\">".$rows['name']."\n";
}

//Dbクローズ
mysql_close($dbcon);

?>
</body>
</html>

このQ&Aに関連する最新のQ&A

A 回答 (7件)

#5です。



> <form method="post" action="a.php">
> がありますが、この中の「action=」で指定される
> ファイルは、もう一回自分自身を呼び出すため?コード> と同じものでよいのでしょうか?

そうです。まずは1つ目のコンボは何を選ばれたかを自分自身
にページ遷移して$_POSTで受け取り、2つ目のコンボの内容を
決定しています。

>「登録ボタン」を押してDBへ登録するようにしたいので><input type="submit" value="登録">

OnChangeなどの部分で「submit()」ってするとページ遷移するっぽいです^^;
JavaScriptとして動作しているのかどうか知りませんが、
そのままform送信処理するようです。
初めて知りました(笑)
以下のコードでは上記内容にも対応する為、変更しています。
ついでなので、ミスやら面倒な記述をしていたのを変えました。

あと、MySQLはテーブル名、項目は大文字・小文字を区別して記述しないとダメですよ。

登録は2つ目のコンボが選択されなければ動作しません。

<?php
//DB接続
$dbcon=mysql_connect("localhost","abcd","defg");
//DB選択
mysql_select_db("zozozo");

if (isset($_POST['skoumoku']) And $_POST['skoumoku'] <> "none") {
//登録処理
regist();
exit;
}
?>
<html>
<body>
<form method="post" name="frm" action="a.php">
<select name="mkoumoku" onChange="submit()">

<?php
$slctd = ((!isset($_POST['mkoumoku']) Or $_POST['mkoumoku'] == "none")?" selected":"");
echo '<option value="none"'.$slctd.'>-------------</option>'."\n";

//table1を取得
$res=mysql_query("select distinct * from table1");
while ($rows=mysql_fetch_array($res)) {
$slctd = (($_POST['mkoumoku'] == $rows['id'])?" selected":"");
echo '<option value="'.$rows['id'].'"'.$slctd.'>'.$rows['kind'].'</option>'."\n";
}
echo "</select>";
?>

<select name="skoumoku">
<option value="none" selected>-------------</option>
<?php
//table1に連動して項目を変えたいところのコード
$res1=mysql_query("select * from table2 where table2.key='{$_POST['mkoumoku']}' order by id");
while ($rows=mysql_fetch_array($res1)) {
echo '<option value="'.$rows['id'].'">'.$rows['name'].'</option>'."\n";
}
echo "</select>";

//Dbクローズ
mysql_close($dbcon);

?>
<input type="submit" value="登録">
</form>
</body>
</html>
<?php
function regist() {
//登録処理
print <<< registed
<html>
<head>
<title>.....</title>
</head>
<body>
登録完了<br>
<p>
<a href="a.php">戻る</a>
</body>
</html>
registed;
}
?>

あと、思い通りの動作や表示がされなかった場合、
その状態のソースを見る事で原因がわかる場合もありますので、
状態が表示されている時に、ブラウザからソースの表示を行ってみて下さい。
    • good
    • 0
この回答へのお礼

naktak様、再度、ご回答ありがとうございます。
説明が分かりやすいので、大変助かりました。

その後、色々と改良して試してみましたところ、
2つのセレクトボックスは連動して、動作いたしました。原因は、
$res1=mysql_query("select * from table2 where table2.key='{$_POST['mkoumoku']}' order by id");

このソースのtable2.key='{$_POST['mkoumoku']}'の部分を、table2.key=".$_POST['mkoumoku']"に変えましたら正常に動作いたしました!

本当にありがとうございました。

今から、ここでセレクトした値を
あらかじめ用意してある、空のテーブルにinsertして
表示する処理を頑張ってみようと思います。
またgooさんの方へお世話になりそうですが・・・(^^ゞありがとうございました。

お礼日時:2006/03/02 17:39

「<<<」は「ヒアドキュメント」といいます。


便利なので是非ご利用ください。
文法的にはまずはご自身で調べて頂く方がよいと思いますが、
端的に申し上げると終端子(この場合「eof」)まで文字列
が続いていることを示しています。
ちなみに「eof」は別に「hoge」でも「aaa」でも何でも
いいんです。
(※本来eofとはファイルの終わりを意味します)

print <<<eof
aaa
bbb
ccc
eof;
とするとソース的には「aaa改行bbb改行ccc」が表示されます。
(htmlでは改行は無視されますが・・・)

$x .=<<<eof
aaa
bbb
ccc
eof;
とすると「aaa改行bbb改行ccc」が$xに追加記入されます。

それと前のコードに記載ミスがあったので訂正しておきます。

<?php
$dbcon=mysql_connect("localhost","abcd","defg");
mysql_select_db("zozozo");
$res=mysql_query("select distinct * from table1");

while ($rows=mysql_fetch_array($res)) {
$flg=(($rows['id']==$_POST['mkoumoku'])?"selected":"");
$select_mkoumoku.=<<<eof
<option value="{$rows[id]}" $flg>{$rows[kind]}</option>
eof;
}

$res=mysql_query("select * from table2 where key ='{$_POST[mkoumoku]}' order by id");
while ($rows=mysql_fetch_array($res)) {
$select_skoumoku.=<<<eof
<option value="{$rows[id]}">{$rows[name]}</option>
eof;
}
mysql_close($dbcon);

print <<<eof
<html>
<body>
<form action="$PHP_SELF">
<select name="mkoumoku" onChange="this.form.submit()">
<option value="">-------------</option>
$select_mkoumoku
</select><br>
<select name="skoumoku">
<option value="">-------------</option>
$select_skoumoku
</select><br>
<input type="submit" value="実行">
</form>
</body>
</html>
eof;
?>
    • good
    • 0
この回答へのお礼

yambejp様。

再度回答をありがとうございました。
無事、解決いたしましたのでご報告いたします。
大変、助かりましたm(__)m

そして、ヒアドキュメントについて
また知識が一つ増えたので、嬉しかったです。
ありがとうございました(*^_^*)

お礼日時:2006/03/02 17:42

こんな感じでどうでしょうか。



【a.php】
<?php
//DB接続
$dbcon=mysql_connect("localhost","abcd","defg");
//DB選択
mysql_select_db("zozozo");
?>
<html>
<body>
<script language="javascript">
function submit()
{
document.forms.submit();
}
</script>
<form method="post" action="a.php">
<select name="mkoumoku" onChange="submit()">

<?php
if (! isset($_POST['mkoumoku']) Or $_POST['mkoumoku'] == "none") {
echo '<option value="none" selected>-------------</option>';
}
else {
echo '<option value="none">-------------</option>';
}
//table1を取得
$res=mysql_query("select distinct * from table1");
while ($rows=mysql_fetch_array($res)) {
if ($_POST['mkoumoku'] == $rows['id']) {
echo '<option value="'.$rows['id'].'" selected>'.$rows['kind'];
}
else {
echo '<option value="'.$rows['id'].'">'.$rows['kind'];
}
}
echo "</select>";
?>
</form>

<select name="skoumoku">
<option selected>-------------</option>
<?
//table1に連動して項目を変えたいところのコード
$res1=mysql_query("select * from table2 where table2.key={$_POST['mkoumoku']} order by id");
while ($rows=mysql_fetch_array($res1)) {
echo '<option value="'.$rows['id'].'">'.$rows['name'];
}
echo "</select>";

//Dbクローズ
mysql_close($dbcon);

?>
</body>
</html>

SQLで文法エラーを起こしています。
「key」という項目名は、SQL上の文法になりますので
(PRIMARY KEY ~など)、
項目名「key」としてしまっている時点でエラーになってしまっています。
上記プログラムでは「key」を「table2.key」と
明示的にtable2の項目だよと示して動作させています。
    • good
    • 0
この回答へのお礼

naktak様、ご回答ありがとうございますm(__)m

早速、自分のDBと照らし合わせて試してみました。
そこでまた質問が浮上してきたのですが、
お付き合いくださいませ。

コードの中に
<form method="post" action="a.php">
がありますが、この中の「action=」で指定される
ファイルは、もう一回自分自身を呼び出すため?コードと同じものでよいのでしょうか?
(a.phpだったら、action="a.php"に。)

また、試してみたのですが、
2つ目のセレクトが、連動してくれません(T_T)
ふと思ったのですが、私のmysqlのDBのkeyの登録の仕方もあるのでしょうかね。。疑問です。。
ご丁寧にご教授いただいたので頑張ってみます。。

また、2つのセレクトを選択した一番最後に
「登録ボタン」を押してDBへ登録するようにしたいので<input type="submit" value="登録">
を最後に付け足してみましたが。。

「key」についてもSQLで構文法があることを知らなかったのでとても勉強になりました^^

お礼日時:2006/03/02 15:00

#3補足です



htmlのoptionについているselectedははずして
ください。別途処理入れてありますので
    • good
    • 0
この回答へのお礼

yambejp様、ご回答ありがとうございます。
すごく困っているので助かりました・・・。
そして試してみたのですが、
一つ目のセレクトの項目が
セレクトボックスの外に出て表示されてしまいます・・・。原因を突き止めるため、またもコードと格闘していますが・・・。????

そこで、気がついたのですが、
ちなみに、コードの中にある、
「eof;」や、「print <<<eof」は
これはどういった意味というか、処理なのでしょうか?

またソースの書き方について、色々とアドバイスくださりありがとうございましたm(__)m
試行錯誤でやっているので、自分でもコメントを入れておかないとよく分からなくなってきます(苦笑)。
勉強になりました。

お礼日時:2006/03/02 14:05

#1さんの言うとおり$_POST[mkoumoku]が問題です。


コーテーションの中でやるなら
{$_POST[mkoumoku]}とする必要があります。
さもなくば1度コーテーションの外で
"文字".$_POST['mkoumoku']."文字"としてください。
しかも$_POST['mkoumoku']がヌルのときには
SQLのエラーになるので、かならずSQL文の中では
シングルコーテーションで囲みましょう。

さて、前の書き込みに真っ先に回答つけましたが
本質的にajaxなどで処理しない限りこの手のことは
できません。ただ単なるjavascriptでも以下のように
すればいけます。ちゃんとsubmitを用意すれば、
javascriptが使えない環境の人でも使えます。
ユーザビリティを常にあたまにいれておきましょう。

それと素人にありがちなのですが、コードを埋め込み
すぎです。自分で書いてて何がなんだかわからなく
なりませんか?
DBによる検索部分と、HTMLの表示部分はヒア
ドキュメントをつかって極力処理をわけたほうが
よいと思います。

以下未検証なので動く保証はありませんが・・・
<?php
$dbcon=mysql_connect("localhost","abcd","defg");
mysql_select_db("zozozo");
$res=mysql_query("select distinct * from table1");

while ($rows=mysql_fetch_array($res)) {
$flg=(($rows['id']==$_POST['mkoumoku'])?"selected":"");
$select_mkoumoku.=<<<eof
<option value="{$rows[id]}" $flg>{$rows[kind]}
eof;
}

$res=mysql_query("select * from table2 where key ='".$_POST['mkoumoku']."' order by id");
while ($rows=mysql_fetch_array($res)) {
$select_skoumoku.=<<<eof
<option value="{$rows[id]">{$rows[name]}
eof;
}
mysql_close($dbcon);

print <<<eof
<html>
<body>
<form action="$PHP_SELF">
<select name="mkoumoku" onChange="this.form.submit()">
<option selected>-------------</option>
{$select_mkoumoku}
</select><br>
<select name="skoumoku">
<option selected>-------------</option>
{$select_skoumoku}
</select><br>
<input type="submit" value="実行">
</form>
</body>
</html>
eof;
?>
    • good
    • 0

これって多分思っている以上にやっかいですよ。


というのもPHPはサーバーサイドプログラムなので、クライアントクライアントが何らかのアクションをサーバーに送らない限り、関与できません。
ですからPHPだけで行いたければ、
table1のデータを選択したという情報をサーバーに送らなければなりません(POSTする)
そこで初めてtable2のデーターをDBから取得できます。

こういう場合はJavaScriptと連動して行うのが普通ですが、大変失礼ですが、おそらくスキル的に厳しいと思います。
概要だけ説明しますと、
1.ページ表示時に、table2で選択できる要素を全てDBから引いて、JavaScriptの関数にセットする。
2.document.form.elementで、table1により選択された値と連動する値をtable2にセットする
こんな感じです。
    • good
    • 0
この回答へのお礼

早速の回答、ありがとうございますm(__)m

kusukusu様のおっしゃる方法で
table1のデータを選択したという情報をサーバにPOSTするには、このコードから改良は可能でしょうか?
そうなんですよね、私がやろうと思っていることは、自分のスキル的に厳しいのは十分分かっているんですが、PHPを使ってとされているので・・・

そして、その後table2のデータを取得できるのですね。まずは、サーバにPOSTすることが最初のステップということですね。

また、よろしければ、このコードからどう改良すればよいか、ご教授していただければと思います。
よろしくお願いいたしますm(__)m

お礼日時:2006/03/02 13:29

1つ目のコンボを選んだらどうなるのですか?


PHPでは一度サーバに送信しないと処理は出来ませんよ。
それが嫌なら、コンボを変化させるJavaScriptを生成するような
PHPコーディングをしなければなりません。

このプログラムでは、$_POST[mkoumoku]は常に空だと思います。
    • good
    • 0
この回答へのお礼

早速の回答をありがとうございます。

一つ目をセレクトしたら
PHPでDBへ問い合わせるようにしたいと思っています。
そして、一つ目で選んだ項目に応じて
二つ目のセレクトの項目を変える形を目標としているのですが、なんせ、初心者なもので、
その問い合わせの仕方も悩んでおります・・・。

やはり、今の現状では、$_POST[mkoumoku]は空の状態ですよね・・・だから、値が空のまま表示されてしまっていたのですね・・・。このコードからどのように改良したらよいか、ご教授お願いできませんでしょうか?

お礼日時:2006/03/02 13:13

このQ&Aに関連する人気のQ&A

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています

このQ&Aを見た人が検索しているワード

このQ&Aと関連する良く見られている質問

QプルダウンメニューでValue値をPHPへの受け渡しができません

こんばんは。

HTML(apache)+MySQL+PHPの連携で、プルダウンメニュ
ー2つとテキストボックス2つの入力内容をPHPにデー
タとして渡し、それをキーワードにして、データベー
スの検索をする、という処理をさせようと思い、PHP
にデータを渡すためのタグを書いています。

http://ns1.php.gr.jp/pipermail/php-users/2002-December/012011.html

を参考に、テキストボックス2つの内容をPHPに渡すこ
とはできたのですが($_POST関数で渡しています)、
プルダウンメニューで選択した場合のvalue値を、PHP
に渡す処理ができず、行き詰っています。

http://www.big.or.jp/~mio/ga/ht/htref/ht_ref_optio.htm

で、プルダウンメニューで選択した場合のvalue値を
渡すことは可能と思い、タグを書きましたが、PHPで
データをダンプさせると何も表示されませんでした。
つまりはPHPにはデータが渡されていない状態で、HTM
Lタグレベルでの問題という事が分かり、タグの勉強
もしましたが、option部分の記述は間違っていないの
では?、と思っています。

ではform actionの、データを送信する送信ボタンの
記述で足りないところがあるのでは、と思い、調べた
のですが解決方法が見つかりません。
どなたかご教授いただけましたら幸いです‥
宜しくお願い申し上げます。

クライアント環境はWin2000、IE6.0
サーバーはRedHat9.0でPHPは4.2.2です。

こんばんは。

HTML(apache)+MySQL+PHPの連携で、プルダウンメニュ
ー2つとテキストボックス2つの入力内容をPHPにデー
タとして渡し、それをキーワードにして、データベー
スの検索をする、という処理をさせようと思い、PHP
にデータを渡すためのタグを書いています。

http://ns1.php.gr.jp/pipermail/php-users/2002-December/012011.html

を参考に、テキストボックス2つの内容をPHPに渡すこ
とはできたのですが($_POST関数で渡しています)、
プルダウンメニューで選択した場合のvalue値を、PHP
...続きを読む

Aベストアンサー

この場合、
<form> タグの位置を変えるだけで動作します。
<select>タグの前に移動させてください。
PHP4.0.6で動作確認済みです。
JavaScript使うまでもなかったですね。失礼しました。
=== 以下ソース ===

<html>
<body>
<form action="yamaha0.php" method="post"> <!-- ここに移動 -->

<br>分類<br>
<select name="clasfct" size="3">
<option value="1">新機能</option>
<option value="2">仕様変更</option>
<option value="3">バグ修正</option>
</select>

<p>

Rev<br>
<select name="rev" size="3">
<option value="1">ver 8.01.15</option>
<option value="2">ver 7.01.34</option>
<option value="3">ver 7.00.29</option>
</select>
<br>

キーワード1を入力してください(必須):<input type="text" name="key1"><br>
<p>
キーワード2を入力してください(任意):<input type="text" name="key2"><br>
<p><input type="submit" name="exec" value="検索">
</form>
</body>
</html>

この場合、
<form> タグの位置を変えるだけで動作します。
<select>タグの前に移動させてください。
PHP4.0.6で動作確認済みです。
JavaScript使うまでもなかったですね。失礼しました。
=== 以下ソース ===

<html>
<body>
<form action="yamaha0.php" method="post"> <!-- ここに移動 -->

<br>分類<br>
<select name="clasfct" size="3">
<option value="1">新機能</option>
<option value="2">仕様変更</option>
<option value="3">バグ修正</option>
</select>

<p>

Rev<br>
<...続きを読む

QプルダウンメニューにDBの内容を表示させる

いつもお世話になっております。
度々ですが躓きましたので皆様の知恵をお借りしたいと思います。
どうぞ宜しくお願い致します。

題名にもある通り、HTMLのプルダウンメニューで選択する項目をDBから取得し、他のDBに登録させたいです。
以下、処理時のコードです。
$result = pg_query($con, "SELECT project FROM project_tbl");
$col = pg_fetch_array($result);
<SELECT NAME="project">
<OPTION VALUE="$col['project']">
</SELECT>

但し、このコードではDBの内容を取得する事が出来ませんでした。
問題点はこれ以外に
・DBに複数行のデータがある時、複数行を取得出来ない
・仮にプルダウンで選択させる事が出来たとしても、登録ボタンを押せば
選択した内容が消えてしまう
と考えています。

どれに対しても解決策が見出せないので、皆様のお力をお借りしたいと
考えています。 宜しくお願いします。

いつもお世話になっております。
度々ですが躓きましたので皆様の知恵をお借りしたいと思います。
どうぞ宜しくお願い致します。

題名にもある通り、HTMLのプルダウンメニューで選択する項目をDBから取得し、他のDBに登録させたいです。
以下、処理時のコードです。
$result = pg_query($con, "SELECT project FROM project_tbl");
$col = pg_fetch_array($result);
<SELECT NAME="project">
<OPTION VALUE="$col['project']">
</SELECT>

但し、このコードではDBの内容を取得する事が出来ませんでし...続きを読む

Aベストアンサー

#1です。
まず、記述が足りなかった行なのですが
<OPTION VALUE="<?php $data['project'] ?>">

<OPTION VALUE="<?php $data['project'] ?>"><?php echo $data['project'] ?></OPTION>
です。すみません。
失礼な事をお聞きしてすみませんが、
お使いのDBはPostgreSQLですよね?
PostgreSQLならpg_query・pg_fetch_array
MYSQLならmysqy_query・mysql_fetch_array
で同等の扱いでいけるのではと思ったのですが。。
私の持っている環境はMYSQLしかないのでそちらの環境では同じロジックで関数を
pg_query → mysqy_query
pg_fetch_array → mysql_fetch_array
に変えただけで正常に取得できました。
同じ使い方ではいけないのでしょうかね。。
お役に立てず、すみませんです。

Qプルダウンの値をphpファイルへ渡したい

いつもお世話になっております。

現在、作成中のHPですが、データ取得をphpで行い表示をしています。

(1)a.phpでプルダウンのデータを取得し、b.phpで表示。
(2)b.phpでプルダウンを選択し、その値をtest.phpへ渡す。

(2)で、プルダウンの値を渡す処理がどうしてもうまくできず、
とても困っています。

どこを修正すればよいのかご教授願いたいのですが・・・。
スクリプトは下記の通りです。

-------------------------------------------------------
【b.php】
<html>
<head>
<title>テスト</title>
</head>
<body>

<SCRIPT language="JavaScript">
function testphp(){
try{

with(document.testform){
action="http://test/test.php";
test.value = testform.testselect[testform.testselect.selectedindex].value;
method="POST";
submit();
}
} catch(e) {
alert("エラーは " + e.description + " です。");
}
}
</SCRIPT>

<form name="testform" onchange="testphp()">
<select name="testselect">
<option value="あ">結果1</option>
<option value="い">結果2</option>
<option value="う">結果3</option>
<option value="え">結果4</option>
<option value="お">結果5</option>
</select>
</form>

</body>
</html>

【test.php】
<?php

//変数処理
$a = @$_POST["test"];

print "渡された値:".$a;
exit;

?>
-------------------------------------------------

どうぞ、宜しくお願い致します。

いつもお世話になっております。

現在、作成中のHPですが、データ取得をphpで行い表示をしています。

(1)a.phpでプルダウンのデータを取得し、b.phpで表示。
(2)b.phpでプルダウンを選択し、その値をtest.phpへ渡す。

(2)で、プルダウンの値を渡す処理がどうしてもうまくできず、
とても困っています。

どこを修正すればよいのかご教授願いたいのですが・・・。
スクリプトは下記の通りです。

-------------------------------------------------------
【b.php】
<html>
<head>
<title>テスト</title>
</hea...続きを読む

Aベストアンサー

>Array ( [test] => [testselect] => い )
ですから、testに値が入っていませんね。
$a = @$_POST["test"];
としても、testに値がないので、表示されません。

test.value = testform.testselect[testform.testselect.selectedIndex].value;
はまだ残っているんですよね?
単純に「い」だけを取り出したいなら、testに入れなくても
セレクトボックスの値を取り出せばいいと思うのですが。

【b.php】
<SCRIPT language="JavaScript">
function testphp(){
try{
with(document.testform){
action="http://test/test.php";
method="POST";
submit();
}
} catch(e) {
alert("エラーは " + e.description + " です。");
}
}
</SCRIPT><form name="testform">
<select name="testselect" onchange="testphp()">
<option value="あ">結果1</option>
<option value="い">結果2</option>
<option value="う">結果3</option>
<option value="え">結果4</option>
<option value="お">結果5</option>
</select>
</form>

【test.php】
<?php
//変数処理
$a = $_POST["testselect"];
print "渡された値:".$a;
exit;
?>

>Array ( [test] => [testselect] => い )
ですから、testに値が入っていませんね。
$a = @$_POST["test"];
としても、testに値がないので、表示されません。

test.value = testform.testselect[testform.testselect.selectedIndex].value;
はまだ残っているんですよね?
単純に「い」だけを取り出したいなら、testに入れなくても
セレクトボックスの値を取り出せばいいと思うのですが。

【b.php】
<SCRIPT language="JavaScript">
function testphp(){
try{
with(document.testform){
action="http://test/tes...続きを読む

Q値だけ送信してページは遷移させないためには?

CGIの掲示板のCGI管理者ページの仕様を変更したいのですが(投稿した内容をまず確認し、実際ページに反映させる「許可」「不許可」を決定し、許可されたコメントに返信をつけるページです)、「許可」「不許可」を設定した際、その対象のスレッドの位置から遷移しないようにしたいのですが、フォームのactionで設定したページにリロードされてしまい、「許可「不許可」を編集した位置と違う位置になるので使いづらく困っています。actionで設定したCGIに値だけ送信して、現在編集している位置から移動させず「許可」「不許可」の反映を確認できるようにしたいのですが、そのような設定のためにはどのようなスクリプトがひつようなのでしょうか。

Aベストアンサー

 えーと。
 </BODY> タグの直前に、

<iframe name="f1" width=0 height=0 style="visibility:hidden"></iframe>

 というタグを置きます。

 で次に、当該の <FORM> タグのオプションの1つとして、target="f1" と追加します。
 具体的にいうとこんな感じ。

<FORM ACTION="...." TARGET="f1">

 どうでしょ?

QAjaxでDBと連携した動的リストボックスを作りたい

こんにちわ。

PHPの学習を始めたばかりなのですがリストボックスを使ったWEBで行き詰っています。

リストボックスは3つあり1つ目をSQL Server(ODBC接続)より値を表示して1つ目の値によって条件を絞った値を表示するこれもSQL Server(ODBC接続)です。3つめも同様の仕組みです。

数日間調べていたのですがSQL Serverを使用した例がありませんでした。

ご存知のサンプルがございましたら教えて下さい。

submitでのリストボックス連携はできるのですが画面のちらつきを改修して欲しいとのことからAjaxに辿り着きました。

皆様のお力をお貸し頂き解決までお付き合い頂ければ幸いです。

どうぞよろしくお願い致します。

Aベストアンサー

知りたいのはPHPで作るサーバサイドのプログラムのことですか。
それともJavaScriptで作るクライアントサイドのプログラムのことですか。
具体的にどの辺りで躓いているんでしょうか。

Qdbに登録したデータをphpのプルダウンに表したい

mysqlに登録したデータをphpのプルダウンに表示させたいです。
database [db1] table [unit]カラム group varchar(20)
に登録しているグループ名5個を選べるようにしたいのですが知恵を拝借できますでしょうか。

<?php
$s=mysql_connect("サーバー名","アカウント","パスワード") or die("失敗しました");
print "接続OK"<BR>;
mysql_select_db("db1");

ここから先が知りたいです。
みなさまのお知恵を拝借したいです。
ぜひよろしくお願い致します。

Aベストアンサー

微妙に感覚がずれていますが勝手にテーブル構成を想像して以下のように

<?PHP
//事前処理
$s=mysql_connect("サーバー名","アカウント","パスワード") or die("失敗しました");
mysql_select_db("db1");
?>

<select name="b1">
<option value="">--グループ--</option>
<?PHP
$sql="select busho_id,busho_name from busho_table";
$res=mysql_query($sql,$c);
while($row=mysql_fetch_array($res,MYSQL_ASSOC)){
print "<option value=\"".$row["busho_id"]."\">".$row["busho_name"]."</option>\n";
}
?>
</select>

QPHP ボタンが押されたら処理を実行する

PHPプログラミングをしています。
「はい」というボタンが押されたらこの処理を行い、
「いいえ」というボタンが押されたらこの処理を行う
ということはどうすれば実装できるのでしょうか?

Aベストアンサー

どういう環境下で作っておられるのかが全然わかりませんが、
PHPというこですので、Webベースのフォームですよね。

たとえば、「はい」ボタンと「いいえ」ボタンをそれぞれフォームのSubmitにしておいて、
POST先のフォームで処理を分ければどうでしょうか。

送信元
<form name="Hai" method="POST" action="hoge.php">
<input type="hidden" name="answer" value="1">
<input type="submit" value="はい">
</form>

<form name="Hai" method="POST" action="hoge.php">
<input type="hidden" name="answer" value="0">
<input type="submit" value="いいえ">
</form>


送信先
$answer = $_POST["answer"];

if($answer == 1){
// 「はい」の時の処理
}else{
// 「いいえ」の時の処理
}


ちなみに、自分から自分へPOSTすればPHPスクリプトも2つに分けずにできると思います。
また、POSTじゃなくGETでも同様のことはできると思います。

どういう環境下で作っておられるのかが全然わかりませんが、
PHPというこですので、Webベースのフォームですよね。

たとえば、「はい」ボタンと「いいえ」ボタンをそれぞれフォームのSubmitにしておいて、
POST先のフォームで処理を分ければどうでしょうか。

送信元
<form name="Hai" method="POST" action="hoge.php">
<input type="hidden" name="answer" value="1">
<input type="submit" value="はい">
</form>

<form name="Hai" method="POST" action="hoge.php">
<input type="hidden" name="answer" ...続きを読む

Qonchangeイベントを強制的に発生させる

お世話になります。
onchangeイベントをjavascriptで強制的に動作させたいと思っております。

発生させたい場合
・ユーザーがtextボックスを入力
・リンクボタンを押下した場合

簡単なことなのかもしれませんが、
ご教授よろしくお願いいたします。


<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN">
<script type="text/javascript">

function change(){
alert('test');
}

function update(){
document.getElementById('1').value = "update";
document.getElementById('1').onchange = change;
}


</script>

<input id="1" type="text" value="1" onchange="change();">

<a href="javascript:update();">update</a>

お世話になります。
onchangeイベントをjavascriptで強制的に動作させたいと思っております。

発生させたい場合
・ユーザーがtextボックスを入力
・リンクボタンを押下した場合

簡単なことなのかもしれませんが、
ご教授よろしくお願いいたします。


<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN">
<script type="text/javascript">

function change(){
alert('test');
}

function update(){
document.getElementById('1').value = "update";
document.getElementById('1').onchan...続きを読む

Aベストアンサー

回答は出てますが・・・onchangeにこだわるなら、

document.getElementById('***').onchange();

()を付ければ呼び出せます。(Windows FireFox2、Opera8で確認)


var f = document.getElementById('***').onchange;
f();

IE6の場合はいったん変数に代入する必要があるようです。

QボタンをクリックでPHP文を実行

ボタンをクリックしたときのみPHP文を実行したいのですが・・・

<input type="button" onClink="<?php~?>">
でいけるかと思ったのですが、
ページ表示時に<?php~?>が実行されてしまい、うまくいきませんでした。

onClink="window.open(test.php)"
という方法以外でお願いします。

Aベストアンサー

AjaxはもともとJavaScriptの機能である非同期通信をつかったもので。Ajaxという言語があるわけではありません

Ajaxを利用するのであれば、JavaScriptのXMLHttpRequestを使って非同期通信できるような実装をしなくてはなりません
簡単にサンプルコードで書けるほど単純なものでもありません

一般的なサーバーサイドスクリプトの動作として、
ボタンを押す->サーバーへリクエストする->サーバーが処理する->クライアントに何かしらの結果を返す(出力する)です
つまり、PHP等のサーバーサイドスクリプトは、遷移させることが大前提で動作します

ですから、ボタンを押してその場でJavaScriptと同じようにPHPが動くなんてことはありえません。
ボタンを押したらサーバーにリクエストする という動作ならば可能です。

つまり
質問で言われているような
onClink="window.open(test.php)"

<form name="f1" action="test.php" method="post">
<input type="submit" name="submit" value="submit" />
</form>
等のような形になります

こういった一般的な方法だと いちいち画面が切り替わったようになってしまうのを嫌って Ajaxでコレと同じことを、画面を切り替えずに行っているだけに過ぎません

AjaxはもともとJavaScriptの機能である非同期通信をつかったもので。Ajaxという言語があるわけではありません

Ajaxを利用するのであれば、JavaScriptのXMLHttpRequestを使って非同期通信できるような実装をしなくてはなりません
簡単にサンプルコードで書けるほど単純なものでもありません

一般的なサーバーサイドスクリプトの動作として、
ボタンを押す->サーバーへリクエストする->サーバーが処理する->クライアントに何かしらの結果を返す(出力する)です
つまり、PHP等のサーバーサイドスクリプトは、...続きを読む

Qプルダウンリストを作りMySQLからデータを取得してonchangeする方法

http://oshiete1.goo.ne.jp/oshiete_new.php3
のように、
プルダウンリストを作りMySQLからデータを取得してonchangeする方法を教えていただけませんか?

技術者向コンピューター
↓*onchangeでデータベースから取得?
プログラミング

JavaScript

具体的にやりたいことは、
お店の住所を登録してもらうスクリプトを作りたいと考えています。
そのため、
北海道

札幌市

○○・・・
のように、都道府県を選ぶとonchangeで市区町村が表示されていく、というようなものを造りたいと考えています。
スクリプトの検索ページで、『北海道』などで検索をかけるつもりですので、データベース(MySQL)に格納したいと思っています。

ざっくりした質問で申し訳ないですが、参考になるページでも結構ですので、教えていただけたらうれしいです。
よろしくお願いします。

Aベストアンサー

失礼ながらmakoto_tyさんがどの程度の知識をお持ちかわからないですし、どの部分が一番ネックになっているのかわからない為、流れとポイントをお伝えします。

まず、プルダウンのonchangeイベントと同時にAjaxでサーバーに
選択された都道府県を送信し、サーバー側ではperlなりphpなりjavaなりで、都道府県(コード)を元にMySQLから市区町村を検索し、結果を返却する。
結果を受け取ったjavascriptは、プルダウンに市区町村を生成し終了です。

サーバー側は何の言語ですか?
Ajaxについては、prototype.jsというフレームワークを使うと
たしか、Ajax.Request()クラスで簡単に非同期通信が実装できます。

http://www.imgsrc.co.jp/~kuriyama/prototype/prototype.js.html#UsingAjaxRequest

プルダウンへの市区町村の反映は、
var opt = document.createElement("option");
opt.value="市区町村コード";
opt.text = "札幌市";
プルダウン.appendChild(opt);
といった感じの事を繰り返せばいいです。
都道府県が変更された時、変更前の都道府県の市区町村を削除しなければなりませんが。

サーバーサイドのプログラムでMySQLへ接続するのは
「プログラム名 MySQL 接続」などのキーワードで検索すれば
期待した結果が得られるはずだと思います。

失礼ながらmakoto_tyさんがどの程度の知識をお持ちかわからないですし、どの部分が一番ネックになっているのかわからない為、流れとポイントをお伝えします。

まず、プルダウンのonchangeイベントと同時にAjaxでサーバーに
選択された都道府県を送信し、サーバー側ではperlなりphpなりjavaなりで、都道府県(コード)を元にMySQLから市区町村を検索し、結果を返却する。
結果を受け取ったjavascriptは、プルダウンに市区町村を生成し終了です。

サーバー側は何の言語ですか?
Ajaxについては、prototype.js...続きを読む


このQ&Aを見た人がよく見るQ&A

人気Q&Aランキング