空き部屋のページと空き部屋の更新ページの設定 - PHPプロ!Q&A掲示板

2695

  • 0P

空き部屋のページと空き部屋の更新ページの設定

質問日時 / 2010年4月30日 22:24    回答数 / 2件

Questioner:  sasara  このエントリーをはてなブックマークに追加 

キーワード / データ読み込み    データ書き込み    データの記憶   

こんにちは。お世話になります。
現在HP上に「空き部屋のお知らせページ」と「空き部屋の更新ページ」を作成しています。
「空き部屋の更新ページ」にアクセスできるのは一定の管理者のみで、お知らせページだけを
一般ユーザが見れる形になっています。


困っているのは、2点あります。

1.お知らせページを更新ページで更新した後、お知らせページを覗くと
空き部屋が更新されているのですが、他のメニューをクリックした後にお知らせ
ページに戻ってくると空き部屋が0室に戻ってしまうという状態になってしまいます。

2.お知らせページに記載されている現在の空き部屋のデータを、更新ページの場所でも
「現在の空き部屋データ」として表示させているのですが、全て「室」と表示されて「0室」
とも表示されずにいます。

現在のソースは、
■vacancy-info.php(空き部屋のお知らせページ)

  1. <?php
  2. //初期値を受け取っていない場合
  3. if($_POST['room1']==null && $_POST['room2']==null && $_POST['room3']==null && $_POST['room4']==null && $_POST['room5']==null && $_POST['room6']==null){  
  4.     //セッションデータを保存する
  5.     $_SESSION["room1"]=0;
  6.     $_SESSION["room2"]=0;
  7.     $_SESSION["room3"]=0;
  8.     $_SESSION["room4"]=0;
  9.     $_SESSION["room5"]=0;
  10.     $_SESSION["room6"]=0;
  11.   }else{
  12.     //vacancy-infomaneger.phpで設定した空室の値を受け取る
  13.     $room1=$_POST['room1'];
  14.     $room2=$_POST['room2'];
  15.     $room3=$_POST['room3'];
  16.     $room4=$_POST['room4'];
  17.     $room5=$_POST['room5'];
  18.     $room6=$_POST['room6'];
  19.   
  20.     //セッションデータを保存する
  21.     $_SESSION["room1"]=$room1;
  22.     $_SESSION["room2"]=$room2;
  23.     $_SESSION["room3"]=$room3;
  24.     $_SESSION["room4"]=$room4;
  25.     $_SESSION["room5"]=$room5;
  26.     $_SESSION["room6"]=$room6;
  27.   }  
  28. ?>

空室<?php print $_SESSION["room1"]?>室
↑6室まで同じように続く。

  1. <?php
  2.   //vacancy-info.phpに表示されている空室の値を書き込む
  3.   $data="$room1,$room2,$room3,$room4,$room5,$room6";
  4.   //ファイルオープン
  5.   $pointer=fopen("data/room-info.txt""w");
  6.   //ファイルロック
  7.   flock($pointerLOCK_EX);
  8.   //書き込み処理
  9.   fputs($pointer$data);
  10.   //ファイルロック解除
  11.   flock($pointerLOCK_UN);
  12.   //ファイルクローズ
  13.   fclose($pointer);
  14. ?>

になっており、
■vacancy-infomaneger.php(空き部屋の更新ページ)
のソースは、

  1. <?php
  2.   ////vacancy-info.phpに表示されている空室の値を読み込む
  3.   //ファイルオープン
  4.   $pointer=fopen("data/room-info.txt""r");
  5.   //データを取り出す
  6.   $data = fgets($pointer);
  7.   //スプリット
  8.   $room=split(",",$data);
  9.   //ファイルクローズ
  10.   fclose($pointer);
  11. ?>

現在の空室 <?php print "$room[0]\n"?>部屋
↑これも6部屋分

になっています。


お手数ですが、何方かご教授お願いします。
また早急なる対応を勝手ではございますが、求めております。

この質問への意見の募集は締め切られ、ポイントは既に配分されました。
意見を投稿することはできますが、ポイントを受け取ることはできません。



ツリー一覧

┗A01shimixまず・・ お知らせページ(vacancy-info.php)は$_
 ┗A01-1sasaraお知らせページ(vacancy-info.php)は$_POSTで各部屋

回答一覧

並び替え:

A01
answerershimix [4月30日 23:58] (最終編集:5月1日 00:18)

まず・・

