• ベストアンサー

javascrptのalertで選ばれた値に応じてPHPの変数に値をセットできますか?

PHP5でシステムを作ってる入門者です。 <form method="post"> 名前<imput name="namae" type="text"> <imput name="reg" type="submit" value="登録"> </form> とあります。 (1) 登録ボタン押下 (2) javascriptで「$namae さんは神を信じますか?Yes/No」というalertを表示(OKキャンセルではなく) (3) Yesなら、php側の $_SESSION["kamisama"] = 1;をセット、Noなら何もせず、 (4) php側の header("Location: next.php"); に遷移、みたいなことはできますか?

  • PHP
  • 回答数2
  • ありがとう数2

質問者が選んだベストアンサー

  • ベストアンサー
  • yambejp
  • ベストアンサー率51% (3827/7415)
回答No.1

「Yes/No」の選択肢にalertって・・・。 選択肢になっていないので意味がないのでは?せめてconfirm? 直接セッションはいじれないですがajax系の技術をつかえば 似たようなことはできるかもしれませんね。 ただしheader- Locationで飛ばすことは難しいので、 javascriptのlocation.hrefやwindow.openで飛ばすことになります。

litton101
質問者

お礼

yamabejpさん、早速のご回答ありがとうございました。 まず、yes/no はalertって言い方はしないのですね(お恥ずかしい)。 本題ですが、それほど敷居の高いこととは思いませんでした。 別の運用を検討します。ありがとうございました。

その他の回答 (1)

  • shimix
  • ベストアンサー率54% (865/1590)
回答No.2

そもそもJavaScriptのalertに戻り値はないですよね?confirmは「OK/キャンセル」ですし、ご要望の動作をするダイアログがありません。 ダイアログさえあれば、戻り値によってフォームの入力(type="hidden")に値をセットしてsubmitするのは簡単です。それが出来れば(3),(4)以降のphpスクリプトの部分は簡単に作れると思います。

litton101
質問者

お礼

shimixさん、毎度お世話になってます。 >ダイアログさえあれば、戻り値によってフォームの入力 >(type="hidden")に値をセットしてsubmitするのは簡単 なるほど・・・ Excel-VBAで、ダイアログのYesなら~~、Noなら~~の ように処理を分けるのをみかけたのですが、javascriptですと 難しいようですね。 難しいということがわかっただけでも参考になりました。 ありがとうございました。

