• 締切済み

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
  • 回答数2
  • ありがとう数1

みんなの回答

回答No.2

あっ、よく考えたら。 b.phpで $_SESSION['item']="ラーメン&うどん"; $_SESSION['money']="1000円"; b.phpで <?=$_SESSION['item'] ?> <?=$_SESSION['money'] ?> で良いのでは?

回答No.1

c.phpはこんなんでどうでしょう? これだとソースが汚いにも程があるので、 配列ではなく、商品(金額)データを参照(DBや.txt等)するほうが良いと思います。 $aryData = array( 'a' => array( '1' => array("ラーメン",600), '2' => array("ソバ",500) ), 'b' => array( '1' => array("うどん",400), '2' => array("パスタ",300) ) ); print $aryData[a][$_SESSION['php']][0] ."\n"; print "&"; print $aryData[b][$_SESSION['p']][0] ."\n"; print "<br />"; if($aryData[a][$_SESSION['php']][1] + $aryData[b][$_SESSION['p']][1]){ print $aryData[a][$_SESSION['php']][1] + $aryData[b][$_SESSION['p']][1] ."円\n"; print "<br />"; }

Autosound
質問者

お礼

早速の回答ありがとうございます。c.phpでは正常に動作しました。ありがとうございました。しかし、d.phpへこの出力された値を渡すには同じソースをもう一度書けばよいのでしょうか?理解力が無くて申し訳ないですが、もう少しお付き合いいただければ幸いです。

