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

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

新規登録して質問してみよう
ただいま回答率
85.50%
PHP

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

HTML

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

Q&A

解決済

1回答

1799閲覧

投稿を表示させたいです。

kaity

総合スコア19

PHP

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

HTML

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

0グッド

0クリップ

投稿2018/11/28 05:14

編集2018/11/28 08:47

php<html>

1<head> 2<meta charset="utf-8"> 3 <title>○○</title> 4 </head> 5 <body> 6 <form method="POST" action="○○.php"> 7 <input type="text" name="namae" value="名前"><br> 8 <input type="text" name="name" value="コメント"><br> 9 <input type="text" name="sakuzyo" placeholder="削除対象番号"><br> 10 <input type="submit" value="送信"> 11 12 </form> 13 <?php 14 $name=$_POST["name"];//コメントフォーム 15 $namae=$_POST["namae"];//名前フォーム 16 $sakuzyo=$_POST["sakuzyo"];//削除フォーム 17 $date=date('Y年m月d日 H時i分');//日付 18 $filename="●●.txt";//テキストファイル 19 20 if(empty($namae)==false&&empty($name)==false){//もし$namaeと$nameが空っぽじゃなかったら 21 $ret_array=file($filename);//テキストファイルを読み込み 22 $d=$ret_array === false ? 1 : count($ret_array)+1;//●●の要素の数を数える 23 $a=$d."<>".$namae."<>".$name."<>".$date;//投稿番号、名前、コメント、日付 24 $fp=fopen($filename,'a+');//読み込みと追加書き込みをする 25 fwrite($fp,$a.PHP_EOL);//書き込み処理 26 fclose($fp); 27 } 28 29 if(empty($sakuzyo)==false){//空っぽじゃなかったら 30 $kakikomi=fopen($filename,'w');//上書き書き込みする 31 for($i=0; $i<count($ret_array);$i++){//ループ処理 32 if($i==$sakuzyo){//削除番号と投稿番号一致したら 33 continue;//スキップ 34 } 35 fwrite($kakikomi,$ret_array[$i].PHP_EOL);//書き込み処理 36 } 37 fclose($kakikomi); 38 } 39 $ret_array=file($filename);//テキストファイルを読み込み 40 for($i=0; $i<count($ret_array);$i++){//ループ処理 41 $ex=explode("<>",$ret_array[$i]);//投稿番号取得、それを読み込んだファイル 42 echo $ex[0].$ex[1].$ex[2].$ex[3]."<br>";//分解して投稿番号を取得、表示 43 } 44?> 45 46 47</body> 48</html> 49

コードは今このような状態です。全体の目標は投稿(投稿番号付き)で削除機能をつけて、その番号を一致したものを削除するという機能をつけることです。
削除の考えは一回ファイルを空っぽにし投稿番号と削除番号が一致させそれ以外の投稿をもう一度書き込む、という形を目指しています。
現状が全体図をかけたと思っているのですが投稿が名前とコメントを入力して送信を押しても表示されない状態です。なので削除機能も試せない状態になっています、よかったら改善点を教えてください。

気になる質問をクリップする

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

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

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

退会済みユーザー

退会済みユーザー

2018/11/28 05:56

nameとnamaeって、タイプミスしたら大変な目に遭いそうなので、命名ルールしっかり
m.ts10806

2018/11/28 06:04

毎回空っぽにするということはデータ量が増えればそれだけメモリ圧迫してどんどん処理が遅くなりますがその辺りは大丈夫でしょうか。
guest

回答1

0

ベストアンサー

ちょこちょこ間違ってるところがありますので動くように場合分けしました
(ループ内でデータ表示してないのでデータが出ないなどなど)

※idをデータ行数から算出してますが削除したときにおかしくなるはずなのでそこらへんは削除機能組み込むときに考えてね

php

