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

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

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

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

HTML

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

Q&A

受付中

ファイルを更新したいが500エラーになってしまう php

Ito_Kazuki_
Ito_Kazuki_

総合スコア124

PHP

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

HTML

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

1回答

0グッド

0クリップ

99閲覧

投稿2023/01/24 08:24

前提

phpでページの内容を更新する仕組みを作っています。
以下のようなテキストファイルをphpで読み込み、ページ上で編集した後、submitすることによってデータの更新をしようとしています。

data.txt

1abc<>abd<>def<>ghi 2abc<>abe<>def<>ghi 3abc<>abc<>def<>ghi<>aaa<>bbb 4abc<>abc<>def<>ghi<>aaa<>bbb 5abc<>abc<>def<>ghi<>aaa<>bbb 6abc<>abc<>def<>ghi<>aaa<>bbb 7abc<>abc<>def<>ghi<>aaa 8abc<>abc<>def<>ghi<>aaa 9abc<>abc<>def<>ghi<>aaa

発生している問題・エラーメッセージ

データを編集して送信しようとすると結構な時間がかかった後に
500 internal surver errorが出ます。

データの更新を完了させるためにどうすべきでしょうか?

該当のソースコード

form.php

1<?php 2$all_data = file(__DIR__ . '/data.txt', FILE_IGNORE_NEW_LINES); 3echo "<table>"; 4for($i=0;$i<36;$i++){ 5 if($i==0||$i==12||$i==24){ 6 echo "<tr><td colspan='4'><hr></td></tr>"; 7 } 8 $data[$i] = explode ("<>", $all_data[$i]); 9 echo "<tr><td><select name='m{$i}0'><option value='1'"; 10 if($data[$i][0]==1){echo "selected";} 11 echo ">表示</option><option value='0'"; 12 if($data[$i][0]==0){echo "selected";} 13 echo ">非表示</option></select></td>"; 14 echo "<td><input type='textarea' name='m{$i}1' value='{$data[$i][1]}'></td>"; 15 echo "<td><input type='textarea' name='m{$i}2' value='{$data[$i][2]}'></td>"; 16 echo "<td><input type='textarea' name='m{$i}3' value='{$data[$i][3]}'></td></tr>"; 17} 18echo "</table>"; 19?> 20<hr><b>**</b><br> 21<style>input.color{background-color:yellow;}</style> 22<? 23echo "<table>"; 24for($i=38;$i<48;$i++){ 25 $data[$i] = explode ("<>", $all_data[$i]); 26 echo "<tr><td><select name='m{$i}0'><option value='1'"; 27 if($data[$i][0]==1){echo "selected";} 28 echo ">表示</option><option value='0'"; 29 if($data[$i][0]==0){echo "selected";} 30 echo ">非表示</option></select></td><td>{$c}</td>"; 31 32 echo "<td><input type='textarea' name='m{$i}1' value='{$data[$i][1]}' placeholder=' '></td>"; 33 echo "<td><input size='5' type='textarea' name='m{$i}2' value='{$data[$i][2]}' placeholder=' '></td>"; 34 echo "<td><input size='5' type='textarea' name='m{$i}3' value='{$data[$i][3]}' placeholder=' '></td>"; 35 echo "<td><input size='8' class='color' type='textarea' name='m{$i}4' value='{$data[$i][4]}' placeholder=' '></td>"; 36 echo "<td><input size='8' class='color' type='textarea' name='m{$i}5' value='{$data[$i][5]}' placeholder=' '></td>"; 37 echo "<td><input size='8' class='color' type='textarea' name='m{$i}6' value='{$data[$i][6]}' placeholder=' '></td>"; 38 echo "<td><input size='8' class='color' type='textarea' name='m{$i}7' value='{$data[$i][7]}' placeholder=' '></td>"; 39 echo "<td><input size='8' type='textarea' name='m{$i}8' value='{$data[$i][8]}' placeholder=' '></td>"; 40 echo "<td><input class='color' type='textarea' name='m{$i}9' value='{$data[$i][9]}' placeholder=' '></td></tr>"; 41} 42?> 43</table><table style='border:1px solid black; border-collapse:collapse;'> 44<? 45echo "<tr><td></td><td>mon</td><td>tue</td><td>wed</td><td>tue</td><td>mon</td></tr>"; 46for($i=48,$time=1;$i<54;$i++,$time++){ 47 $data[$i] = explode ("<>", $all_data[$i]); 48 echo "<tr><td>*{$time}</td>"; 49 echo "<td><input size='1' type='textarea' name='m{$i}0' value='{$data[$i][0]}'></td>"; 50 echo "<td><input size='1' type='textarea' name='m{$i}1' value='{$data[$i][1]}'></td>"; 51 echo "<td><input size='1' type='textarea' name='m{$i}2' value='{$data[$i][2]}'></td>"; 52 echo "<td><input size='1' type='textarea' name='m{$i}3' value='{$data[$i][3]}'></td>"; 53 echo "<td><input size='1' type='textarea' name='m{$i}4' value='{$data[$i][4]}'></td>"; 54 echo "</tr>"; 55} 56echo "</table>"; 57?>