関連する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
  • 特定の場合にのみ半額にしたい。

    現在、ショッピングカート作りの練習をしています。 そこで質問なのですが、赤のみを選択したら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あまり詳しくないです。 会員登録ページなるものを作っています。 register.phpというページで入力した会員情報をconfirm.phpというページで最終確認させたいのですが、その際に入力した情報がconfirm.phpに反映されません。 regiser.php <?php $a = (!empty($_POST['name'])); $b = (!empty($_POST['email'])); $c = (!empty($_POST['password'])); $d = (!strlen($_POST['password']) < 4); if (isset($_POST['check'])) { if ($a && $b && $c && $d) { header('Location: confirm.php'); } } ?> <!DOCTYPE html> <html> <head> <meta charset="UTF-8" /> </head> <body> <h3>新規登録</h3> <form method="POST" action=""> <div class="container"> <label for="name">ユーザ名(20文字以内)</label> <br /> <input type="text" id="name" name="name" maxlength="20" /> </div> <?php if (isset($_POST['check'])) { if (empty($_POST['name'])) { print('※ユーザ名を入力してください'); } } ?> <br /><br /> <div class="container"> <label for="email">メールアドレス(100文字以内)</label> <br /> <input type="text" id="email" name="email" maxlength="100" /> </div> <?php if (isset($_POST['check'])) { if (empty($_POST['email'])) { print('※メールアドレスを入力してください'); } } ?> <br /><br /> <div class="container"> <label for="password">パスワード(4文字以上20文字以内)</label> <br /> <input type="password" id="password" name="password" maxlength="20"/> </div> <?php if (isset($_POST['check'])) { if (empty($_POST['password'])) { print('※パスワードを入力してください'); } elseif (strlen($_POST['password']) < 4) { print('※パスワードは4文字以上で入力してください'); } } ?> <br /><br /> <input type="submit" name="check" value="確認する" /> </form> </body> </html> confirm.php <!DOCTYPE html> <html> <head> <meta charset="UTF-8" /> <title>確認画面</title> </head> <body> <h3>入力内容を確認してください</h3> <form method="POST" action=""> <br /><br /> <p>ユーザ名</p> <br /> <?php print htmlspecialchars($_POST['name'], ENT_QUOTES, 'UTF-8'); ?> <br /> <p>メールアドレス</p> <?php print htmlspecialchars($_POST['email'], ENT_QUOTES, 'UTF-8'); ?> <br /> <p>パスワード</p> <?php print htmlspecialchars($_POST['password'], ENT_QUOTES, 'UTF-8'); ?> <br /><br /><br /> <?php print('この内容でよろしければ下の登録ボタンを押してください'); ?> <br /> <form method="POST" action="dbconnect.php"> <input type="submit" name="completion" value="登録する" /> </form> <br /><br /> <?php print('変更がある場合は下の戻るボタンを押してください'); ?> <br /> <form method="POST" action="register.php"> <input type="submit" value="戻る" /> </form> </body> </html> できればあまりこの形は変えたくありません…。 action部分をconfirm.phpに変えると、入力値が空だったりするエラー時にconfirm.phpに飛ばないようにする方法が分かりません。 回答よろしくお願いします。 色々と間違えていたのであげ直させていただきました。

    • 締切済み
    • PHP
  • 簡単なif文でちゃんと分岐しません

    今参考書を見ながらやっていますがうまくいきません。 postからusernameとpasswordの値を受け取って処理する スクリプトなんですが、うまく作動してくれません。 ■問題点 分岐点が4箇所ありますが、 パスワードだけ間違っても、すべて■1■ ログイン処理状態になります。 どうしてもパスワード再設定の画面に切り替わりません。 入力されたデータはデータベースにきちんと入ります。 3日間これで悩んでいて、ついに投稿してみました。 こんなこともわからない私ですが なんとかお願い致します。 ----ここから---- <?php session_start(); $username = $_POST["username"]; $sql = "SELECT * FROM `art_users` WHERE `user_name` = '%{$username}%'"; $query = mysql_query($sql) or die("データ追加エラー" . mysql_error()); $record = mysql_fetch_array($query, MYSQL_ASSOC); if ( $_POST["mode"] == "login" && mysql_num_rows($query) > 0 && $_POST["password"] == $record["user_password"] ) { $_SESSION["userid"] = $record["user_id"]; header("Location: kaukau_top.php"); } ?> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd"> <html lang="ja"> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8"> <title>ログイン処理</title> </head> <body> <?php // ■1■ ログイン処理状態 if ( $_POST["mode"] == "login" ) { // 新規登録:クエリ実行結果が0行=既存ユーザー名と一致しない if ( mysql_num_rows($query) == 0 ) { echo '新規ユーザー登録<br>'; echo '<form action="kaukau_login.php" method="POST">'; echo '<input type="hidden" name="mode" value="register">'; echo '<input type="submit" value="登録">'; echo '</form>'; } // パスワードミス:クエリ実行結果のパスワードと入力されたパスワードが一致しない elseif ( $_POST["password"] != $record["user_password"] ) { echo 'パスワードが違います。<br>'; echo 'ひみつの質問に答えると、パスワードを変更できます。<br>'; echo '<form action="kaukau_login.php" method="POST">'; echo '<input type="hidden" name="username" value="' . $username . '">'; echo '<input type="hidden" name="mode" value="resetpassword">'; echo '<input type="submit" value="送信">'; echo '</form>'; } } // ■2■ パスワード再設定状態 elseif ( $_POST["mode"] == "resetpassword" ) { if( $record["user_answer"] == $_POST["answer"] ) { echo 'パスワード再設定<br>'; echo '<form action="kaukau_login.php" method="POST">'; echo '<input type="hidden" name="username" value="' . $username . '">'; echo '<input type="hidden" name="mode" value="modifypassword">'; echo '<input type="submit" value="登録">'; echo '</form>'; } else{ echo "ひみつの答えが違います"; } } // ■3■ 新規ユーザー登録状態 elseif ( $_POST["mode"] == "register" ) { if( $_POST["password"] == $_POST["confirm"] ) { $sql = "INSERT INTO users (user_name, user_password, user_question, user_answer) VALUES ("; $sql .= " '" . $_POST["username"] ."',"; $sql .= " '" . $_POST["password"] ."',"; $sql .= " '" . $_POST["question"] ."',"; $sql .= " '" . $_POST["answer"] ."')"; $result = mysql_query($sql); echo '登録しました。'; } else { echo 'パスワードを再確認してください。'; } } // ■4■ パスワード変更状態 elseif ( $_POST["mode"] == "modifypassword" ) { if ( $_POST["password"] == $_POST["confirm"] ) { $sql = "UPDATE users"; $sql .= " SET user_password = '" . $_POST["password"] . "'"; $sql .= " WHERE user_name = '" . $_POST["username"] . "'"; mysql_query( $db, $sql ); echo '登録しました。'; } else { echo 'パスワードを再確認してください。'; } } ?> </body> </html>

    • 締切済み
    • PHP
  • 一つのformで、複数のaction指定

    レイアウトなどの関係で、formの配置が基本とは異なるものになってしまい、うまく動作させる方法が見つからず困っています。 現在は <form> <input type="checkbox" name="select[]" value="●●"> <input type="checkbox" name="select[]" value="●●"> <input type="checkbox" name="select[]" value="●●"> </form> …… <form method="POST" action="A.php"> <input type="submit" name="aa" value="あああ"> </form> <form method="POST" action="B.php"> <input type="submit" name="bb" value="いいい"> </form> <form method="POST" action="C.php"> <input type="submit" name="cc" value="ううう"> </form> <form method="POST" action="D.php"> <input type="submit" name="dd" value="えええ"> </form> のようになっていて、チェックボックスの値を送信したいのは、Dのボタンを押したときだけPOSTされるようにしたい状態です。 この値を取得する方法か、もしくは <form method="POST" action="(ボタンに応じたもの)"> <input type="checkbox" name="select[]" value="●●"> <input type="checkbox" name="select[]" value="●●"> <input type="checkbox" name="select[]" value="●●"> …… <input type="submit" name="aa" value="あああ"> <input type="submit" name="bb" value="いいい"> <input type="submit" name="cc" value="ううう"> <input type="submit" name="dd" value="えええ"> </form> このように、一つのフォームの中に埋めてしまい、actionに入る値をボタンによって分ける方法はありませんでしょうか? もしくは他の方法でも構いません。 お分かりの方がいましたら、是非ご教授お願いいたします。

    • 締切済み
    • PHP
  • FORMで送信ボタンと戻るボタンを2つつけてそれぞれ遷移先を変えたい

       以下のような画面を作りたいのですが↓ -------------------------------------------------------------------------------- ● a.php (ユーザ情報入力画面) ※フォームに入力する画面    <FORM method="POST" action="b.php">   <INPUT type="text" name="mail">   <INPUT type="submit" name="submit" value="確認">  </FORM> ● b.php (ユーザ情報入力確認画面)※フォームに入力された値を表示する画面  <FORM method="POST" action="c.php">   <!-- ここには、フォームに入力された値を表示する -->   <INPUT type="submit" name="submit" value="登録"> // c.php に遷移する   <INPUT type="submit" name="submit" value="戻る"> // a.php に戻る  </FORM> ● c.php (完了画面) -------------------------------------------------------------------------------- b.php について質問なのですが、 b.phpにおいて、登録ボタンと戻るボタンを2つつけて、 それぞれ遷移先を変えたいのですが、どうすればいいんでしょうか・・・? <FORM method="POST" action="c.php">と書いてしまうと、 戻るボタンを押しても戻らずに、c.phpに遷移してしまいますよね?? こういう場合ってJavaScriptとかで遷移先を指定するんですか・・? もしそうでしたら、JavaScriptがよくわからないので できればサンプルコード示していただけると助かります・・・。   

  • 他ページの入力内容を出力するには

    PHPあまり詳しくないです。 会員登録ページなるものを作っています。 register.phpというページで入力した会員情報をconfirm.phpというページで最終確認させたいのですが、その際に入力した情報がconfirm.phpに反映されません。 regiser.php <?php $a = (!empty($_POST['name'])); $b = (!empty($_POST['email'])); $c = (!empty($_POST['password'])); $d = (!strlen($_POST['password']) < 4); if (isset($_POST['check'])) { if ($a && $b && $c && $d) { header('Location: confirm.php'); } } ?> <!DOCTYPE html> <html> <head> <meta charset="UTF-8" /> </head> <body> <h3>新規登録</h3> <form method="POST" action=""> <div class="container"> <label for="name">ユーザ名(20文字以内)</label> <br /> <input type="text" id="name" name="name" maxlength="20" /> </div> <?php if (isset($_POST['check'])) { if (empty($_POST['name'])) { print('※ユーザ名を入力してください'); } } ?> <br /><br /> <div class="container"> <label for="email">メールアドレス(100文字以内)</label> <br /> <input type="text" id="email" name="email" maxlength="100" /> </div> <?php if (isset($_POST['check'])) { if (empty($_POST['email'])) { print('※メールアドレスを入力してください'); } } ?> <br /><br /> <div class="container"> <label for="password">パスワード(4文字以上20文字以内)</label> <br /> <input type="password" id="password" name="password" maxlength="20"/> </div> <?php if (isset($_POST['check'])) { if (empty($_POST['password'])) { print('※パスワードを入力してください'); } elseif (strlen($_POST['password']) < 4) { print('※パスワードは4文字以上で入力してください'); } } ?> <br /><br /> <input type="submit" name="check" value="確認する" /> </form> </body> </html> confirm.php <?php $a = (!empty($_POST['name'])); $b = (!empty($_POST['email'])); $c = (!empty($_POST['password'])); $d = (!strlen($_POST['password']) < 4); if (isset($_POST['check'])) { if ($a && $b && $c && $d) { header('Location: confirm.php'); } } ?> <!DOCTYPE html> <html> <head> <meta charset="UTF-8" /> </head> <body> <h3>新規登録</h3> <form method="POST" action=""> <div class="container"> <label for="name">ユーザ名(20文字以内)</label> <br /> <input type="text" id="name" name="name" maxlength="20" /> </div> <?php if (isset($_POST['check'])) { if (empty($_POST['name'])) { print('※ユーザ名を入力してください'); } } ?> <br /><br /> <div class="container"> <label for="email">メールアドレス(100文字以内)</label> <br /> <input type="text" id="email" name="email" maxlength="100" /> </div> <?php if (isset($_POST['check'])) { if (empty($_POST['email'])) { print('※メールアドレスを入力してください'); } } ?> <br /><br /> <div class="container"> <label for="password">パスワード(4文字以上20文字以内)</label> <br /> <input type="password" id="password" name="password" maxlength="20"/> </div> <?php if (isset($_POST['check'])) { if (empty($_POST['password'])) { print('※パスワードを入力してください'); } elseif (strlen($_POST['password']) < 4) { print('※パスワードは4文字以上で入力してください'); } } ?> <br /><br /> <input type="submit" name="check" value="確認する" /> </form> </body> </html> できればあまりこの形は変えたくありません…。 action部分をconfirm.phpに変えると、入力値が空だったりするエラー時にconfirm.phpに飛ばないようにする方法が分かりません。 回答よろしくお願いします。

    • ベストアンサー
    • PHP
  • フィルをダウンロードする

    PHPを作りたいのですが <?php ?????????????????? ?> <form method="post" action="<?=$_SERVER['PHP_SELF']?>"> <input type="radio" name="x" value="a.txt"/>a.txt<br/> <input type="radio" name="x" value="b.txt"/>b.txt<br/> <input type="submit" value="download"/><br/> </form> ?????????????????? の部分にどのように記述すれば選択したa.txtあるいはb.txtをダウンロードできるようになるでしょうか?

    • ベストアンサー
    • PHP
  • forで作成したフォームの値を更にPHPへ渡して表示する方法

    初心者です。 現在、PHPでforを利用し、繰り返しフォームを表示 させた後、その表示されたフォームへ入力をし、更に 違うPHPで入力された値を出力させようとしているのですが、 最終の出力が出来ずに悩んでおります。 繰り返しでフォームを作成するまでは出来たのですが、 どなたか御助力頂けたら助かります。 ---------------------------------------------------- <form.html> <html> <head> <title>it1</title> </head> <body> <form name="form" action="./it.php" method="POST"> <b>ラジオ選択<br> <input name="machine" type="radio" value="24">24<br> <input name="machine" type="radio" value="48">48<br> <input name="machine" type="radio" value="24">50</b><br><br> </body> <input type="submit" name="Submit" value="設定"> </form> </html> ------------------------------------------------------ <it.php> <?php $a = $_REQUEST["machine"]; ?> <html> <body> <p>入力テキストボックス表示</p> <?php for ($c=0; $c<$a; $c++){ $var[$c] += $var[$c]; $dest[$c] += $dest[$c]; $no[$c] += $c+1; } ?> <table> <tr> <td><center> <form name="form" action="./it2.php" method="POST"> <td> <center> <b>vlan</b><br> <?php for ($i=0; $i<count($var); $i++) { "<form name="form" action="./it2.php" method="POST">" print("fa0/${no[$i]}<input type=\"text\" name=\"${var[$i]}\" size=\"3\" maxlength=\"3\"><br>\n"); } ?> </td> <td> <b>description</b><br> <?php for ($i=0; $i<count($dest); $i++) { print("<input type=\"text\" name=\"${dest[$i]}\" size=\"15\" maxlength=\"15\"><br>\n"); } ?> </td> </tr> </table> <input type="submit" name="Submit" value="設定"> </form> </body> </html> -------------------------------------------------------- 以降の出力ソースに関して、難儀中。

    • ベストアンサー
    • PHP
  • 【フォーム】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

専門家に質問してみよう