• ベストアンサー

PHPで変数のデータ受け渡しについて

HTMLで下記のようにして入力された データを次ページに受け渡し、 issetで変数に値が代入されていれば ifで分岐処理させたいのですが、 elseの処理しかできません。    <FORM action="次ページ.php" method="GET">    キーワード<BR>    <INPUT type="text" name="keyword">    <INPUT type="submit" value="ボタン"> ボタンをクリックしたら次ページで    if (isset($keyword)) {     分岐処理1;     }    else{     分岐処理2;     } と行いたいのですが、$keywordに値が 代入されているにも関わらず elseの処理がされてしまいます。 どこか構文が間違っているのでしょうか。 どうか教えてください。

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

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

  • ベストアンサー
  • neosys
  • ベストアンサー率50% (3/6)
回答No.2

一般的にこのような処理をする場合、formのmethodはpostが推薦されます。 また、phpで受け渡される値は、methodがpostの場合、$_POST[name]にあります。 methodがgetの場合は$_GET[name]にあり、この場合、inputのnameはkeywordのため、if($_GET['keyword'])のようにしてすることができます。

hyengi
質問者

お礼

$keyword ↓ $_GET['keyword'] にしたところ無事データの受け渡しができ 分岐処理も正常にできました。 ありがとうございました。

その他の回答 (1)

  • LancerVII
  • ベストアンサー率51% (1060/2054)
回答No.1

こんにちは。 PHPのバージョンによっては $keyword = $_GET['keyword']; と取得しないと取得できない設定に(セキュリティのため) なっていますが、その辺はいかがでしょうか?

hyengi
質問者

お礼

$keyword ↓ $_GET['keyword'] にしたところデータの受け渡しができました。 セーフティモードとの関連でしょうか? バージョンは PHP4.3.9 です。 無事解決しました。ありがとうございました。

