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

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

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

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

Q&A

解決済

4回答

9335閲覧

PHP Parse error: syntax error, unexpected 'echo' (T_ECHO)の;ないエラー以外のエラー。

MakuraMakura

総合スコア24

PHP

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

0グッド

0クリップ

投稿2017/09/07 07:16

サーバーサイドのphpでのechoエラーについて質問します。

[PHP Parse error: syntax error, unexpected 'echo' (T_ECHO)]
というエラーが出るのですが、このエラーは大体前のコードの;がないという事例が多いらしく、他の場合での対策が見つかりませんでした。

以下のforeach文内の最初のechoで、質問タイトルのエラーが出ます。

$i = 1; $c = count($stmt->fetchAll()); if($c == 0){ echo "<h3>まだ投稿はありません。</h3>"; } foreach ($stmt as $row) { echo "<li> <div> $i . $row['bywho'] : $row['date'] <a href= 'touhou.html' target='_blank'>[通報]</a> </div> "; echo "<div> $row['comment']</div>"; echo "<div style='text-align:right;7> <span id ='likeSu$row['ID'] '> $row['likeKazu'] </span>Like <input type='image' name='like' id='likeButton$row['ID']' src=7heart-nopush.png' alt='好き!ボタン' width=100 height=100 onclick='likePlus(this,',$row['id'],')'></div></li>"; $i++; }//foreach文の終わり

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

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

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

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

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

guest

回答4

0

関係あるかは不明ですが、次の行は明らかに間違いがあります

echo "<div style='text-align:right;7> <span id ='likeSu$row['ID'] '> $row['likeKazu'] </span>Like <input type='image' name='like' id='likeButton$row['ID']' src=7heart-nopush.png' alt='好き!ボタン' width=100 height=100 onclick='likePlus(this,',$row['id'],')'></div></li>";

まず、閉じられていないクォーテーションの修正のため下記のようにしてください

<div style='text-align:right;7> ↓ <div style='text-align:right;7'>

続いて、下記の部分ではシングルクォーテーションの組み合わせが'likeSu$row['になってしまいます。

<span id ='likeSu$row['ID'] '>

この部分では文字列連結を使い

<span id ='likeSu$row['ID'] '> ↓ ・・・<span id ='likeSu" . $row['ID'] . "'>・・・・

としてみてください
これを行って、まだ治らない場合は再度調べてみます

投稿2017/09/07 07:27

kutu

総合スコア257

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

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

MakuraMakura

2017/09/07 07:40

早速の回答ありがとうございます。 そうなんですね!無知でお恥ずかしいです。為になります。 ありがとうございます。 /* echo "<li> <div> $i . ${row['bywho']} : ${row['date']} <a href= 'touhou.html' target='_blank'>[通報]</a> </div> "; echo "<div> ${row['comment']}</div>"; echo "<div style='text-align:right;'> <span id ='likeSu". $row['ID'] . " '> ${row['likeKazu']} </span>Like <input type='image' name='like' id='likeButton".$row['ID']. "' src='heart-nopush.png' alt='好き!ボタン' width=100 height=100 onclick='likePlus(this,".$row['id'],")'></div></li>"; */ ↑上記のように修正しました。 ただエラーは別由来らしくエラーは消えませんでした。
kutu

2017/09/07 07:45

JavaScriptの部分にエラーがありますね。カンマとピリオドを間違っているようです ``` onclick='likePlus(this,".$row['id'],")' ↓ onclick='likePlus(this,".$row['id'].")' ``` としてみましょう
guest

0

ベストアンサー

php

1<?php 2 3$i = 1; 4 5$c = count($stmt->fetchAll()); 6 7if ($c == 0) { 8 echo "<h3>まだ投稿はありません。</h3>"; 9} 10foreach ($stmt as $row) { 11 12 echo "<li> <div>{$i}{$row['bywho']}:{$row['date']}<a href= 'touhou.html' target='_blank'>[通報]</a> </div> "; 13 echo "<div> {$row['comment']}</div>"; 14 echo "<div style='text-align:right;7> <span id ='likeSu{$row['ID']} '> {$row['likeKazu']} </span>Like <input type='image' name='like' id='likeButton{$row['ID']}' src=7heart-nopush.png' alt='好き!ボタン' width=100 height=100 onclick='likePlus(this,',{$row['id']},')'></div></li>"; 15 16 17 $i++; 18}//foreach文の終わり

投稿2017/09/07 07:31

退会済みユーザー

退会済みユーザー

総合スコア0

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

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

MakuraMakura

2017/09/07 07:44

エラーなくなりました。あっという間の解決ありがとうございました。 te2jiさんやkutuさんのご指摘の通り、変数や配列の出力の無知でした。 kousuke様はじめ皆さんありがとうございました!
guest

0

対象の箇所とその後の 2 行でエラーが出ます。
変数のパースが理解できていないので、マニュアルを確認してください。

どのように出力したいのか、出力のイメージが共有できれば、もう少し具体的な回答が書けると思います。

投稿2017/09/07 07:29

退会済みユーザー

退会済みユーザー

総合スコア0

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

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

MakuraMakura

2017/09/07 07:45

ご指摘の通り変数のあたりの無知が原因でした。ありがとうございました!
guest

0

このエラーメッセージからでは少しわかりずらいですね。
PHPではダブルクォートの中の変数は展開されますが、配列はそのままでは書けません。
こんな感じでブレス{}で囲ってあげてください。
$row['bywho'] → ${row['bywho']}

投稿2017/09/07 07:27

mosa

総合スコア218

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

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

MakuraMakura

2017/09/07 07:46

回答ありがとうございました。ご指摘の通り配列も変数も無知でした!助かりました。ありがとうございます。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問