選択された値をURLとして移動させたいと考えています。
例えば、http://example.com/というページにフォームを設置し、
ドロップダウンメニューから四国を選択すると
http://example.com/shikoku/というページが表示されるといった具合です。
他のページを参考しつつ自分で考えてみたのですが、2度送信ボタンを押さなければページが表示されません。
最近になってPHPを触りはじめたので、いまいち何がおかしいのかわからず困っています…。
どなたかご教授お願いします。また、変な部分もあるかと思いますので、よろしければ教えてください。
<?php if($_POST['submit']) {$url = $_POST['tiiki']."/".$_POST['ken'] ;}?>
<form action="<?php echo $url ;?>" method="post">
<select name="tiiki">
<?php $tiiki = array("kyusyu"=>"九州","shikoku"=>"四国");?>
<?php foreach ( $tiiki as $tiiki1=>$tiiki2 ){?>
<option value="<?php echo $tiiki1 ;?>"><?php echo $tiiki2 ;?></option>
<?php };?>
</select><br />
<select name="ken">
<?php $ken = array("fukuoka"=>"福岡","ehime"=>"愛媛");?>
<?php foreach ( $ken as $ken1=>$ken2 ){?>
<option value="<?php echo $ken1 ;?>"><?php echo $ken2 ;?></option>
<?php };?>
</select><br />
<input type="submit" name="submit" value="送信">
</form>
No.1ベストアンサー
- 回答日時:
急ごしらえだったので、こんなものしか作れませんでしたが、
参考にどうぞ、
僕がテストで作ったので、
フォルダじゃなくて、ファイル(.php)を足していますが、
適当に消してください。
尚、これがすべてのやり方ではありません、
ほかにも何通りはやり方があると思います。
(違うファイルでロジックかませるとか・function使うとか・・)
ひとつ付け足せばセキュリティー観点から、
valueにfukuokaとかそのままの値を渡すのはお勧めできません。
できれば変えたほうがいいです。
お力になれれば幸いです。
<?php
//適当に拡張子ははずしてください。
if(isset($_POST['submit'])){
$url = $_POST['tiiki'].".php";
header("Location:./{$url}");
}
?>
<html>
<head>
<title>テスト</title>
</head>
<body>
<!--フォーム開始-->
<form action="<?php $_SERVER['PHP_SELF']?>" method="POST">
<select name = "tiiki">
<?php
$ken =array("fukuoka"=>"福岡","ehime"=>"愛媛");
foreach($ken as $key=>$value){?>
<option value="<?= $key?>"><?php echo $value?></option>
<?php } ?>
<!--面倒なので二つしか作ってません、尚、valueにそのままの値を入れるのは好ましくありません-->
</select>
<input type ="submit" name="submit" value="送信">
</form>
</body>
</html>
ありがとうございます。
他との兼ね合いもあり少し苦戦してしまいましたが、おかげさまでうまくいきました。
他の方法、valueの件についても検討していきたいと思います。
本当にありがとうございました!
No.3
- 回答日時:
まず、PHPはサーバーで動いてHTMLのソースコード送るものであるという事を確認してください。
最初にこのページが表示されると$_POSTには何も入っていませんから、$urlは定義されません。従ってactionは""になります。この状態でサブミットされると、再度このページが表示されます。その時は$urlが定義され、actionのところに飛び先が書かれます。したがって、もう一度サブミットすると目的のページに飛びます。ここで、選択肢を変えてもactionに書かれたurlに飛びます。
直接飛ばすんでしたら、formのactionを飛ぶ前にブラウザ上で変える必要があります。actionを直接書くのではなく、onsubmitでactionを動的に変えてやればいいでしょう。
<form onsubmit="this.action=this.tiiki.value + "/" + this.ken.value" method="post">
こんな感じですね。"は、ダブルクォートを意味します。このまま書いて下さいね。
No.2
- 回答日時:
一行目があるから二回送信しないといけなくて、一行目をなくして$urlの値を直接actionに書けば一回の送信で済みます。
これじゃだめですか?<form action="<?php echo $_POST['tiiki']."/".$_POST['ken'] ;?>" method="post">
<select name="tiiki">
<?php $tiiki = array("kyusyu"=>"九州","shikoku"=>"四国");?>
<?php foreach ( $tiiki as $tiiki1=>$tiiki2 ){?>
<option value="<?php echo $tiiki1 ;?>"><?php echo $tiiki2 ;?></option>
<?php };?>
</select><br />
<select name="ken">
<?php $ken = array("fukuoka"=>"福岡","ehime"=>"愛媛");?>
<?php foreach ( $ken as $ken1=>$ken2 ){?>
<option value="<?php echo $ken1 ;?>"><?php echo $ken2 ;?></option>
<?php };?>
</select><br />
<input type="submit" name="submit" value="送信">
</form>
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- PHP PHPで画像の渡しが上手く行きません。 1 2023/02/02 09:39
- PHP 入力した部分を表示させたまま(保持)するにはどうすれば良いでしょうか? 1 2023/01/25 11:14
- JavaScript sessionStorageを調べています。 1 2023/06/20 12:41
- PHP PHPでユーザー情報を入力して簡易ログイン機能をつくってみたのですが 1 2023/05/29 08:51
- JavaScript ①入力フォーム→②確認表示画面→③送信完了画面のコードを書いているのです、 入力フォームから受け取っ 2 2022/05/10 16:45
- PHP PHPでCookieを使った訪問回数について 1 2023/05/28 14:10
- PHP PHP MySql ページング 2 2022/09/20 06:38
- MySQL php テーブルを作れない 2 2022/11/17 18:22
- PHP php テーブルが作成できない 1 2022/11/17 23:41
- JavaScript セレクトを全て選択されていないと、文字によるエラーメッセージを表示させるコードを調べています 2 2023/06/22 15:48
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
phpでPEAR::DBを使っているので...
-
index.phpって何ですか? 具体...
-
phpでcookieがうまく保存されない
-
PHPSpreadsheetを使って関数を...
-
PHPのセッション有効期限について
-
index.phpに入るには、どうすれ...
-
重複を防ぐ記述について教えて...
-
フォームで戻った際に入力済み...
-
アンドロイドスマホでのphp ech...
-
入力フォームの空白や改行を制...
-
PHP8を使うと、大量のWarningが...
-
PostgreSQLからCSV形式でエクス...
-
PHPで画像の渡しが上手く行きま...
-
reuterの記事をbeautiful.soup....
-
PHP一覧表示した項目にリンクを...
-
値の取り出し方について教えて...
-
PHPSpreadsheetによる書き出し...
-
連投防止
-
ここでの ②if($su_d<>"")の比較...
-
オススメのプログラミングスク...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
phpでcookieがうまく保存されない
-
なんでブラウザでPHPを動かすた...
-
PHP8を使うと、大量のWarningが...
-
ワードプレスサイト PHP8.0.25...
-
PHPSpreadsheetを使って関数を...
-
php 入力画面から確認表示画面...
-
PHPのエラーの解消法について教...
-
掲示板のセキュリティについて...
-
php 完了画面の送信メールのコ...
-
PHPのセッション有効期限について
-
掲示板を作成しておりアップロ...
-
PHPでCookieを使った訪問回数に...
-
PHPで画像の渡しが上手く行きま...
-
重複を防ぐ記述について教えて...
-
php 確認表示画面で値をSESSION...
-
ファイルアップロードに関して...
-
メールフォームのタイトルが文...
-
フォームで戻った際に入力済み...
-
PHPで訪問回数を表示するカウン...
-
アップロード画像数でCSSを分け...
おすすめ情報