• ベストアンサー

受け渡した変数が、プログラム実行後に消えてしまう?!

いつもありがとうございますm(_ _)m。入力画面test1.phpをlocation.replaceを使って[リロードしない為]切り替えて、別の画面test2.phpと連携させています。JSのwindow.openは顧客環境では使えません(大泣) test1.php→test2.php→test1.phpという流れで二つの変数を受け渡ししたいのですが。。。 (1)test1.phpにある変数 $row1[code] $row1[name] inputボタンをクリックすることで、URLを使って次のファイルに渡す <input type="button" value="go2" onClick='location.replace ("http://********/test2.php?row1[code]=<? echo $row1[code];?>&row1[name]=<? echo $row1[name];?>")' name="button"> (2)test2.php フォームのテキストフィールドが用意されている <input name="code" type="text" value="<? echo $row1[code]; ?>"> <input name="name" type="text" value="<? echo $row1[name]; ?>"> test1.phpから、test2.phpの画面に切り替わった瞬間には、2つのの値がキチンと表示されている。 ここでnameに入った値を元に、サブミットボタンで処理。 <input type="submit" name="read" value="読み込み"> この時name部分に関しては、DB読込・結果をname&その他の項目と共にフォーム上にちゃんと再表示できるが、codeの値が消えてしまう。。 PHPの処理部$read部に以下のように2通り、書き加え試しましたが、だめでした。 $row1[code] = $row1[code]; $row1[code] = $_GET['$row1[code]']; なぜ消えてしまうのか? 変数をキープするにはどうしたらいいでしょうか? あるいは、他に良いアイディアなどありましたら、教えて下さい。よろしくお願いいたします。。。

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

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

  • ベストアンサー
回答No.1

$row1[code] = $_GET['$row1[code]']; ではなく、 $row1[code] = $_GET['row1[code]'];  じゃないかな?

sos000
質問者

お礼

全くそのとおりでした。ありがとうございました。

その他の回答 (1)

  • sisya
  • ベストアンサー率39% (97/245)
回答No.2

質問の内容のままでしたら#1さんの仰る通り 引数が間違っていますね。 他に良い方法を…とありましたので 回答させていただきますと、 POSTを使って受け渡しをしてはいかがでしょうか? test1.php <form method="post" action="test2.php"> <input type="hidden" name="code" value="<?$row1[code];?>"> <input type="hidden" name="name" value="<?$row1[name];?>"> <input type="submit" value="go2"> test2.php <input type="text" name="code" value="<?$_POST['code']?>"> <input type="text" name="name" value="<?$_POST['name']?>">

sos000
質問者

お礼

こちらもやってみました。ありがとうございました。

