• ベストアンサー

評価の星を選択した情報を確認画面で表示させたいです

アマゾンの評価のような星をクリックすると星の数が選択されるスター評価のコードを書いてます。 選択した評価で星の数の情報をphpで確認表示画面に送るコードを書いたのですが、submitを押して次の画面には行くのですが、phpが間違っていると思いますが、選択した星が表示されなくて困っています。 コードは星選択フォーム画面と確認画面の2つのコードを提示しています。 回答よろしくお願いいたします。 ●星評価選択フォームの画面 b.php <?php session_start(); $errors = array(); if ($_POST) { $rate = filter_input(INPUT_POST, 'rate'); if (empty($rate)) { $errors[] = "評価をタップして下さい。"; } else { // 各星のラジオボタンに評価値を設定 $_SESSION['rate'] = $rate; header('Location:b2.php'); exit(); } } if (isset($_GET['action']) && $_GET['action'] === 'edit') { $rate = $_SESSION['rate']; } ?> <style> /* 選択の星のスタイル */ .rate-form { display: flex; flex-direction: row-reverse; justify-content: flex-end; } .rate-form input[type=radio] { display: none; } .rate-form label { position: relative; padding: 0 5px; color: #ccc; cursor: pointer; font-size: 35px; } .rate-form label:hover { color: #ffcc00; } .rate-form label:hover ~ label { color: #ffcc00; } .rate-form input[type=radio]:checked ~ label { color: #ffcc00; } <body> <form action="b2.php" method="post" id="form"> <div class="rate-form"> <!-- 各星に評価値を設定 --> <input id="star3" type="radio" name="rate" value="3"> <label for="star3">★</label> <input id="star2" type="radio" name="rate" value="2"> <label for="star2">★</label> <input id="star1" type="radio" name="rate" value="1"> <label for="star1">★</label> </div> <button id="submit" class="yohaku"></button> </form> ●確認表示画面のPHP <?php session_start(); // セッションから評価値を取得 $rate = isset($_SESSION['rate']) ? $_SESSION['rate'] : ''; ?> <style> /* 出力する星の大きさ */ .w { font-size: 35px; color: #ffcc00; } </style> <body> <form action="b3.php" method="post"> <div class="w"><?php echo $rate; ?></div> <input type="submit" name="submit" value="評価を送信"> </form> </body>

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

  • ベストアンサー
  • dell_OK
  • ベストアンサー率13% (742/5653)
回答No.1

セッションを使ってb2.phpに渡そうとされているようですが、 それはやめて、b2.phpで、 ---- $rate = filter_input(INPUT_POST, 'rate'); ---- とすればよろしいかと思います。

全文を見る
すると、全ての回答が全文表示されます。

関連するQ&A

  • 選択された値をセッションで保存したい

    ラジオボタンで選択された値をセッションで保存し、DBまで持って行きたいのですが、どのようにすればよいでしょうか?なお、ラジオボタンからはPOSTで渡しています。どなたかわかる方ご教授お願いします。流れは【a.php => b.php => c.php => d.php => DB】c.phpにラジオボタンがあります。 [c.php]はこのような感じです。 <form name="form1" method="post" action="d.php"> <input type="radio" name="color" value="なし" >なし <input type="radio" name="color" value="赤">赤 <input type="radio" name="color" value="青">青 <input type="submit" name="Submit" value="送信">

    • ベストアンサー
    • PHP
  • php入力画面から確認画面へ情報の受け渡しについて

    php 参考書を見て、入力フォームを作成しているのですが、入力画面から確認表示画面へ情報の受け渡しについて。コードは下に記載してます。 最初の入力画面ではmethod=postで送信した値を$name = $_POST['name'];に格納して次ページに値を渡すそうですが、 しかし最初の入力画面のコードに$name = $_POST['name'];と、もうひとつ、$name = $_SESSION['name'];でセッションに保存して、次ページに送るそうですが、 保存したSESSIONの値は次ページの確認表示画面から戻る際に値を保持する際に使うからだそうですが、値を次ページに送る役割が$_POSTやSESSIONにあるならば、SESSIONの記述のみで 次ページに送れると思うのですが、なぜこのコードの場合、$_POSTに値を格納する必要があるのでしょうか? 以下のような解釈で正しいでしょうか?? 「$_POSTは送られた値をフォームのvalue内にechoで出力するため、SESSIONはページから戻る場合に値を保持するため」 回答よろしくお願いいたします。 コード 入力初期画面 <?php session_start(); $errors = array(); if(isset($_POST['submit'])){ $name = $_POST['name']; if($name === ""){ $errors['name'] = "お名前が入力されていません。"; } if(count($errors) ===0){ $_SESSION['name'] = $name; header('Location:https:次ページへform2.php'); exit(); } } ?> <body> <form action="form1.php" method="post"> お名前 <input type="text" name="name" value="<?php if(isset($name)){echo $name;}?>"> <input type="submit" name="submit" value="確認画面へ"> </body> コード 確認表示画面 <?php session_start(); if(isset($_SESSION['name'])){ $name = $_SESSION['name']; } <body> <form action="form3.php" method="post"> お名前 <?php echo $name;?> <input type="submit" name="submit" value="送信する"> p><a href="form1.php?action=edit">入力画面へ戻る</a></p> </body>

    • ベストアンサー
    • PHP
  • form変数の初期化

    <br /><b>Notice</b>: Undefined index: your_name in <b>C:\xampp\htdocs\test\index.php</b> on line <b >83</b><br /> 入力画面で上記のエラーが解決しません。 どうすればいいでしょうか? 入力画面 <?php $_POST = array(); ?> <form method="post" action="./form_check.php"> <div class="element_wrap"> <label>氏名</label> <input type="text" name="your_name" value="<?php echo $_POST["your_name"]?>"> </div> <div class="element_wrap"> <label>メールアドレス</label> <input type="text" name="email" value=""> </div> <input type="submit" name="btn_confirm" value="入力内容を確認する"> </form> 確認画面 <?php $your_name = $_POST["your_name"]; ?> <form method="post" action="./test.php"> <div class="element_wrap"> <label>氏名</label> <p><?php echo $your_name; ?></p> </div> <div class="element_wrap"> <label>メールアドレス</label> <p><?php echo $_POST['email']; ?></p> </div> <input type="submit" name="btn_submit" value="送信"> </form> <form method="post" action="./index.php"> <!--<input type="button" name="btn_back" onclick="history.back()" value="戻る">--> <input type="submit" name="btn_back" value="戻る"> <input type="hidden" name="your_name" value="<?php echo $_POST['your_name']; ?>"> <input type="hidden" name="email" value="<?php echo $_POST['email']; ?>"> </form>

    • 締切済み
    • PHP
  • 特定の場合にのみ半額にしたい。

    現在、ショッピングカート作りの練習をしています。 そこで質問なのですが、赤のみを選択したら1000を表示、青のみを選択したら2000を表示。ここまでは問題ないのですが、赤と青を両方選択した場合の合計を赤はそのまま1000、青を1000と半額に。合計を2000としたいのですが、おわかりになられる方がいましたら、お教えいただきたいと思います。よろしくお願いいたします。なお、sessionを利用しております。 OS WinXP PHP Ver 4.3.10 <form name="form1" method="post" action="a.php"> <input type="radio" name="a" value="1000">赤 <input type="radio" name="b" value="2000">青 <input type="submit" name="Submit" value="次へ"> </form> <<a.php>> <?php session_start(); $_SESSION['php']=$_POST['a']; $_SESSION['ph']=$_POST['b']; ?>

    • 締切済み
    • PHP
  • php、HTML5に詳しいかた。

    php、HTML5に詳しいかた。HTML5ではテーブル内にdivや<section>、</label>タグを使用することができないのですが、テーブルのタグはどうしても使用したいので、 divやSection、labelの代わりになるタグはありますでしょうか? divの代わりのタグは何を使用しようしたらよいでしょうか? また、 Section、labelの代わりに使えるタグはありますでしょうか? スクロールボックスとラジオボタンのコードを書いています。 テーブルを使わない方法もできそうな気がしますが、ただ、phpコードの最後にある、<td colspan="2"><input type ="submit" name="submit"value ="送信する"></td> この内容のコードは参考書に書いてあったので、そのまま、使っているため、 いるため、これと同じ内容のコードをtd以外で使えるといいのですが。 コードは以下になります。 <?php session_start(); if(isset($_SESSION['name'])){ $email = $_SESSION['email']; } $_SESSION['token'] = base64_encode(openssl_random_pseudo_bytes(48)); $token = htmlspecialchars($_SESSION['token'], ENT_QUOTES); ?> <!DOCTYPE html> <html> <head> <meta charset ="utf-8"> <link rel="stylesheet" href="kiyaku.css"> <title></title> </head> <body> <form action ="hpform3.php" method ="post"> <input type ="hidden" name ="token" value ="<?php echo $token ?>"> <table> <tr> <th>名前:</th><td><?php echo $name; ?></td> </tr> <tr> <h3>利用規約</h3> <div class="main"> <h4>第1条 (定義)</h4> <p>「ユーザー」とは、文脈上異なる意味であることが明らかな場合</p> <br> <p>以上</p> <p>平成30年8月30日制定<br> 株式会社〇○</p> </div> <section> <label class="radio_text"> <input type="radio" name="hogehoge" value="hoge" checked>同意する </label> <label class="radio_text"> <input type="radio" name="hogehoge" value="hoge">同意しない </label> </section> <td colspan="2"><input type ="submit" name="submit"value ="送信する"></td> </tr> </table> </form> <p><p><a href="form1.php?action=edit">入力画面へ戻る</a></p> </body> </html> 〇ccsのコード h4{ color: #63e02d; } /*スクロール内のボックスの指定*/ .main{ width:550px; height:350px; border: 2px solid #63e02d; overflow: auto; color: #63e02d; } /*スクロールのつまみ部分の指定*/ .main::-webkit-scrollbar-thumb { border-radius: 5px; } /*ラジオボタンRadioとText*/ label.radio_text { cursor : pointer; position : relative; margin-right : 20px; overflow : hidden; padding-left : 20px; display : inline-block; }

    • ベストアンサー
    • PHP
  • if文での条件分岐後の出力内容を他のページへ移動させたい

    お世話になります。現在ショッピングカートを製作しているのですが、b.phpで条件分岐をし、商品名、金額を表示させるのですが、表示させた内容をどのようにしたら、c.phpやd.phpに移動させることが出来るのでしょうか?ちなみにセッションを利用しています。 a.php(選択画面)→b.php(商品名・金額を表示)→c.php(送付先入力)→d.php(送付先入力確認)→e.php(メール送信) a.php ------------------------------------------------- <form name="form1" method="post" action="b.php"> <input type="radio" name="a" value="1">ラーメン <input type="radio" name="a" value="2">ソバ <input type="radio" name="b" value="1">うどん <input type="radio" name="b" value="2">パスタ <input type="submit" name="Submit" value="送信"> </form> ------------------------------------------------- b.php <form name="form1" method="post" action="c.php"> <?php session start(); $_SESSION['php']=$_POST['a']; $_SESSION['p']=$_POST['b']; ?> <?php if($_SESSION['php']==1 && $_SESSION['p']==1){ print "ラーメン&うどん" } 省略 ?> <?php if($_SESSION['php']==1 && $_SESSION['p']==1){ print "1000円" 省略 <input type="submit" name="Submit" value="送信"> </form> ------------------------------------------------- 上記のラーメン&うどん、と1000円をc.phpへ移動させるにはどのようにすればよいでしょうか? おわかりになられる方ご教授よろしくお願いします。

    • 締切済み
    • PHP
  • ラジオボタンの選択に応じてインプットを表示する。

     お世話になります。  現在、ラジオボタンの選択に応じてインプットのフィールドが表示されるようなHTMLフォームを作っているのですが、煮詰まってしまいました。どうしてもうまくいかないのですが、 <html> <head> <title>テスト</title> <script type="text/javascript"> <!-- function checkradio( disp ) { document.getElementById('input').style.display = disp; } //--> </script> </head> <body> <form action="xxx"> <p> <input type="radio" name="domain" id="1" value="1" onclick="checkradio('none');" /> <label for="1">選択1</label><br /> <input type="radio" name="domain" id="2" value="2" onclick="checkradio('none');" /> <label for="2">選択2</label><br /> <input type="radio" name="domain" id="3" value="3" onclick="checkradio('block');" checked /> <label for="3">選択3</label><br /> </p> <p id="input"> 選択3の詳細を書いてください。:<input type="text" id="input" name="select3" value="" size="20" /> </p> </form> </body> </html> と、こんな感じで、3を選択した時しかインプットを表示できません。選択1や選択2を表示した時には、「選択1の詳細を書いてください。」または「選択2の詳細を書いてください。」と表示させたいのですが、どこをどんな風に直せばいいでしょうか? それと同時に初期画面ではこのインプットを非表示にしてラジオボタンを選択した時に表示されるようにしたいと思っています。 よろしくお願いします。

  • 【フォーム】PHPで確認画面をだした後にボタンを

    ほぼ初心者のものです 下記のようなフォームをつくりました <form action="regist.php" method="post"> <input type="radio" name="08241" value="A11"/> <input type="radio" name="08241" value="B11"/> <input type="radio" name="08241" value="C11"/> <input type="radio" name="08241" value="D11"/> <input type="radio" name="08241" value="E11"/> <input type="radio" name="08241" value="F11"/> <input type="submit" value="登録する" /> そしてこれらを確認するためにregist.phpを作成し <table width="250" border="1"> <tr> <td width="250">選択したもの</td> </tr> <tr> <td><?php echo $_POST["08241"] ?></td> </tr> <tr> <td>●●●</td> と記載し、選んだものを表示できるようにしました ここからが皆様にお力を借りたいところなのですが フォームから「A11」が選択されて確認画面に「A11」と表示されたとき ●●●のところに下記のような情報を含んだボタンを表示させたいんです <form name="a11" action="/products/detail.php" method="post" > <input type="hidden" name="mode" value="cart" /> <input type="hidden" name="product_id" value="137" /> <input type="hidden" name="product_class_id" value="634" /> <input type="hidden" name="quantity" value="1" /><br /> <input type="submit" value="決定する" onClick="alert('選択しました')" /> </form> このボタン情報はA11~F11まであって、product_idやproduct_class_idは それぞれ異なっています どこかに一覧を作成しておいて form nameで一致したものを表示させるといった やり方なのかなとは思うのですが、その方法がわかりません PHPを使えばいいのかJavascriptがよいのかもあわせ、記述方法などをご教授いただけませんでしょうか? どうかよろしくお願いいたします

    • 締切済み
    • PHP
  • Formでアンケートページを作成 送信 メールに反映しない。

    こんにちは、DreamWeaver8を使ってホームページの勉強を始めたものです。 練習でFormを使ってアンケートページを作りました。 Form actionでメールアドレスを指定して 送信ボタン(Submit)を押すと、メーラーが起動して上記アドレスが記載されたメールができるのですが、中身が反映していません。(アンケートに書かれた、性別、職業など) どのようにすれば反映されるのでしょうか? 何かお分かりの方がいましたら教えてください。 よろしくお願いします。 <form action="mailto:test@***.**.jp" method="post" enctype="text/plain" name="form1" id="form1"> <table width="920" border="1"> <tr> <td>性別</td> <td><label for="radiobutton">男</label> <input name="radiobutton" type="radio" id="radiobutton" value="man" checked="checked" /> <label for="label2">女</label> <input name="radiobutton" type="radio" value="woman" id="label2" /></td> </tr> 略 <tr> <td colspan="2"><div align="center"> <input type="reset" name="Submit2" value="リセット" /> <input type="submit" name="Submit" value="送信" /> </div></td> </tr> </table> </form>

  • NoticeとUndefined index

    ●質問の主旨 1.アンケート項目が空欄ではなく、 : <br /><b>Notice</b> Undefined index: name in <b>C:\xampp\htdocs\php10\lesson16_2\wizard1.php</b> on line <b>17</b><br /> という文字列が入るのかが、よく分かりません。 2.性別のところが未定義の関数になるのかが分かりません。 ●質問の補足 10日でおぼえるPHP第4版P134のlesson16 「セッション機能でウィザード形式のフォームを作成しよう」 のコードを「ほぼ」真似ています。 参考文献のコードでは、2行目をrequire_once'../Encode.php'; になっていますが、下記のコードでは、 include_once'Encode.php';にしています。 これら以外のコードは全くコピペしています。 なお、wizard1.phpとEncode.phpは同じフォルダに入れています。 ●開発環境 windows XAMMP1.8.1 ●コード(wizard1.php) <?php include_once 'Encording.php'; session_start(); ?> <!DOCTYPE html> <html> <head> <meta charset="UTF-8" /> <title>PHP入門教室</title> </head> <body> <h3>アンケート</h3> <form method="POST" action="wizard2.php"> <div class="container"> <label for="name">名前:</label><br /> <input type="text" id="name" name="name" value="<?php print(e($_SESSION['name'])) ?>" /> </div> <div class="container"> <label for="email">メールアドレス:</label><br /> <input type="email" id="email" name="email" value="<?php print(e($_SESSION['email'])) ?>" /> </div> <div class="container"> <label for="zip">郵便番号:</label><br /> <input type="zip" id="zip" name="zip" value="<?php print(e($_SESSION['zip'])); ?>" /> </div> <div class="container"> 性別:<br /> <?php $sexes =array('男性', '女性', 'その他'); foreach($sexes as $sex) { print('<label>'); print('<input type="radio" name="sex" value="'.$sex.'"'); if ($sex === $SESSION['sex']) { print(' checked'); } print('< />'); print($sex.'</label>'); } ?> </div> <input type="submit" value="次へ" /> </form> </body> </html>

    • ベストアンサー
    • PHP