関連するQ&A

  • header(Location: next.php) だとPOSTした値が渡らない?

    文末は(だいぶ端折ってますが), (1) エラーがあればエラー表示, (2) エラーがなければnext.phpに飛ぶ という動作をするのですが, next.php 内に echo $_POST["Name"]; とか echo $_POST["reg"]; とか書いても valueの中身が渡ってきていません. header("Location: next.php"); で飛ばすとだめなのでしょうか. http://oshiete1.goo.ne.jp/qa2706500.html でも,#2さんのアドバイスのようにしようとしましたが, #1さんのご教示のように,セッションを利用するしかないですか? ちょっとセッションで値の渡し方がチンプンカンプンなのですが・・・ <?php session_cache_limiter('none'); session_start(); header("Cache-control:no-cache"); header("Pragma:no-cache"); $errFlg=false; if ( $_POST["reg"] == "" ) $errFlg = true; if ( !$errFlg ) { if ( $_POST["Name"] == "" ) { $errFlg = true; $errStr["Name"] = "未入力"; } } if ( $errFlg ) { ?> <html><body> <form method="post" action="<?php $_SERVER["PHP_SELF"] ?>"> <?= $errStr["Name"] ?></td> <input type="text" name="Name" value="<?php echo $_POST["Name"]; ?>"> <input type="submit" name="reg" value="登録"></td> </form> </body></html> <?php } else { header("Location: next.php"); } ?>

    • ベストアンサー
    • PHP
  • セッションを使わずに遷移先画面に変数の値を渡すには?

    <input type="hidden" value="myID">みたいな隠しフォームで 行く先々の画面に値をPOSTで渡してきました。 他方、 header("Location: mypage.php") のように画面を遷移させる場合、遷移先の画面に $_POST["myID"]のように値を渡すことはできませんか? この場合session_start();を使って、$_SESSION["myID"]のように値を 渡す(保持する)のが王道なのでしょうか? セッションと聞くと何かとトラブルになりやすそうなイメージがあり、 できれば使いたくないのです。 具体的に説明しますと、前にこの掲示板で教えていただいた、次の例を使っています。 入力文字チェックをかけたいのでPHP_SELFで同じ画面を呼び出して、 問題なければmypage.phpにリダイレクトさせる枠組みですが、 header("Location: mypage.php");という風に遷移した場合は、 遷移先のmypage.phpでは、$_POST["myID"]はPOSTされてきませんよね (値を受け取れませんよね)?? 妙案あればご教示下さい。 <?php if ($_POST["reg"] == "" ) $errFlg = true; if (!$errFlg) {     if (strlen($_POST["myName"]) > 30) {       $errFlg = true;       $errStr["myName"] = "30字以下";     }   $errMsg = "エラー!!"; } if ($errFlg) { ?> <html>   <body>     <form method="post" action="<?php $_SERVER["PHP_SELF"] ?>">       氏名 <input type="text" name="myName" value="<?= $_POST["myName"] ?>"><?= $errStr["myName"] ?>       <input type="hidden" name="myID" value="<?= $_POST["myID"] ?>">     </form>     <input type="submit" name="reg" value="登録">   </body> </html> <?php } else {     $sql = "update mytable set myID = 'xxxx'";     $rst = mysql_query($sql, $con);     header("Location: mypage.php"); } ?>

    • ベストアンサー
    • PHP
  • PHPでFORMから来る変数名を変数にするには

    PHPでFORMから来る変数名を変数にするにはどうしたらよろしいでしょうか? 可変変数など調べたのですが、値を変数にすることは出来ても変数名を変数にする事は難しいようです。 <form action="reg.php"> <input type = "text" name = "comment"> <input type = "submit"> </form> このform内のnameが動的に変わるプログラムで,reg.phpにおいて名前(今ならcomment)を変数に格納したいと思っています。 reg.php 本来なら $comment = _REQUEST['comment']; とすると思うのですが、commentが動的に変動する場合、_REQUEST内をどう書き換えれば良いかが分からず困っています $dynamic_name = _REQUEST['ここをどう書けばよいでしょうか'] このことを考えてから今はform内ですが、formでなくてもどうやって書いてよいか分からず疑問に思いました 例えば $test = 'abc'; としたとき $test_name にtestという文字列を入れたい場合(つまりabcの変数名)どうやって入れたらよいのでしょうか?(もちろんtestと言う名前は動的に変わります) 詳しい方いらっしゃいましたらご回答いただければと思います。 良いアドバイスございましたら教えてください よろしくお願いします

    • 締切済み
    • PHP
  • パラメータが受け取れません。

    パラメータが受け取れません。 input.php と inputData.phpがあります。 input.phpには入力フォームと、登録ボタン押下時に 自画面を呼び出し、入力チェックを行っており、エラーの場合 エラーメッセージを表示、エラーではない場合、inputData.phpに 画面遷移しますが、パラメータが受け取れません。 *input.php if(empty($_POST["name"])){ $err ="えらー"; }else{ header("Location:http://localhost:8080/aaa/inputData.php"); } <form action="input.php" method="post"> <input type="text" name="name" value="aaa"> <input type="submit" name="name" value="bbb"> </form> このようなやり方はできないのでしょうか? お分かりになる方ご教授よろしくお願い致します。

    • ベストアンサー
    • PHP
  • IFRAME内PHPのセッション変数取得が出来ない

    既存のHTMLサイトに一部機能追加したいだけ+ブラウザに表示されるURLの関係で、必要部分だけIFRAMEでPHPサーバーのファイルを呼び出して表示させようと考えました。 IFRAMEを記述するHTMLファイル設置サーバーはPHPが使用出来ません。 <iframe src="http://hogehoge/login.php"></iframe> とHTML内にログイン用PHPを表示させ、ボタン押下でログイン判定 →データをセッション変数にセット →header("Location: http://hogehoge/form.php");で画面遷移 →フォーム用PHPに先ほどセットしたセッションデータ表示 とこんな感じの処理がしたいのですが、これがFireFoxだとうまく動くのに、IEだと動いたり動かなかったりします。(動く=開発環境である私のPC、動かない=他全て) ボタン押下で自分自身にPOSTしたデータは正しく受け取って画面遷移まで処理しているのですが、遷移後のページでセッション取得しようとすると取得出来ないようなのです。 IFRAMEを通さず直接URL叩いた場合は、FF・IEどちらも正常に動いています。 session_name('hoge'); session_start(); はPHP先頭に記載してあります。 IFRAMEを使用して外部サーバーのPHPを使用する際に、気をつけねばならない事などがあるのでしょうか… もし解決方法に思い当たる方がいらっしゃいましたら、どうかご回答宜しくお願いいたします。 またもし補足等必要でしたらご指摘下さい。

    • ベストアンサー
    • PHP
  • fromからの値の受け渡しについて

    fromからの値の受け渡しについて 1) <form action="./mondai.php" method=post target="_blank"> <input type=hidden name="kotae" value="on"> 2) <form action="./mondai.php" method=post target="_blank" onClick="window.open('./mondai.php','newWin','width=500,height=400,toolbar=no,location=0,status=0,menubar=0,scrollbars=yes,resizable=yes'); return false;"> <input type=hidden name="kotae" value="on"> 1) で受け取ると、mondai.phpで、$kotae に on が入りますが、2) で行うと入りません。 2) で上手く値を受け取る方法はありますでしょうか。  アドバイスいただければ幸いです。

    • ベストアンサー
    • PHP
  • 【初歩】PHP_SELFで更新先の画面に変数の値を渡すには?

    下記のような構造のPHPスクリプトで,更新ボタンを押して PHP_SELFで同じ画面を再表示した際,$varの中が空っぽに なってしまうのですが,「1」を維持するにはどうしたらいいですか. <form></form>の間に,type="hidden"のフォームを設けて 格納するとかしかないでしょうか? <form method="post" action="<?php $_SERVER["PHP_SELF"] ?>"> ~~フォーム部品~~ <input type="submit" name="reg" value="更新"> </form> <?php $var = 1; ?>

    • ベストアンサー
    • PHP
  • phpを使用してサイトを作成しています。

    phpを使用してサイトを作成しています。 入力ページなどにある「キャンセル」ボタンを押下した際の処理としてページを遷移するように header("Location: https://www.***.net/mypage.php"); を使用しているのですが、遷移先でのURLはhttp://www.***.net/mypage.phpとなっており ssl使用画面になりません。 どうしたらhttpsになるのでしょうか? 分かりづらい質問ですみませんが、よろしくお願いいたします。

    • 締切済み
    • PHP
  • 現在PHPの勉強をしています。初心者のためご教授いただければと思います

    現在PHPの勉強をしています。初心者のためご教授いただければと思います。 メールフォームを作成しており、エラーチェックで困っています。 簡単に流れを説明しますとフォーム画面で入力をしてもらったら確認画面へと移行します。 ここでエラーがあった場合、confirm.phpにてエラーチェックをし、form.phpに戻り、エラーがなければ確認画面にて入力した、項目が表示されるようにしたいと思っています。 ソースは下記のとおりになります。 form.php ---------------------- */ <html> <body> <form action="confirm.php" method="post"> 名前:<input type="text" name="name" value="" /<?php echo $errmsg['name'] ;?><br> 内容:<textarea name="comment" rows="5" cols="40"></textarea><?php echo $errmsg['comment'] ;?><br> <input type="hidden" name="contact" value="form" /> <input type="submit" name="submit" value="確認" /> </form> </body> </html> confirm.php ---------------------- */ <?php $name = $_POST['name']; $comment = $_POST['comment']; if(isset ($_POST['contact'])) { $errmsg = array(); if(empty($name)){ $errmsg['name'] = '未入力'; } if(empty($comment)){ $errmsg['comment'] = '未入力'; } if (count($errmsg) != 0) { header("Location: index.php"); exit; } } ?> <html> <body> 名前:<?php echo $name; ?><br /> 内容:<?php echo $comment; ?><br /> </body> </html> としております。 if (count($errmsg) != 0) { header("Location: form.php"); exit; 上記のようにするとエラーチェックの表示がされません。 require(form.php);にするとform.phpが表示されるのですがURLを見るとconfirm.phpの状態になっております。 header("Location: form.php");を使用してのエラーチェックをしたいのですが、どのように記述したらよろしいのでしょうか? 上記の内容でどなたかご教授いただけないでしょうか? 宜しくお願いいたします。

    • ベストアンサー
    • PHP
  • php + javascriptで値の保持

    現在、ラジオボタンによるデータの受け渡しを調べているのですが submitボタンを使わずに、データ遷移がしたいと思い 色々やっているのですが上手く行きません。 これは実現可能なのでしょうか? <input type="radio" name="hoge" value="1" onclick="location.href='<?php echo $_SERVER['REQUEST_URI']; ?>'; test(this.value);" <?php echo $check1; ?>> <input type="radio" name="hoge" value="2" onclick="location.href='<?php echo $_SERVER['REQUEST_URI']; ?>'; test(this.value);" <?php echo $check2; ?>> <input type="radio" name="hoge" value="3" onclick="location.href='<?php echo $_SERVER['REQUEST_URI']; ?>'; test(this.value);" <?php echo $check3; ?>> 上記のソースの様な感じでとりあえずやってみましたが、 「ボタンを押したら即移動」は可能なものの、value値の保持が javascript上でどうやったらいいか分かりません。 ※$check1~3は遷移後のchcked判定の変数です ※test関数においてのvalueを格納する処理が分かりません やはり無難にsubmitボタン+セッション関数等で構築した方が良いのでしょうか?

    • ベストアンサー
    • PHP

専門家に質問してみよう