post.php

1<?php 2$filename = './data.txt'; 3$memory = ""; 4for($i=0;$i<54;$i++){ 5 $m[$i]=""; 6 if($i==0 ){$k=4 ;} 7 if($i==36){$k=0 ; $m[$i]="\n";} 8 if($i==37){$k=0 ; $m[$i]="\n";} 9 if($i==38){$k=10;} 10 if($i==48){$k=5 ;} 11 for($j=0;$j<$k;$j++){ 12 $m[$i]=$m[$i].$_POST["m{$i}{$j}"]."<>"; 13 } 14 $m[$i]=$m[$i]."\n"; 15} 16for($i=0;$i<54;$x++){ 17 $memory = $memory.$m[$i]; 18} 19file_put_contents($filename, $memory); 20echo "送信完了<br>正常に保存が完了しました"; 21?>

以下のような質問にはグッドを送りましょう

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

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

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

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

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

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

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

適切な質問に修正を依頼しましょう。

m.ts10806

2023/01/24 08:35

エラーログは確認されましたか? あと、エラーはコピペしましょう、
Ito_Kazuki_

2023/01/24 10:01

ブラウザの500エラーが表示されるだけでエラーログは確認できていません。
AbeTakashi

2023/01/24 11:49

500エラーは様々な要因から発生しますので、第三者がソースコードだけみても分からないことがほとんどです。まずはご自身でApacheなのかNginxなのかは分かりませんが、WEBサーバのエラーログの出力先を見つけてその内容を確認してください(WEBサーバの設定ファイルにエラーログの出力先が設定されていることがほとんどです)。エラーログの内容を見ても原因が分からない場合は、そのエラーログの内容を質問文に追記してください。
m.ts10806

2023/01/24 11:50

確認してください。 エラーログは画面上に出るものではないです。サーバーのログディレクトリにログファイルとして出力されるものです(PHPの設定で画面に出すことも可能) 500の原因は多岐に渡るのでエラー確認して地道に潰すしかありません

回答1

0

なんとなくなんですが。

データを編集して送信しようとすると結構な時間がかかった後に
500 internal surver errorが出ます。

コード全体が、やたらとfor文を使っているので、たぶんどこかで無限ループしてるんだろうなって気がしまして。

post.php

1for($i=0;$i<54;$x++){ 2 $memory = $memory.$m[$i]; 3}

たぶん、ここですね。

PHP

1for($x=0;$x<54;$x++){ 2 $memory = $memory.$m[$x]; 3}

こう書くはずだったのでは?

投稿2023/01/25 08:01

編集2023/01/25 08:03
penguin520

総合スコア289

良いと思った回答にはグッドを送りましょう。
グッドが多くついた回答ほどページの上位に表示されるので、他の人が素晴らしい回答を見つけやすくなります。

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

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

このような回答には修正を依頼しましょう。

回答へのコメント

penguin520

2023/01/25 08:14

$i<54 が判定なのに、$x++ してるから、 いつまでも $i が 0 のまま。 i と x の打ち間違いがあるので、そりゃ無限ループするわなぁってなところです。

まだベストアンサーが選ばれていません

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

アカウントをお持ちの方は

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

ただいまの回答率
86.02%

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

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

質問する

関連した質問

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

PHP

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

HTML

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