お知らせページ(vacancy-info.php)は$_POSTで各部屋の値を受け取るようになっていますが、POSTするフォームはどこにあるのでしょう?更新ページ(vacancy-infomaneger.php)でテキストファイルに書き込んだものを読み込んで表示すべきではありませんか?

#$_SESSIONで保持する意図がわかりません。お知らせページは一般の閲覧者向けではないのでしょうか?

表示のための(ですよね?)お知らせページで書き込んでいたり、逆に更新ページが読み込みのみだったり・・。ちょっと「どういう処理をさせたいのか」がわかりません。もう一度最初からロジックを組み立て直すことをお勧めします。

なお、

>$_POST['room1']==null

issetを使うとか、そもそもif ($_POST) でPOST自体の有無をチェックするとか・・



(追記)
以下蛇足です(汗

vacancy-info.php
  1. <?php
  2. $fp = fopen("data/room-info.txt""r");
  3. $data = fgets($fp);
  4. $room_array = split(",",$data);
  5. fclose($fp);
  6. $rno = 0;
  7. foreach ($room_array as $room) {
  8.     print $rno . '-' . $room . '室<br />';
  9.     $rno++;
  10. }
  11. ?>

vacancy-infomanager.php
  1. <?php
  2. if ($_POST) {
  3.     $fp = fopen("data/room-info.txt""w");
  4.     flock($fpLOCK_EX);
  5.     fputs($fpimplode(',' , $_POST['room']) . PHP_EOL);
  6.     flock($fpLOCK_UN);
  7.     fclose($fp);
  8. }
  9. $fp = fopen("data/room-info.txt""r");
  10. $data = fgets($fp);
  11. $room_array = split(",",$data);
  12. fclose($fp);
  13. $rno = 0;
  14. print '<form action="" method="post">';
  15. foreach ($room_array as $room) {
  16.     print $rno . '-<input type="text" name="room[]" value="' . $room . '">室<br />';
  17.     $rno++;
  18. }
  19. print '<input type="submit" value="post">';
  20. print '</form>';
  21. ?>

POST内容のチェックも何もない素の状態ですので、適宜チェックなど追加してみてください。

この意見に回答する

ツリーへ TOPへ

A01-1
replyersasara [5月1日 14:45]

お知らせページ(vacancy-info.php)は$_POSTで各部屋の値を受け取るようになっていますが、POSTするフォームはどこにあるのでしょう?

更新ページ(vacancy-infomaneger.php)に以下のフォームがありまして、
そこで空室を変更したりします。
  1. <form name="form1" method="post" action="vacancy-info.php">
  2. <table>
  3. <tr>
  4. <td bgcolor="#6699FF"><strong>ホテル場所名</strong></td>
  5. <td bgcolor="#6699FF"><strong>現状の空室情報</strong></td>
  6. <td bgcolor="#6699FF"><strong>変更内容</strong></td>
  7. </tr>
  8. <tr>
  9. <td bgcolor="#f0f8ff">東京ホテル</td>
  10. <td bgcolor="#f0f8ff">空室 <?php print "$room[0]\n"?>部屋</td>
  11. <td bgcolor="#f0f8ff">空室 <select name="room1" id="room1">
  12.       <option value="0" selected>0</option>
  13.       <option value="1">1</option>
  14.       <option value="2">2</option>
  15.       <option value="3">3</option>
  16.       <option value="4">4</option>
  17.       <option value="5">5</option>
  18.       <option value="6">6</option>
  19.       <option value="7">7</option>
  20.       <option value="8">8</option>
  21.       <option value="9">9</option>
  22.       <option value="10">10</option>
  23.     </select>室</td>
  24. </tr>
  25. <tr>
  26. <td bgcolor="#f0f8ff">大阪ホテル</td>
  27. <td bgcolor="#f0f8ff">空室 <?php print "$room[1]\n"?>部屋</td>
  28. <td bgcolor="#f0f8ff">空室 <select name="room2" id="room2">
  29.       <option value="0" selected>0</option>
  30.       <option value="1">1</option>
  31.       <option value="2">2</option>
  32.       <option value="3">3</option>
  33.       <option value="4">4</option>
  34.       <option value="5">5</option>
  35.       <option value="6">6</option>
  36.       <option value="7">7</option>
  37.       <option value="8">8</option>
  38.       <option value="9">9</option>
  39.       <option value="10">10</option>
  40.     </select>室</td>
  41. </tr>
  42. <tr>
  43. <td bgcolor="#f0f8ff">京都ホテル</td>
  44. <td bgcolor="#f0f8ff">空室 <?php print "$room[2]\n"?>部屋</td>
  45. <td bgcolor="#f0f8ff">空室 <select name="room3" id="room3">
  46.       <option value="0" selected>0</option>
  47.       <option value="1">1</option>
  48.       <option value="2">2</option>
  49.       <option value="3">3</option>
  50.       <option value="4">4</option>
  51.       <option value="5">5</option>
  52.       <option value="6">6</option>
  53.       <option value="7">7</option>
  54.       <option value="8">8</option>
  55.       <option value="9">9</option>
  56.       <option value="10">10</option>
  57.     </select>室</td>
  58. </tr>
  59. <tr>
  60. <td bgcolor="#f0f8ff">高知ホテル</td>
  61. <td bgcolor="#f0f8ff">空室 <?php print "$room[3]\n"?>部屋</td>
  62. <td bgcolor="#f0f8ff">空室 <select name="room4" id="room4">
  63.       <option value="0" selected>0</option>
  64.       <option value="1">1</option>
  65.       <option value="2">2</option>
  66.       <option value="3">3</option>
  67.       <option value="4">4</option>
  68.       <option value="5">5</option>
  69.       <option value="6">6</option>
  70.       <option value="7">7</option>
  71.       <option value="8">8</option>
  72.       <option value="9">9</option>
  73.       <option value="10">10</option>
  74.     </select>室</td>
  75. </tr>
  76. <tr>
  77. <td bgcolor="#f0f8ff">長崎ホテル</td>
  78. <td bgcolor="#f0f8ff">空室 <?php print "$room[4]\n"?>部屋</td>
  79. <td bgcolor="#f0f8ff">空室 <select name="room5" id="room5">
  80.       <option value="0" selected>0</option>
  81.       <option value="1">1</option>
  82.       <option value="2">2</option>
  83.       <option value="3">3</option>
  84.       <option value="4">4</option>
  85.       <option value="5">5</option>
  86.       <option value="6">6</option>
  87.       <option value="7">7</option>
  88.       <option value="8">8</option>
  89.       <option value="9">9</option>
  90.       <option value="10">10</option>
  91.     </select>室</td>
  92. </tr>
  93. <tr>
  94. <td bgcolor="#f0f8ff">沖縄ホテル</td>
  95. <td bgcolor="#f0f8ff">空室 <?php print "$room[5]\n"?>部屋</td>
  96. <td bgcolor="#f0f8ff">空室 <select name="room6" id="room6">
  97.       <option value="0" selected>0</option>
  98.       <option value="1">1</option>
  99.       <option value="2">2</option>
  100.       <option value="3">3</option>
  101.       <option value="4">4</option>
  102.       <option value="5">5</option>
  103.       <option value="6">6</option>
  104.       <option value="7">7</option>
  105.       <option value="8">8</option>
  106.       <option value="9">9</option>
  107.       <option value="10">10</option>
  108.     </select>室</td>
  109. </tr>
  110. </table>
  111. <input type="submit" name="Submit" value="情報変更ボタン"></form>

>更新ページ(vacancy-infomaneger.php)でテキストファイルに書き込んだものを読み込んで表示すべきではありませんか?

書き込む時が更新ページだな・・・と言うのは確かにそうだなと気付きましたが、
submitを押した時点で書き込みしなくてはならないのだと考えますが、それは更新ページの末尾に書くのでしょうか?

>$_SESSIONで保持する意図がわかりません。お知らせページは一般の閲覧者向けではないのでしょうか?

はい、そうです。お知らせページは一般の閲覧者向けになります。

>表示のための(ですよね?)お知らせページで書き込んでいたり、逆に更新ページが読み込みのみだったり・・。ちょっと「どういう処理をさせたいのか」がわかりません。もう一度最初からロジックを組み立て直すことをお勧めします。

正直、初めはシンプルに書いていたので自分でも判っていたつもりだったのですが、
思いつきでSESSION入れたり色々してるうちにこんがらがって来たのが現状です。
ロジックをもう一度整理してみます。

この意見に回答する

ツリーへ TOPへ

<<質問一覧へ



Pick Up Q&A

Q
PHPでのRSS表示までの流れについて
 このエントリーをはてなブックマークに追加 
A
get_headers()だとフィードを重複取得したり、宜しく無い様なので、 この件は忘れて、フィード内の以下の値をチェックしてください。 RSS1.0: channel>d:date RSS2.0: channel>lastBuildDate ATOM: modifi...

>>続きを読む

phpファイルをどう分けるか、といった問題は経験のある人に相談すると安心できますね。

▲解説者:岡本(アシアル株式会社 教育コーディネーター兼 システムエンジニア)