関連するQ&A

  • 【PHP】 変数の受け渡しについて!

    abc.php のファイルで、掲示板の一覧を表示し、ソートボタンが押されたらソートの順に一覧を表示させる仕組みにしています。 ◆ abc.php のファイル // プルダウン検索の部分 function puru($AAA){ …省略 return $date; } // ページボタンの部分 function page1(){       // (2) …省略 <TR><TD><A href="abc.php?page='.$a.'&ddd=$i-10">前の10件</A></TD></TR> …省略 <TR><TD><A href="abc.php?page='.$b.'&ddd=$i">次の10件</TD></TR> …省略 } // 一覧表示の部分 function list(){ $log = file_read("log.php"); $su=10; $iu=1; if($_POST[bbb] ){$qaz=1;} // ソートボタンが押されたらの処理 for($i = $iu; $i < sizeof($log); $i++){      // (1) …省略 } if($qaz==1){ // なら一覧をソート順に表示 …省略 } } // メインヘッダーの部分(ソートするプルダウン) <SELECT size=1 name="bbb">'.puru($AAA).'</SELECT> <INPUT type="submit" value="ソート" name="ccc"> ここまではやってみましたが、一覧表示の部分の (1) のところの $i の変数の値を処理後、ページボタンの部分の (2) のところの $i に値を代入したいのですが、どうしたら良いのでしょうか?分らないので教えて下さい?宜しくお願い致します。 イメージ的には、一覧表示の部分の (1) のところの $i の変数の値を処理後、ページボタンの部分の (2) のところの $i に値を 代入したいのです。

    • 締切済み
    • PHP
  • htmlとphpのデータ受け渡し???

    いつもお世話になり誠にありがとうございます。 標記の件。 まだ、ボク自身、解っていないようです。 htmlとphpのソースコードを提示します。 どうすればデータの受け渡しができるか? 添削してくださらないでしょうか? html <!--入力画面--> <form action = "./Blog.php" method = "get"> <label class="label" for="name">お名前(ニックネーム)</label> <center><input id="name" type="text" name="name"></center> <label class="label" for="e-mail">メール</label> <input id="e-mail" type="e-mail" name="e-mail"> <label class="label" for="category">カテゴリー</label> <input id="category" type="category" name="categoryl"> <label class="label" for="message">本文</label> <textarea name="area1" style="color:rgb(8, 8, 8); font-size:100%;" cols="50" rows="30"></textarea><br> <input type="submit" name="confiem" value="確認"> </form> CSS <meta charset="utf-8"> <?php session_start(); $mode = 'input'; if( isset($_POST['back']) && $_POST['back'] ){ //何もしない } else if( isset($_POST['confirm']) && $_POST['confirm'] ){ $_SESSION['name'] = $_POST['name']; $_SESSION['e-mail'] = $_POST['e-mail']; $_SESSION['category']= $_POST['category']; $_SESSION['message'] = $_POST['message']; $mode = 'confirm'; } else if( isset($_POST['send']) && $_POST['send'] ){ $mode = 'send'; } else { $_SESSION['name'] =""; $_SESSION['e-mail'] =""; $_SESSION['category']=""; $_SESSION['message'] =""; } ?> <!--確認画面--> <?php if( $mode == 'input' ){ ?> お名前(ニックネーム)<?php echo $_POST['name'] ?><br> Eメール<?php echo $_POST['e-mail'] ?><br> カテゴリー<?php echo $_POST['category'] ?><br> 本文<br> <?php echo nl2br($_POST['message']) ?><br> <input type="submit" name="back" value="戻る" /> <input type="submit" name="send" value="送信" /> <?php } else { ?> <!--完了画面--> <?php } ?> 上記の通りです。 全然ダメだと思います。 添削のほど、宜しくお願い申し上げます。

    • ベストアンサー
    • PHP
  • フォームから受け取ったデータを変数に/PHP

    入力フォームからデータを送信し、受け取ります。 <form action="index.php" method="post"> <input type="text" name="hoge"> <input type="submit"> </form> <?php echo htmlspecialchars($_POST['hoge']); ?> この時に受けったデータが、「りんご」だとして この「りんご」を変数にしたいです。 ↓ <?php $keyword = "りんご"; ?> このようにするには、 <form action="index.php" method="post"> <input type="text" name="hoge"> <input type="submit"> </form> <?php echo htmlspecialchars($_POST['hoge']); ?> の後にどのような処理をすればよいでしょうか? または初めから「$keyword」としてフォームからデータを送ることはできるのでしょうか? 何卒ご指導の程よろしくお願いします。

    • ベストアンサー
    • 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
  • PHP チェックボックスのhidden値受け渡し

    こんばんは。いつもお世話になっております。 初歩的な質問かと思いますが、hiddenでのデータの受渡で、配列でのチェックボックスが上手くわたせずに悩んでおります。 if($_POST['send']){ **メール送信の処理します** $from_addres="xxxxxx@xxxxxxx.jp"; $to_addres=$mailadd; $make_subject="メール送信"; $message="-入力内容- アドレス:{$mailadd} なぜ:{$why}"; mailsend($to_addres,$from_addres,$make_subject,$message);//はぶいてますがfunction()書いています }elseif($_POST['submit']){ **内容確認** foreach ($_POST['why'] as $key => $why){ if($why==0){$why0="0です";} if($why==1){$why1="1です";} if($why==2){$why2="2です";} } **入力内容表示** <form method="post" action="<?=$_SERVER['../SCRIPT_NAME']?>"> <input type="hidden" name="why[]" value="<?php echo $_POST['why'];?>"> <input type="submit" name="return" value="修正"> </form> <form method="post" action="<?=$_SERVER['../SCRIPT_NAME']?>"> <input type="hidden" name="why[]" value="<?php echo $_POST['why'];?>"> <input type="submit" name="send" value="送信"> </form> }else{ <form method="post" action="<?=$_SERVER['../SCRIPT_NAME']?>"> <input name="why[]" type="checkbox" value="0"<?if($why==0){ print " checked";}?>>0 <input name="why[]" type="checkbox" value="1"<?if($why==1){ print " checked";}?>>1 <input name="why[]" type="checkbox" value="2"<?if($why==2){ print " checked";}?>>2 <input type="submit" name="submit" value="確認画面へ"> </form> } 同一ページにてif分で分岐して処理しています。 確認画面での値受け取りはできています。 その後の、送信・修正へのhiddenへの値受け渡しが上手くいきません。 結果、どう動作して欲しいかといいますと、 ・returnで戻った時に、値を保持してチェックしてあったチェックボックスに"checked"をつけたい ・sendへの値の受け渡し ・メールをとばすので、その本文への値の入れ方 foreach ($_POST['why'] as $key => $why){ if($why==0){$why0="0です";} if($why==1){$why1="1です";} if($why==2){$why2="2です";} } をメールをとばすところでも記述して$why0 $why1 $why2をprintすれば良いのでしょうか? ググってみたり、色々検索してみたのですが、調べ方がよくないので見つからず、質問をさせていただきました。 よろしくお願いします。

    • 締切済み
    • PHP
  • phpのswitch文

    お世話になります。下記のようなフォームがあります。 <form method="post"><input type="submit" value="新規登録" name="registration"><form method="post"><input type="submit" value="一覧" name="list"></form> 新規登録と一覧、2つのボタンがあるのですが押されたボタンによって処理を区別したいです。 データを受け取るPHP内に下記のように記述したのですが思い通りの結果になりません。アドバイスを宜しくお願いします。 ーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーー <?php switch(ココの記述が判りません){ //新規登録画面を表示 case "registration": print "新規登録!"; break; //一覧を表示 case "'list', )": print "一覧表示"; break; default: print "ココがデフォルト表示"; } ?> ーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーー if文だとif(isset($_POST["registration"])){の記述で分岐できたのですが、条件分岐が多いのでswitch文で書きたいです。 宜しくお願いします

    • ベストアンサー
    • PHP
  • PHP 多次元配列変数のデータ受け渡し。

    PHP 多次元配列変数のデータ受け渡し。 こんばんは。 先日からPHPでホームページを作成しています。 この度、二次元配列に代入した数値(文字列)を 二次元配列そのままで次のページに受け渡したいと考えています。 ※また、同時に新しく入力した値も受け取りたい。下記の name="data" の様に。 《1page.php》 → 《2page.php》 の受け渡しをする場合、 《1page.php》二次元配列作成 <?php for ($i=0; $i<10; $i++) { $test[] = array($_POST['moziretsu'],$_POST['suuretsu'],$_POST['suuretsu']); //文字・数字は毎回異なります。 } ?> <html> <body> <?= $test[2] ?><br> <?= $test[4] ?><br> <form action="2page.php" method="post"> <input type="text" name="data"><input type="submit" name="submit" value="次"> </form> </body> </html> 《2page.php》二次元配列受け取り <?php $aaaa = $_POST['data']; ?> で、新規に入力した数値は取得出来ても 二次元配列の $test はどの様に取得すれば宜しいのでしょうか? グーグル等で検索させてもらっても 希望の記事に辿り着かず困っております。 もしかしたら出来ないかも知れないので その場合は1page.phpで二次元配列をしないで 2page.phpにデータを送るり、2page.phpで二次元にする等の方法を考えなければなりませんし・・・。 書き方も悪くとても小さい初歩的な質問かとは思いますが 何卒、宜しくお願いいたします。

    • ベストアンサー
    • PHP
  • phpでSESSION変数の管理

    今私は、phpでページ間で変数をやり取りできる処理を作成しています。処理的には、ページAのテキストボックスtitleとテキストエリアsyosaiに入力された値をデータベースに追加し、ページBに画面を移動させるようにしたいと考えていますが、入力した値がnullになってしまい困っております。 ソースは以下のとおりです。 全部は書けませんので、怪しい部分だけ書きます。質問などがありましたら、その都度指摘をお願いします>△</ ページA ソース <form action="B.php" method="post"> <input type="text" name="title" value=""> <TEXTAREA name="syosai" cols="70" rows="10"> <input type="submit" name="b1" value="ページBへ"> <?php session_start(); if(!isset($_SESSION['title2']) || !isset($_SESSION['syosai2'])) { $_SESSION['title']=$_POST['title']; $_SESSION['syosai']=$_POST['syosai']; }else{} try{ $pdo = new PDO("mysql:host=localhost; dbname=****","****","****"); $stmt = $pdo->prepare("INSERT INTO user(clandername , syosai) VALUES(:rere3, :yuyu5)"); $stmt->bindValue(":rere3", $_SESSION['title']); $stmt->bindValue(":yuyu5", $_SESSION['syosai']); $stmt->execute(); }catch(PDOException $e){} ?> ページB ソース <form action="A.php"> <input type="submit" name="name" value="ページAへ" style="WIDTH: 70px; HEIGHT:50px"> <?php session_start(); ?> よろしくお願いいたします。

    • ベストアンサー
    • PHP
  • submitの分岐

    同じform内に、ラジオボタンとサブミットボタンを配置してあります。 ラジオボタンを押された時は自分をsubmit、ボタンが押された時にはsubmitして次の画面へ遷移したいのですが、分岐の方法がわかりません。 <form action="next.htm" method="post"> とやってしまうと、ラジオボタンが押された時にもnext.htmへ遷移してしまいます。 苦慮の結果JavaScriptで、ボタンを押された時にhiddenにフラグをたてておいて、 そのフラグに値が入っていれば <form method="post">、 入っていなければ<form action="next.htm" method="post">、 という分岐処理を書いたのですが、やはり両方next.htm画面へ遷移してしまいます。 お知恵を貸していただけないでしょうか。 ちなみに下記のようなスクリプトを書きました。 ----------------------------------------------- <script language="JavaScript1.2"> <!-- function chk_sub{ document.form.hdnChkFlg.value="1"; window.document.form.submit(); } //--> </script> <if form.hdnChkFlg="1"> <form method="post"> <else> <form action="next.htm" method="post"> <end if> <input type="radio" name="chkSitei" checked onclick="return chk_sub value="1">aaa</input> <input type="hidden" name="hdnChkFlg" value=""> <input type="submit" value="次へ"> </form> 宜しくお願いいたします。

    • ベストアンサー
    • HTML
  • Formを使ったPHP間での受け渡しについて

    いつもお世話になっています。 PHP間での変数の受け渡しで・・ <form action="<?= test.php ?>" method="POST">   <input type="hidden" name="id" value="aaa"/>   <input type="submit" name="submit" value="送信"> </form> と記述するとtest.phpには渡したいaaaが渡されるのですが、 これだとsubmitを押さないと渡せないため困っています。 したいことをまとめると、submitを使わずにページが表示されたら スグに変数が渡されるようにしたいです。 いろいろ試してみましたが、力不足で出来ませんでした。 宜しくお願いします!

    • ベストアンサー
    • PHP

専門家に質問してみよう