1<html> 2<head> 3<meta charset="utf-8"> 4 <title>○○</title> 5 </head> 6 <body> 7 <form method="POST" action="bbs.php"> 8 <input type="text" name="namae" value="名前"><br> 9 <input type="text" name="name" value="コメント"><br> 10 <input type="text" name="sakuzyo" value="削除対象番号"><br> 11 <input type="submit" value="送信"> 12 13 </form> 14 <?php 15 $name=$_POST["name"];//コメントフォーム 16 $namae=$_POST["namae"];//名前フォーム 17 $sakuzyo=$_POST["sakuzyo"];//削除フォーム 18 $date=date('Y年m月d日 H時i分');//日付 19 $filename="bbs.txt";//テキストファイル 20 21 // ======================================================================== 22 // データ追加を行うところ 23 // ======================================================================== 24 if(empty($namae)==false&&empty($name)==false){//もし$namaeと$nameが空っぽじゃなかったら 25 $ret_array=file($filename);//テキストファイルを読み込み 26 $d=$ret_array === false ? 1 : count($ret_array)+1;//●●の要素の数を数える 27 $a=$d."<>".$namae."<>".$name."<>".$date;//投稿番号、名前、コメント、日付 28 $fp=fopen($filename,'a+');//読み込みと追加書き込みをする 29 fwrite($fp,$a.PHP_EOL);//書き込み処理 30 fclose($fp); 31 } 32 33 // ======================================================================== 34 // 削除を行うところ 35 // ======================================================================== 36 if(empty($sakuzyo)==false){//空っぽじゃなかったら 37 $kakikomi=fopen($filename,'w');//上書き書き込みする 38 for($i=0; $i<count($ret_array);$i++){//ループ処理 39 if($i==$sakuzyo){//削除番号と投稿番号一致したら 40 continue;//スキップ 41 } 42 fwrite($kakikomi,$ret_array[$i].PHP_EOL);//書き込み処理 43 } 44 fclose($kakikomi); 45 } 46 47 // ======================================================================== 48 // 表示を行うところ 49 // ======================================================================== 50 $ret_array=file($filename);//テキストファイルを読み込み 51 for($i=0; $i<count($ret_array);$i++){//ループ処理 52 $ex=explode("<>",$ret_array[$i]);//投稿番号取得、それを読み込んだファイル 53 echo $ex[0].$ex[1].$ex[2].$ex[3]."<br>";//分解して投稿番号を取得、表示 54 } 55?> 56 57 58</body> 59</html>

投稿2018/11/28 05:34

rururu3

総合スコア5545

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

kaity

2018/11/28 05:54

すみませんidとはどういうことでしょうか・・・
rururu3

2018/11/28 06:11

投稿番号です
kaity

2018/11/28 06:28

ありがとうございます!後、$d=$ret_array === false ? 1 : count($ret_array)+1;はどういう仕組み、意味なのかわからないので教えていただけませんか。
rururu3

2018/11/28 06:35

http://php.net/manual/ja/function.file.php $ret_array=file($filename);//テキストファイルを読み込み ここの部分、ファイルなかったりした場合はfalseを返すのでそれを考慮して falseだったら1、それ以外ならデータ行数+1にするっていうことです。 ※count(false)は1になるのでファイルがなかったとき2から始まってしまう対策です
kaity

2018/11/28 06:48

とてもわかりましたありがとうございます! 修正したのですがまだ名前とコメントを打っても表示されないのは何故なのでしょうか・・
kaity

2018/11/28 06:55

コード編集させていただきました。
rururu3

2018/11/28 07:01

ソース見ましたがこれでは出ないですよね。 $ret_array=file($filename);//テキストファイルを読み込み この処理をファイルに書き込むときしかしてないですが、なぜでしょう・・・
kaity

2018/11/28 07:07

先ほど表示の部分に $ret_array=file($filename);//テキストファイルを読み込み も入れたのですが変わらなかったので消してしまいました・・追加して見たのですがまだ表示できないです。
rururu3

2018/11/28 07:20

ちゃんと調べたらエラー出てますよね ・全角スペースがある ・$d定義してないのに使おうとしてる ・削除用フィールドに削除対象番号って入ってる関係で削除処理に行ってるがそこでデータがおかしくなる を修正してください
rururu3

2018/11/28 07:28

一応ですが、削除処理に関してはこれからためすと記載されてますので動くようにはしてませんのでご了承ください。
kaity

2018/11/28 08:48

すみません全角スペース $d 削除対象番号の部分をplaceholderにすることで修正しました。ありがとうございます! 削除処理について見て見たいと思います。
kaity

2018/11/28 09:53

削除機能も無事つけることができました、本当にありがとうございました!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.50%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問