関連するQ&A

  • 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
  • PHP 未定義の変数について

    以前にも質問しましたが、新たに壁にぶつかってしまったので再度投稿させていただきます。 ToDoリストを作っており、予定を入力フォームからデータベースへ登録、表示することまではできました。 現在は、表示されている全ての予定レコードの右端に"更新"と"削除"のボタンを設置し、それぞれの動作を行いたいと考えております。 それぞれのボタンに<input type=hidden name=No value='.$row[No].'>と記述し、更新箇所を入力するフォームを別ファイルで用意してあります。 しかし"更新"ボタンを押しても、 Notice: Undefined variable: No in C:\××××××××××\input_update.php on line 17 データは削除済か、もしくは存在しません。 というエラーメッセージが出てしまいます。(※"データは削除済みか~"は自分で記述したメッセージです。)実際にデータはあるので、変数の受け渡しがうまくいってないと思うのですが・・・ 調べると、「未定義の変数があるよ」という事なのでしょうが、未定義の変数というものが分かりません。 all_todo.php <?php $conn = mysql_connect("localhost","root","×××"); if($conn == false) {die("MySQL 接続エラー");} mysql_set_charset("sjis"); mysql_select_db("todo"); $sql="SELECT * FROM `todo`"; $todo_list=mysql_query($sql); while($row=mysql_fetch_array($todo_list)) { echo("<tr id='honbun'>"); echo("<td>"."<input id='c_change' type='checkbox' name='check' value='check'>".$row["済"]."</td>"); echo("<td id='No'>".$row["No"]."</td>"); echo("<td id='title'>".$row["タイトル"]."</td>"); echo("<td id='todo'>".$row["内容"]."</td>"); echo("<td id='limit'>".$row["期限"]."</td>"); echo("<td id='priority'>".$row["優先度"]."</td>"); echo("<form action=input_update.php method=post>"); echo("<input type=hidden name=No value='.$row[No].'>"); echo("<td><input type=submit value=更新></td>"); echo("</form>"); echo("<form action=input_update.php method=post>"); echo("<input type=hidden name=No value='.$row[No].'>"); echo("<td><input type=submit value=削除></td>"); echo("</form>"); echo("</tr>\n"); } mysql_free_result($todo_list); mysql_close(); ?> input_update.php <?php $conn = mysql_connect("localhost","root","×××"); if($conn == false) {die("MySQL 接続エラー");} mysql_set_charset("sjis"); mysql_select_db("todo"); $sql="SELECT `No`,`タイトル`,`内容`,`期限`,`優先度` FROM `todo` WHERE `No`='$No'"; $todo_list=mysql_query($sql); if(!$row=mysql_fetch_array($todo_list)) {die("データは削除済か、もしくは存在しません。");} echo "<form action=update.php method=post>"; echo "タイトル<input type=text name=タイトル value=\"" . $row["title"] . "\"> "; echo "内容<input type=text name=内容 value=\"" . $row["todo"] . "\"> "; echo "期限<input type=text name=期限 value=\"" . $row["limit"] . "\"> "; echo "優先度<input type=text name=優先度 value=" . $row["priority"] . "> "; echo "<input type=hidden name=id value=" . $id . ">"; echo "<input type=submit value=更新>"; echo "</form>"; mysql_free_result($todo_list); mysql_close(); ?> というコードです。 私の推測では、 >{die("データは削除済か、もしくは存在しません。");} というメッセージが表示されていることから、フォームからデータの受け渡しは出来ているのだと思います。ただ、意図した変数が渡されていないと思うのですが、フォームのvalue='.$row[No].'という記述に問題があるのか、はたまたname=Noの部分か、SELECT文の記述が悪いのかまったく分かりません。 どなたか知恵をお貸しください。 お願いいたします。

    • ベストアンサー
    • 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
  • 変数の書き方について

    下記のようなプログラムを作成しました。 この状態で20行目のechoを実行しても何も表示されません。 15行目にある$emailを表示させるためには、 19行目と20行目の辺りになんらかの変数を書かなければならないと思うのですが、 具体的にはどのような内容を記載すればよろしいのでしょうか? ご教授のほどよろしくお願いします。 1:<form method="post" action="<?=$_SERVER["PHP_SELF"]?>"> 2:<input type="hidden" name="act" value="updconf"> 3:<input type="hidden" name="roomid" value="<?=$roomid ?>"> 4:<input type="hidden" name="hiduke" value="<?=$hiduke?>"> 5:<input type="hidden" name="jikan" value="<?=$jikan?>"> 6:<input type="submit" name="sub" value="予約更新"> 7:</td> 8:<td>お名前</td> 9:<td> 10:<input type="text" name="yoyakusha" value="<?=$user ?>"> 11:</td> 12:</tr> 13:<tr> 14:<td>メールアドレス</td> 15:<td><input type="text" name="email" value="<?=$email ?>"></td> 16:</tr> 17:</form> 18: 19:<?php 20:echo $email; 21:?>

    • ベストアンサー
    • PHP
  • PHPの囲みかた

    以下のPHPが動かない、画面が真っ白になってしまうのですがなぜでしょうか? また<?php ?>でPHPは囲みますが、一画面で何回も囲んでも構わないでしょうか? <input name="button" type="button" onclick="location.href='/abc.php'" value="abc"> <?php  print ('<input type="button" value="aaa" onClick="location.href='/aaa.php'">'); ?> <input type="button" value="bbb" onClick="location.href='/bbb.php'">

    • 締切済み
    • PHP
  • チェックボックスの初期選択と選択保持

    複数のチェックボックスのうちどれかを初期選択させ、ボタン押下後は選択保持をさせたいです。 片方のみならできるのですが、どなたかご教授いただけるとうれしいです。 現在のソースはこんな感じになっていて選択したものの保持はできるのですが、初期選択ができていません。よろしくおねがいします。 <html> <body> <form name="form" method="post"> <?php test1() ?> test1 <?php test2() ?> test2 <?php test3() ?> test3<br><br> <input type="submit" name="button" value="button"> </form> <?php function test1(){ if ($_POST['test1']){ echo "<input type=\"checkbox\" name=\"test1\" checked>"; }else{ echo "<input type=\"checkbox\" name=\"test1\">"; } } function test2(){ if ($_POST['test2']){ echo "<input type=\"checkbox\" name=\"test2\" checked>"; }else{ echo "<input type=\"checkbox\" name=\"test2\">"; } } function test3(){ if ($_POST['test3']){ echo "<input type=\"checkbox\" name=\"test3\" checked>"; }else{ echo "<input type=\"checkbox\" name=\"test3\">"; } } ?> </body> </html>

    • 締切済み
    • PHP
  • echo での 変数の扱い方について

    phpでの 下記のスクリプトについて、エラーが出てしまいす。エラー内容は 「syntax error, unexpected '"' 」 というものです。 echo "<input type=\"hidden\" name=\"page_num\" value=\".($page_num-1).\">"; これは、<input type="hidden" name="page_num" value="page_num-1"> を echoで 表記しようとしたものですが、どこが間違っているのか。 おそらく、$page_num-1 の変数の扱いに問題があるようなんですが、 どのように書けばいいでしょうか。 よろしくお願いします。

    • ベストアンサー
    • PHP
  • フォームを使った配列変数の受け渡し

    PHP初心者です、よろしくお願いします。 フォームからPHPで配列変数を受け渡すことを考えています。 一次元配列はうまく渡せましたので、これを二次元にしましたところ、 うまく渡せません。基本的なPHPの文法がわかってないので、つまづい ています。多分、配列変数の記述方法がおかしいのだと思うのですが・・。 ご教授よろしくお願いします。 <html> <body> <form method = "POST" action ="test2.php" > <?php //データ渡し側 for ($i = 0 ;$i < 2 ;$i ++){ for ($j=0 ;$j <2;$j ++ ){ echo ("<input type ='text' name = 'data[$i][$j]' size ='10'>\n"); echo ("<br>\n"); } echo ("</tr>\n"); } ?> <input type="submit" name ="sbmit" value="data_input" > </form> </body> </html> <?php //データ受け側 for ($i = 0 ;$i < 2 ;$i ++){ for ($j=0 ;$j < 2;$j ++ ){ $tmp_data[$i][$j] = $_POST["data"][$i][$j]; echo ("$tmp_data[$i][$j] <br>\n"); } } ?> <html> <body> <form method = "POST" action ="test2.php" > <?php for ($i = 0 ;$i < 2 ;$i ++){ for ($j=0 ;$j <2;$j ++ ){ echo ("<input type ='text' name = 'data[$i][$j]' size ='10' value='$tmp_data[$i][$j]'>\n"); echo ("<br>\n"); } } ?> </table> <input type="submit" name ="sbmit" value="in" > </form> </body> </html> 実行結果は、 Array[0] Array[1] Array[0] Array[1] と表示されて、実際の入力した値が反映されません。

    • ベストアンサー
    • PHP
  • PHPスクリプト内のボタンのonclickの動作

    PHPスクリプト内で、下記のようなボタンと、ボタンが押された時のイベントでシンタックスエラー がなかなか消えません。どこがまちがっているのか教えていただきたいです。 どうぞよろしくお願い致します。 <?php ~ echo("<input type=\"button\" value=\"削除\" onclick=\"location.href='delete.php?sid=$row['sid']'\">"); ~ ?>

    • ベストアンサー
    • PHP
  • phpのpostについて

    a.phpの値をb.phpにpostしたいのですがうまく値が渡せません post元にはname属性に変数を用いているのですがpost先でnameをどのように指定したらいいかわかりません <a.php> <form action="foo.php" method="POST"> <div id="button"> <input type="submit" name ="PostGo" value="postTime" style="margin-right:30px;" /> </div> <table> <?php for ($data = 1; $data < 5; $data++) { ?> <tr><td> <select name="test<?php echo $data?>"> <option value=1>1 <option value=2>2 <option value=3>3 <option value=4>4 </select> <?php } ?> </table></form> <b.php> <?php for($i=1;$i<5;$i++){ $test =($_POST['test']);←ここの部分のpostをどう指定したらいいかわかりません echo $test; } ?> ※$_POST['test' + $i] これでも取れませんでした

    • ベストアンサー
    • PHP

専門家に質問してみよう