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

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

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

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

解決済

簡要掲示板の消去機能

hellommm
hellommm

総合スコア49

PHP

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

2回答

0評価

1クリップ

1864閲覧

投稿2018/03/02 06:38

編集2018/03/02 06:50

簡要掲示板を作るという自分への課題をしております。
HMTLフォームから名前、コメントを入力しテキストファイルに
番号<>名前<>コメント<>日時を保存し、HTMLフォームの下に表示するというものを
作っております。

できないこと
消去機能を追加しようとしているのですが、うまくいきません。
このソースを実行すると下記のようにエラーがでて、調べると文字列ではなく配列が入力されている
とかでファイルに書き込むことができません。
{Warning: file_put_contents() expects parameter 1 to be string, resource given in /home/co-981.99sv-coco.com/public_html/Kadai2/Kadai2_15.php on line 50}

php

//htmlファイル <?php header('Content-Type: text/html; charset=UTF-8'); require_once('Kadai2_15.php'); ?> <html> <head> <meta charset="utf-8"/> <title>sample</title> </head> <body> <form method="post" action="<?php echo($_SERVER['PHP_SELF']) ?>"> <p>名前:</p> <input type="text" name="name" placeholder="山田太郎" required="required"> <p>コメント:</p> <textarea type="text" name="com" maxlength="20" required></textarea> <!-- <input type="hidden" name="token" value="<?=h(sha1(session_id())) ?>"> --> <input type="submit" name="mode" value="add"> </form> <form action="<?php echo($_SERVER['PHP_SELF']) ?>" method="POST"> <p>削除対象番号:</p> <input type="text" name="deleteNo"> <input type="submit" name="delete" value="削除"> <input type="hidden" name="mode" value="delete"> </form> <p> <p> 掲示板: </p> <?php foreach ((array)$text_rows as $text_row) {//配列でcount<>name<>comment<>data表示 if($text_row === ""){ continue; } $ret = explode("<>", $text_row); echo h($ret[0])."番 "; echo h($ret[1])." さん "; echo h($ret[2])." "; echo h($ret[3]); echo "<br>"; } ?> </p> </body> </html>

php

//php <?php header('Content-Type: text/html; charset=UTF-8'); ?> <html> <head> <meta charset="utf-8"/> <title>sample</title> </head> <body> <?php function h($str) { return htmlspecialchars($str, ENT_QUOTES, 'UTF-8'); } //session_start(); // 1 $name = (string)filter_input(INPUT_POST, 'name'); //名前フォーム値 文字列にキャスト $comment = (string)filter_input(INPUT_POST, 'com');//コメントフォーム値 フィルタリングする //$token = (string)filter_input(INPUT_POST, 'token'); // トークンセッション switch($_POST["mode"]){ case "add"://投稿追加処理 $fp = fopen('Kadai2_15.txt', 'a+'); if ($_SERVER['REQUEST_METHOD'] === 'POST'/* && sha1(session_id()) === $token */) { // postが送られて来てるか?CSRF対策 flock($fp, LOCK_SH); $text_rows = file("Kadai2_15.txt"); $count = count($text_rows);//行数をカウント $add_text = ($count + 1)."<>".$name."<>".trim($comment)."<>".date('H時i分');//追加したい文章 array_unshift($text_rows, $add_text); flock($fp, LOCK_EX); fwrite($fp, $add_text."\n"); flock($fp, LOCK_UN); fclose($fp); } break; case "delete"://投稿削除処理 if (isset($_POST["delete"])) { $fp = fopen('Kadai2_15.txt', 'a+'); $delete = $_POST["deleteNo"]; flock($fp, LOCK_SH); $delarray = file("Kadai2_15.txt"); for ($j = 0; $j < count($delarray) ; $j++){ $delData = explode("<>", $delarray[$j]); if ($delData[0] == $delete) { array_splice($delarray, $j, 1); flock($fp, LOCK_EX); file_put_contents($fp, implode("\n", $delarray));//問題の箇所 break; } } break; } } ?> </body> </html>

まだまだ未熟者で汚いソースと思いますが、よろしくお願いします。

var_dump($delarray)の出力結果 ↓

array(4) { [0]=> string(54) "1<>アンパンマン<>アンパンラブ<>15時46分 " [1]=> string(54) "2<>ジャムおじさん<>ジャムラブ<>15時47分 " [2]=> string(54) "3<>バタコさん<>バター塗りたい<>15時47分 " [3]=> string(45) "4<>チーズ<>キャンキャン<>15時47分 " }

↓入力結果
イメージ説明

良い質問の評価を上げる

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

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

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

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

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

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

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

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

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

m.ts10806

2018/03/02 06:42

delete時にfile()関数で情報を取得していますが、$delarrayをvar_dump()にかけると何が出力されますか?結果を質問本文に追記してください。
hellommm

2018/03/02 06:46

回答ありがとうございます!承知致しました!!

まだ回答がついていません

会員登録して回答してみよう

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

ただいまの回答率
87.20%

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

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

質問する

関連した質問

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

PHP

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