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

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

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

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

PHP

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

HTML

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

Q&A

解決済

1回答

837閲覧

Parse error: syntax error, unexpected 'else' (T_ELSE) in・・・が出て困ってます

saitou_san

総合スコア32

HTML5

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

PHP

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

HTML

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

0グッド

0クリップ

投稿2022/11/02 02:12

編集2022/11/02 03:04

前提

PHPで書いているのですが、ブラウザに読み込んだ時に以下のようなエラーメッセージが出て困っています。
自分で調べてみて、if文がちゃんと閉じられているかをチェックしたりしたのですがうまく動きませんでした。

実現したいこと

・foreachで判定して、表のチェックボタンの属性を’checked'にしたい

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

Parse error: syntax error, unexpected 'else' (T_ELSE) in ~ on line 640("//messageがある場合の処理"の上にある"}else{"の行)

該当のソースコード

一部を抜粋しました

php

1if ($this->action == "confirm"){ 2//省略 3 if(empty($this->message)){ 4 $this->title = '外泊願-確認画面'; 5 6 //欠食届表示 7 $gaihaku = $this->form->getValue(); 8 if($gaihaku['dest']['reason'] == '帰省'){ 9 $this->value = '帰省'; 10 }else if($gaihaku['dest']['reason'] == 'その他'){ 11 $this->value = $gaihaku['riyuu']; 12 } 13 14 $this->message2 = '<input type="checkbox" name="kessyoku" value="TRUE" checked>この欠食届を提出する'; 15 $three_days_ago = date("Y-m-d",strtotime("+3 day")); 16 //最終日が三日後以降か? 17 if(strtotime($_POST['f_day'])>strtotime($three_days_ago)){ 18 $days = $this->meanwhile($_POST['s_day'],$_POST['f_day']); 19 20 //欠食届の左端を準備 21 $this->table = <<<EOT 22 <td> 23 <table border="2" style="border-collapse: collapse" width="126" height="22" align="left"> 24 <tr><td>  </td><tr> 25 <tr><td>朝食</td></tr> 26 <tr><td>昼食</td></tr> 27 <tr><td>夕食</td></tr> 28 </table> 29 </td> 30 EOT; 31 $this->i=0; 32 $now = time(); 33 $thirteen = mktime(13,0,0,date("m"),date("d"),date("Y")); 34 foreach($days as $day){ 35 //$dayが三日後以降か? 36 if(strtotime($day)>=strtotime($three_days_ago)){ 37 $datetime = new DateTime($day); 38 $week = array("日", "月", "火", "水", "木", "金", "土"); 39 $w = (int)$datetime->format('w'); 40 $app_day = sprintf("%s月%s日(%s)",substr($day,5,2),substr($day,8,2),$week[$w]); 41 $this->table .= <<<EOT 42 <td> 43 <table border="2" style="border-collapse: collapse" width="126" height="22" align="left"> 44 <tr><td>{$app_day}</td><tr> 45 <tr><td><input type="checkbox" name="{$this->i}check[]" value="bre"%s></td></tr> 46 <tr><td><input type="checkbox" name="{$this->i}check[]" value="lun"%s></td></tr> 47 <tr><td><input type="checkbox" name="{$this->i}check[]" value="din"%s></td></tr> 48 </table> 49 <input type="hidden" name="{$this->i}date" value="{$day}"> 50 %s 51 </td> 52EOT; 53 54 if($day==$_POST['s_day']){ 55 $this->table = sprintf($this->table, 56 ($this->s_time>=9) ? '' : ' checked', 57 ($this->s_time>=14) ? '' : ' checked', 58 ($this->s_time>=20) ? '' : ' checked', 59 '' 60 ); 61 }else if($day==$_POST['f_day']){ 62 $this->table = sprintf($this->table, 63 ($this->f_time>=9) ? ' checked' : '', 64 ($this->f_time>=14) ? ' checked' : '', 65 ($this->f_time>=20) ? ' checked' : '', 66 "<input type='hidden' name='i' value={$this->i}>" 67 ); 68 }else{ 69 $this->table = sprintf($this->table, 70 ' checked',' checked',' checked','' 71 ); 72 } 73 $this->i++; 74 } 75 76 }//foreach終了 77 78 }else{ 79 $this->message2 = '欠食届は提出できません。'; 80 } 81 82 //通常処理 83 $this->title = '外泊願-確認画面'; 84 $this->next_type = 'gaihaku'; 85 $this->next_action = 'complete'; 86 $this->form->toggleFrozen(true); 87 $btn = '提出する'; 88 $btn2 = '戻る'; 89 90 }else{ 91 //messageがある場合の処理 92 $this->title = '外泊願-作成画面'; 93 $this->next_type = 'gaihaku'; 94 $this->next_action = 'confirm'; 95 $this->caution1 = '外泊願テンプレート呼び出し'; 96 $btn = '確認画面へ'; 97 } 98 $this->s_day = $_POST['s_day']; 99 $this->f_day = $_POST['f_day']; 100 }

試したこと

自分で調べてみて、if文がちゃんと閉じられているかをチェックしたりした

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

xamppが動かなくなったので、ソースコードのバックアップを取って再インストールをした後にこの異常は起こりました。

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

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

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

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

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

int32_t

2022/11/02 03:17

PHPのバージョンはいくつでしょうか。
guest

回答1

0

ベストアンサー

コードが一部のようなのでどうかということはあるのですが、この手のものは間を全部抜いてみると分かりやすいです。

PHP

1 if(empty($this->message)){ 2 if($gaihaku['dest']['reason'] == '帰省'){ 3 }else if($gaihaku['dest']['reason'] == 'その他'){ 4 } 5 6 if(strtotime($_POST['f_day'])>strtotime($three_days_ago)){ 7 foreach($days as $day){ 8 if(strtotime($day)>=strtotime($three_days_ago)){ 9 10 if($day==$_POST['s_day']){ 11 }else if($day==$_POST['f_day']){ 12 }else{ 13 } 14 } 15 16 }//foreach終了 17 18 }else{ 19 } 20 }else{ 21 } 22 }

最後の}に対応する「開始」の{がないです

xamppが動かなくなったので、ソースコードのバックアップを取って再インストールをした後にこの異常は起こりました。

コードが同じでデータが同じでPHPのバージョンが同じであれば、再インストールで動かなくなることはなく、
出てる現象が構文エラーのようなので、コードが同じではないものと思われます。

投稿2022/11/02 02:52

編集2022/11/02 02:54
m.ts10806

総合スコア80850

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

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

saitou_san

2022/11/02 03:03

すみません。質問文の誤りで、上のほうに始まりの{があるのをちゃんと示せていませんでした。
saitou_san

2022/11/02 04:26

xamppのバージョンが間違っていました。ゴミ箱に入っている過去のインストーラーを使い再インストールをしたら問題なく動作しました。 なぜ、xamppを再インストールしなけらばならなくなったかというと、前に自分が興味本位でノートPCのバッテリーを取ったからです。あれをするとxamppのMySQLがうまく動かなくなります。
m.ts10806

2022/11/02 06:16

影響するとしたらXAMPPではなくPHPのバージョンです。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問