質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

ただいまの
回答率

90.61%

  • PHP

    19903questions

    PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

  • JavaScript

    15991questions

    JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

  • HTML

    8706questions

    HTMLとは、ウェブ上の文書を記述・作成するためのマークアップ言語のことです。文章の中に記述することで、文書の論理構造などを設定することができます。ハイパーリンクを設定できるハイパーテキストであり、画像・リスト・表などのデータファイルをリンクする情報に結びつけて情報を整理します。現在あるネットワーク上のほとんどのウェブページはHTMLで作成されています。

  • HTML5

    3898questions

    HTML5 (Hyper Text Markup Language、バージョン 5)は、マークアップ言語であるHTMLの第5版です。

  • teratail

    414questions

    teratail(テラテイル)は、プログラミングに特化した日本語Q&Aサイトです。

掲示板[frameset/リロード]

解決済

回答 1

投稿 編集

  • 評価
  • クリップ 0
  • VIEW 858

b1ackc0ffee

score 197

イメージは2chとかチャットなどの掲示板にしたいのですが、
faramesetのうまい使い方がわかりません。
2分割にしたいのに、送信ボタンを押すたびに分割数が増えていきます。
どこをどう直せばよいでしょうか。
お手数おかけしますが、宜しくお願い致します。
------------------------------
[現状]やりたいことと問題点
・送信ボタンを押下する度に、表示画面が出てしまう(何分割もされる)
・frameset使ったときに、下の画面がリロードされない。
・過去の書き込み情報で、投稿ごとに線が引かれますが、左側が短くなっている。

[画面構成]
・ログイン画面 login.php 
・ログイン後の表示画面 frameset.php
→上段(名前/本文入力フォーム/送信ボタン) guest_input.php
→→入力された情報をファイルに新しい順に保存するプロフラム guest_write.php
→下段(過去の書き込み表示) guest_read_ASC.php

[画面遷移]                     ┌→上フレーム(guest_input.php)
                                   │
login.php→frameset.php―
                                   │
                                   └→下フレーム(guest_read_ASC.php)

[試した方法]→  <meta http-equiv="refresh" content="1;URL=http://'.$_SERVER['HTTP_HOST'].rtrim(dirname($_SERVER['PHP_SELF']), '/').'/frameset.php">を書き込んで指定した秒数後に自動リロード
→<a href="guest_read_ASC.php" target="frame2">
→下の画面に  <meta http-equiv="refresh" content="3">を入力しても、送信ボタンを押したら分割してしまう。
→frameset.phpをリロードすると、入力する時間が無くなってしまう。

[参考]■DOCTYPE宣言でframeの使用が許されているのは、XHTMLFramesetのみ?
■フレームをやめるか、JavaScriptを使うしかない?
■JavaScriptでないと無理というより、本当にframesetやJavaScriptが必要なのか?
■CSSのoverflow?
■リロードではなくwindow.open?
//カオス・・・\(。Q゜)/
------------------------------

現状
input
<!DOCTYPE html>
<html>
<head>
  <meta charset="UTF-8" />
  <title>NEW掲示板</title>
</head>
<body>
  <h3>ようこそNEW掲示板へ</h3>
  <form method="POST" action="guest_write.php">
  <div id="container">
    <label for="name">名前:<label>
    <input type="text" id="name" name="name" size="20" maxlength="30" />
  </div>
  <div id="container">
    <label for="body">本文:</label>
    <input type="text" id="body" name="body" size="70" maxlength="255" />
  </div>
  <input type="submit" value="送信" />
</form>
</body>
</html>
write
<?php
// 一時ファイルに新しいデータを送り、そのファイルに既にあるデータを追記し、bbs.datにリネーム
$old_file = fopen('bbs.dat', 'rb');
$new_file = fopen('bbs.tmp', 'wb');
flock($old_file, LOCK_SH);
flock($new_file, LOCK_EX);
fputs($new_file, date('Y年 m月 d日 H:i:s')."\t");
fputs($new_file, $_POST['name']."\t");
fputs($new_file, $_POST['body']."\n");
$name = ( isset($_POST['name']) && is_string($_POST['name']) )? $_POST['name'] : '' ;
$body = ( isset($_POST['body']) && is_string($_POST['body']) )? $_POST['body'] : '' ;
// fputs→一時(NEW)ファイルの先頭に新しい情報を書き込み
// 日時<\t>名前<\t>本文<\n>が横並びになった行が一行ずつ改行され書き込まれていく
while ($row = fgets($old_file)) {
  fputs($new_file, $row);
}
// while→bbs.dat(OLD)の内容をbbs.tmp()に書き込み 古い情報を新しいファイルに追記
flock($new_file, LOCK_UN);
flock($old_file, LOCK_UN);
fclose($new_file);
fclose($old_file);
unlink('bbs.dat');
rename('bbs.tmp', 'bbs.dat');
header('Location: http://'.$_SERVER['HTTP_HOST'].rtrim(dirname($_SERVER['PHP_SELF']), '/').'/frameset.php');
read
<?php require_once './Encode.php'; ?>
<!DOCTYPE html>
<html>
<head>
  <meta charset="utf-8" />
  <meta http-equiv="refresh" content="3">
</head>
<body>
  <h3>過去の書き込み情報</h3>
  <?php
  $file = @fopen('bbs.dat', 'rb') or die('bbsファイルが開けませんでした');
  flock($file, LOCK_SH);
  print('<dl>');
  /* ここから--ファイルを行単位に読み込み-- */
  while ($row = fgetcsv($file, 1024, "\t")) {
    print('<dt>'.e($row[1]));
    print('('.e($row[0]).')</dt>');
    print('<dd>本文:'.e($row[2]).'<hr /><dd>');
  }
  print('<dl>');
  flock($file, LOCK_UN);
  fclose($file);
  ?>
