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

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

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

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

PHP

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

Q&A

解決済

1回答

745閲覧

最後の行のエラーの解決策が分かりません。

fuiwara

総合スコア1

HTML5

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

PHP

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

0グッド

0クリップ

投稿2023/02/01 22:47

実現したいこと

最後のエラーを無くす

前提

Parse error: syntax error, unexpected end of file in /public_html/a.php on line 153

該当のソースコード

php

1<!DOCTYPE html> 2<html> 3<head> 4 <meta charaset="UTF-8"> 5</head> 6<body> 7 8 <?php 9 $filename = "mission_3-5.txt"; 10 11 //投稿機能 12 13 //フォーム内が空でない場合に以下を実行する 14 if (!empty($_POST['name']) && !empty($_POST['comment'])) { 15 16 //入力データの受け取りを変数に代入 17 $name = $_POST['name']; 18 $comment = $_POST['comment']; 19 $pass=$_POST['pass']; 20 21 22 //日付データを取得して変数に代入 23 $postedAt = date("Y年m月d日 H:i:s"); 24 25 //編集フォームに入力がない場合は新規投稿、ある場合は編集 ここで判断 26 if (empty($_POST['editNO'])) { 27 // 以下、新規投稿機能 28 //ファイルの存在がある場合は投稿番号+1、なかったら1を指定する 29 if (file_exists($filename)) { 30 $num = count(file($filename)) + 1; 31 } else { 32 $num = 1; 33 } 34 35 //書き込む文字列を組み合わせた変数 36 $newdata = $num . "<>" . $name . "<>" . $comment . "<>" . $postedAt."<>" .$pass."<>"."\n"; 37 38 39 40 41 //ファイルを追記保存モードでオープンする 42 $fp = fopen($filename, "a"); 43 44 //入力データのファイル書き込み 45 fwrite($fp, $newdata ); 46 fclose($fp); 47 } 48 49} 50 51 //編集選択 52 53 //編集フォームの送信の有無で処理を分岐 54 if(!empty($_POST['editNO'])){ //もし、編集フォームに入力されたら 55 56 57 // 以下編集機能 58 //入力データの受け取りを変数に代入 59 $editNO = $_POST['editNO']; 60 $editpass=$_POST['editpass']; 61 62 63 //読み込んだファイルの中身を配列に格納する 64 $ret_array = file($filename); 65 foreach ($ret_array as $line) {//配列の数だけループさせる 66 67 $data = explode("<>", $line); //explode関数でそれぞれの値を取得 68 if ($data[0] == $editNO && $data[4] == $editpass){ 69 70 //ファイルを書き込みモードでオープン+中身を空に 71 $fp = fopen($filename, "w"); 72 73 //編集のフォームから送信された値と差し替えて上書き 74 fwrite($fp, $editNO . "<>" . $name . "<>" . $comment . "<>" . $postedAt ); 75 } else { 76 //一致しなかったところはそのまま書き込む 77 fwrite($fp, $line); 78 } 79 } 80 fclose($fp); 81 } 82 83 84 85 //編集フォームの送信の有無で処理を分岐 86 if (!empty($_POST['editID'])) { 87 88 //入力データの受け取りを変数に代入 89 $ID = $_POST['editID']; 90 91 //読み込んだファイルの中身を配列に格納する 92 $editCon = file($filename); 93 94 //配列の数だけループさせる 95 foreach ($editCon as $line) { 96 97 //explode関数でそれぞれの値を取得 98 $editdata = explode("<>",$line); 99 100 //投稿番号と編集対象番号が一致したらその投稿の「名前」と「コメント」を取得 101 if ($editID == $editdata[0] && $editpass == $editdata[4]) { 102 103 //投稿のそれぞれの値を取得し変数に代入 104 $editnumber = $editdata[0]; 105 $editname = $editdata[1]; 106 $editcomment = $editdata[2]; 107 108 //既存の投稿フォームに、上記で取得した「名前」と「コメント」の内容が既に入っている状態で表示させる 109 //formのvalue属性で対応 110 } 111 } 112 ?> 113 114 115 116 <form action="mission_3-5.php" method="post"> 117 <input type="text" name="name" placeholder="名前"><br> 118 <input type="text" name="comment" placeholder="コメント"><br> 119 <input type="text" name="editNO" value="<?php if(isset($edit)) {echo $editnumber;} ?>"> 120 <input type="text" name="pass" placeholder="パスワード" > 121 <input type="submit" name="submit" value="送信"> 122 </form> 123 124 <form action="mission_3-5.php" method="post"> 125 <input type="text" name="dnum" placeholder="削除対象番号" ></br> 126 <input type="text" name="delpass" placeholder="パスワード" > 127 <input type="submit" name="delete" value="削除"> 128 </form> 129 130 <form action="mission_3-5.php" method="post"> 131 <input type="text" name="edit" placeholder="編集対象番号"></br> 132 <input type="text" name="editpass" placeholder="パスワード"> 133 <input type="submit"name="send_edit" value="編集"> 134 </form> 135 136 <?php 137 $filename="mission_3-5.txt"; 138 $texts_export=file($filename); 139 foreach((array)$texts_export as $text_export){ 140 141 $keys_export=explode("<>",$text_export); 142 $keys_export_num=count($keys_export); 143 foreach($keys_export as $key_export=>$val_export){ 144 if($key_export!==$keys_export_num-2){ 145 echo $val_export." "; 146 } 147 } 148 echo "<br>"; 149 } 150 151 ?> 152</body> 153</html>

試したこと

補足情報(FW/ツールのバージョンなど)

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

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

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

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

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

guest

回答1

0

ベストアンサー

Parse error: syntax error, unexpected end of file

こういうエラーは、何かが閉じていないときに起きがちです。

php

1 //編集フォームの送信の有無で処理を分岐 2 if (!empty($_POST['editID'])) {

これに対応する } がないように見えます。

投稿2023/02/01 22:53

int32_t

総合スコア20882

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

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

fuiwara

2023/02/01 23:32

実行するとfile not foundが出たんですけど、これの原因分かりますか。
int32_t

2023/02/01 23:34

> 実行するとfile not found 別の問題なので、別の質問を立てて聞くべきです。
y_waiwai

2023/02/02 00:55

エラーメッセージを読んで、その意味を考えようよ。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問