<body>
</html>
frameset
<!DOCTYPE html>
<html>
<head>
  <meta charset="utf-8" />
  <link rel="stylesheet" type="text/css" href="bbs.css">
</head>
<frameset rows="15%,*">
    <frame src="guest_input.php" name="frame1">
    <frame src="guest_read_ASC.php" name="frame2">
</frameset>
</html>
------------------------------------------------------------以上
掲示板シリーズ続くと思いますが宜しくお願い致します。
  • 気になる質問をクリップする

    クリップした質問は、後からいつでもマイページで確認できます。

    またクリップした質問に回答があった際、通知やメールを受け取ることができます。

    クリップを取り消します

  • 良い質問の評価を上げる

    以下のような質問は評価を上げましょう

    • 質問内容が明確
    • 自分も答えを知りたい
    • 質問者以外のユーザにも役立つ

    評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

    質問の評価を上げたことを取り消します

  • 評価を下げられる数の上限に達しました

    評価を下げることができません

    • 1日5回まで評価を下げられます
    • 1日に1ユーザに対して2回まで評価を下げられます

    質問の評価を下げる

    teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

    • プログラミングに関係のない質問
    • やってほしいことだけを記載した丸投げの質問
    • 問題・課題が含まれていない質問
    • 意図的に内容が抹消された質問
    • 広告と受け取られるような投稿

    評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

    質問の評価を下げたことを取り消します

    この機能は開放されていません

    評価を下げる条件を満たしてません

    評価を下げる理由を選択してください

    詳細な説明はこちら

    上記に当てはまらず、質問内容が明確になっていない質問には「情報の追加・修正依頼」機能からコメントをしてください。

    質問の評価を下げる機能の利用条件

    この機能を利用するためには、以下の事項を行う必要があります。

回答 1

checkベストアンサー

0

フレーム懐かしいですね。最近ではあまり使われません。

guest_input.phpのformタグに target="frame2" を追加してやります。
これで下フレームに対してPOSTされます。

それからguest_write.phpのリダイレクトはframesetではなくguest_read_ASC.phpにしてやってください。

それからリアルタイム性が必要なければ特にリロード処理は不要だと思います。

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2015/07/10 10:18

    あまり使われないんですね!
    なぜでしょう?
    そんなこと教えてくれる人がいなかったので、嬉しいです。
    有難うございます★
    2か所直したら、期待通りの動作になりました!
    まだ流れが整理できていないですが、勉強したいと思います。
    あとはログイン後の画面遷移です^^

    キャンセル

  • 2015/07/10 10:29

    フレームはブックマークしたときの構成が一意に決まらなかったり、検索したときにフレームの内部のみ表示されるなどの問題点があったので廃れたのだと思います。
    自分はフレームはシンプルなので好きなんですが。

    キャンセル

  • 2015/07/10 14:05

    なるほど、そうなんですね★★
    代わりに何を使うのがスタンダードなのでしょうか?^^

    キャンセル

15分調べてもわからないことは、teratailで質問しよう!

  • ただいまの回答率 90.61%
  • 質問をまとめることで、思考を整理して素早く解決
  • テンプレート機能で、簡単に質問をまとめられる

関連した質問

  • 解決済

    【PHP】参考書の例文で何故かエラーがでます。

    ファイルのアップロードをしたいのですがどうもうまく行きません… <!DOCTYPE html> <html> <head> <meta charset="utf-8"> <titl

  • 解決済

    php ログインについて

    お世話になります。 現在phpでログイン画面を作っているのですがうまくいかず困っています。 ********** <?php require_once 'h.php'; # 

  • 解決済

    PHP・簡易掲示板の削除機能について

    PHPを使って簡易掲示板を作成しております。     下記コードにて1行投稿は行えるのですが、 削除番号を指定して、投稿を削除できる機能がうまく書けません。 どのように書き直したら

  • 受付中

    入れ子??

    <?php require_once '../Encode.php'; ?> <!-- Encode.phpをインポート --> <!DOCTYPE html> <html> <h

  • 解決済

    どこが間違っていますか?ゲストブック

    locationの部分を完全なアドレスを書いていましたが、 下記のように書き換えたところエラーが出てしまいました。 書き方が間違っているのでしょうか。 送信ボタン押下後の、表示画面

  • 解決済

    翻訳してください[fgets]

    参考書に下記のようなコードがあります。 <?php // 一時ファイルに新しいデータを送り、そのファイルに既にあるデータを追記し、bbs.datにリネーム $old_file =

  • 解決済

    phpでmysqlからデータの取得

    phpでデータベースの値を取得したいです。 <html> <head> <meta charset="utf-8"> <title>PHP TEST</title></head>

  • 解決済

    PHP:簡易掲示板の編集機能

    PHPで簡易掲示板を作っております。 下記コードで編集機能を実装しようとしています。 「各投稿番号とPOST送信されてきた編集番号を比較し、等しい場合、配列値を取得する」 ことはで

同じタグがついた質問を見る

  • PHP

    19903questions

    PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

  • JavaScript

    15991questions

    JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

  • HTML

    8706questions

    HTMLとは、ウェブ上の文書を記述・作成するためのマークアップ言語のことです。文章の中に記述することで、文書の論理構造などを設定することができます。ハイパーリンクを設定できるハイパーテキストであり、画像・リスト・表などのデータファイルをリンクする情報に結びつけて情報を整理します。現在あるネットワーク上のほとんどのウェブページはHTMLで作成されています。

  • HTML5

    3898questions

    HTML5 (Hyper Text Markup Language、バージョン 5)は、マークアップ言語であるHTMLの第5版です。

  • teratail

    414questions

    teratail(テラテイル)は、プログラミングに特化した日本語Q&Aサイトです。