以下の2か所でエラーが出ており、調べてもわからなかったのでご教示ください。
<?php
省略
$strHTML = '<!DOCTYPE html>
<html>
省略
$(document).ready(function() {$('.demo').tbodyScroll({thead_height: '30px',tbody_height: '100px',head_bgcolor: 'transparent',foot_bgcolor: 'transparent'}); });
省略
</html> ';
$output = array (
'total_page' => ceil($datanum / $page_disp_kensu),
'text' => ($strHTML)
);
echo json_encode($output);
?>
①$(document).ready(function() {$('.demo').tbodyScroll({thead_height: '30px',tbody_height: '100px',head_bgcolor: 'transparent',foot_bgcolor: 'transparent'}); });でsyntax error, unexpected '(', expecting T_VARIABLE or '$'というエラーが出ます。
②一番下の</html> ';でsyntax error, unexpected '<'というエラーが出ます。
「追記」
最新のソースです。現状は
$strHTML = <<<'eof'<table id="tbl_list" cellspacing="0" cellpadding="0">
の箇所で以下のエラーが出ています。
以下のコードそのままでエラーが出ますが、どこに問題があるのでしょうか?
「syntax error, unexpected T_SL」
$strHTML = <<<'eof'
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<meta name="description" content="テスト">
<title>tbodyScroll - jQueryプラグイン</title>
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.4.3/jquery.min.js"></script>
<script src="jquery.tbodyscroll.js"></script>
<script>
$(document).ready(function() {
$(".demo").tbodyScroll({thead_height:"30px",tbody_height:"100px",head_bgcolor: "transparent",foot_bgcolor: "transparent"});
});
</script>
<style>
th,td {width: 180px;}
</style>
</head>
eof;
//ヘッダー部
$strHTML = <<<'eof'<table id="tbl_list" cellspacing="0" cellpadding="0">
<thead>
<tr>
<th scope="col" class="f-weight">備品<br>タイプ</th>
<th scope="col" class="f-weight"><a href="#" id="sort" name="keisokuki" param="'._hs($sort_keisokuki_img).'">備品名</a></th>
</tr>
</thead>
eof;
$strHTML .= <<<'eof'<tbody >
eof;
if ($datanum > 0) {
while ($CN->EOF() == true) {
$strHTML .= <<<'eof'<tr ".$bgcolor.">
<td class='break'>"._hs($CN->GetFieldData('mes_type'))."</td>
<td class='break'>"._hs($CN->GetFieldData('mes_name'))."</td>
</tr>
eof;
$CN->MoveNext();
}
} else {
$strHTML .= <<<'eof'<tr><td colspan='28'>該当するデータがありません。</td></tr>
eof;
}
$CN->DBClose();
$strHTML .= <<<'eof'
</tbody>
</table>
</html>
eof;
$output = array (
'total_page' => ceil($datanum / $page_disp_kensu),
'text' => ($strHTML)
);
echo json_encode($output);
?>
-
気になる質問をクリップする
クリップした質問は、後からいつでもマイページで確認できます。
またクリップした質問に回答があった際、通知やメールを受け取ることができます。
クリップを取り消します
-
良い質問の評価を上げる
以下のような質問は評価を上げましょう
- 質問内容が明確
- 自分も答えを知りたい
- 質問者以外のユーザにも役立つ
評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。
質問の評価を上げたことを取り消します
-
評価を下げられる数の上限に達しました
評価を下げることができません
- 1日5回まで評価を下げられます
- 1日に1ユーザに対して2回まで評価を下げられます
質問の評価を下げる
teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。
- プログラミングに関係のない質問
- やってほしいことだけを記載した丸投げの質問
- 問題・課題が含まれていない質問
- 意図的に内容が抹消された質問
- 過去に投稿した質問と同じ内容の質問
- 広告と受け取られるような投稿
評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。
質問の評価を下げたことを取り消します
この機能は開放されていません
評価を下げる条件を満たしてません
質問の評価を下げる機能の利用条件
この機能を利用するためには、以下の事項を行う必要があります。
- 質問回答など一定の行動
-
メールアドレスの認証
メールアドレスの認証
-
質問評価に関するヘルプページの閲覧
質問評価に関するヘルプページの閲覧
checkベストアンサー
+2
以前の質問からエラー解消のために奮闘されているものと思われますが、
その時に指摘したコメン部分そのままと思います。
mts10806
2018/03/07 16:38 編集
切れているのは切れているのは
$strHTML = ' で始まっているけど、閉じの ' がないところ。
それでも上の部分ではsyntax error出てると思いますよ。
' で変数を代入しているのに中に 'があります。中で使いたい場合はエスケープされた方が良いでしょう。
$hogehoge = 'aaa\'bbb';
おそらく同じ観点でエラーを解消できるはずです。
変数に代入する際に ' で囲っているか、 " で囲っているか。
囲っているクォートを中のHTMLやjavascriptなどの文字列で使っていないか。
特に上のほうはシングルクォートで囲いながら中でjavascriptの記述でシングルクォートを使っていますね。
$strHTML = '<!DOCTYPE html>
~~
$('.demo').tbodyScroll({ ←ここ。
あとは、終了部分(;の前)は同じクォートになっているかあたりを確認してみてください。
変数代入時にシングルクォーテーション''で囲っているのに、中でシングルクォートを利用しているからです。
中で「文字列」としてシングルクォーテーションを利用したければエスケープする必要があります。
$strHTML = 'aaa\'bbb';
echo $strHTML; // aaa\bbb
沢山あるので全てにシングルクォーテーションを手動でつけようと思うと
漏れが発生して中々進まなくなってしまうので、エスケープを入れるのではなく、ヒアドキュメントの利用もご検討ください。
※その場合、中でPHPの変数を使いたい場合は{$hogehoge}とする必要があるのでご注意ください。
以前もすすめましたが、コードのエラーチェックも自動で行ってくれるテキストエディタを使用するように強くすすめます。
例えばEclipse上で確認すれば、画面を見る前に分かります。
修正コード 2018/03/12 13:35
最新ソースの問題がある箇所をざっくり修正しました。
これでエラーはなくなりそうですが、想定通りに出るかどうかはまた別問題です。
自身で調整してください。
修正した箇所:
- nowdocに統一するため、変数に別で入れていたところを全て削除。nowdoc内に格納。
- javascript部分にあったダブルクォーテーション(")に対するエスケープを全て削除
→nowdocでは必要ないため - <table>タグの開始がないので追加
- </html>eof;となっていたので、改行し
</html>
eof;
とした。
→yambejpさんが貼ってくれているPHPドキュメントの「ヒアドキュメントの項」にありますが、
非常に重要なことですが、終端 ID がある行には、セミコロン (;) 以外の他の文字が含まれていてはならないことに注意しましょう。
閉じの部分には;以外含まれてはいけません(エラーはそのせいで起きています。ヒアドキュメントが正常に閉じられていない)
修正コードは下記です。
~~~冒頭部分は関係ないので省略しています~~~
$strHTML = <<<'eof'
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<meta name="description" content="テスト">
<title>tbodyScroll - jQueryプラグイン</title>
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.4.3/jquery.min.js"></script>
<script src="jquery.tbodyscroll.js"></script>
<script>
$(document).ready(function() {
$(".demo").tbodyScroll(
{
thead_height:"30px",
tbody_height:"100px",
head_bgcolor: "transparent",
foot_bgcolor: "transparent"
}
);
});
</script>
<style>
th,td {width: 180px;}
</style>
</head>
<table>
<tbody >
</tbody>
</table>
</html>
eof;
$output = array (
'total_page' => ceil($datanum / $page_disp_kensu),
'text' => ($strHTML)
);
echo json_encode($output);
?>
投稿
-
回答の評価を上げる
以下のような回答は評価を上げましょう
- 正しい回答
- わかりやすい回答
- ためになる回答
評価が高い回答ほどページの上位に表示されます。
-
回答の評価を下げる
下記のような回答は推奨されていません。
- 間違っている回答
- 質問の回答になっていない投稿
- スパムや攻撃的な表現を用いた投稿
評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。
+2
それはシングルクォートが競合しています
この手の処理はnowdocでやると良いでしょう
$strHTML =<<<'eof'
<!DOCTYPE html>
<html>
省略
$(document).ready(function() {$('.demo').tbodyScroll({thead_height: '30px',tbody_height: '100px',head_bgcolor: 'transparent',foot_bgcolor: 'transparent'}); });
省略
</html>
eof;
print $strHTML;
※jQueryが「$」をベースに処理をするため
ヒアドキュメントでやると変数を展開しようとしておかしくなります。
追記
nowdocで処理する限り特に問題なさそうです
<?PHP
$strHTML =<<<'eof'
<!DOCTYPE html>
<html>
省略
$(document).ready(function() {$('.demo').tbodyScroll({thead_height: '30px',tbody_height: '100px',head_bgcolor: 'transparent',foot_bgcolor: 'transparent'}); });
省略
</html>
eof;
$output = array (
'total_page' => '省略',
'text' => $strHTML
);
print_r($output);
?>
投稿
-
回答の評価を上げる
以下のような回答は評価を上げましょう
- 正しい回答
- わかりやすい回答
- ためになる回答
評価が高い回答ほどページの上位に表示されます。
-
回答の評価を下げる
下記のような回答は推奨されていません。
- 間違っている回答
- 質問の回答になっていない投稿
- スパムや攻撃的な表現を用いた投稿
評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。
+1
なんの言語か知りませんが、シングルクォーテーションで囲まれた文字列の中でシングルクォーテーションを使っているからでしょう。
投稿
-
回答の評価を上げる
以下のような回答は評価を上げましょう
- 正しい回答
- わかりやすい回答
- ためになる回答
評価が高い回答ほどページの上位に表示されます。
-
回答の評価を下げる
下記のような回答は推奨されていません。
- 間違っている回答
- 質問の回答になっていない投稿
- スパムや攻撃的な表現を用いた投稿
評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。
+1
$strHTMLに代入する際にシングルクオートでHTMLをくくっていますね。
なのに、その中でシングルクオートを使ってしまうと、誤作動が起きてしまいます。なので、シングルクオートでくくる場合には、中身のシングルクオートはエスケープ処理をしてください。
$strHTML = '<!DOCTYPE html>
<html>
省略
$(document).ready(function() {$(\'.demo\').tbodyScroll({thead_height: \'30px\',tbody_height: \'100px\',head_bgcolor: \'transparent\',foot_bgcolor: \'transparent\'}); });
省略
</html>';
あと、言語はたぶんPHP?JS?か何かだと思いますが、シングルクオートを用いて複数行にする場合には
$strHTML = '<!DOCTYPE html>'.
'<html> '.
'$(document).ready(function() {$(\'.demo\').tbodyScroll({thead_height: \'30px\',tbody_height: \'100px\',head_bgcolor: \'transparent\',foot_bgcolor: \'transparent\'}); });'.
'</html>';
のような感じでドット(.)で連結させることができるので使ってみてください。
投稿
-
回答の評価を上げる
以下のような回答は評価を上げましょう
- 正しい回答
- わかりやすい回答
- ためになる回答
評価が高い回答ほどページの上位に表示されます。
-
回答の評価を下げる
下記のような回答は推奨されていません。
- 間違っている回答
- 質問の回答になっていない投稿
- スパムや攻撃的な表現を用いた投稿
評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。
15分調べてもわからないことは、teratailで質問しよう!
- ただいまの回答率 88.19%
- 質問をまとめることで、思考を整理して素早く解決
- テンプレート機能で、簡単に質問をまとめられる
質問への追記・修正、ベストアンサー選択の依頼
kei344
2018/03/12 10:51
PHPではありませんか?少なくともサーバサイド言語を使用されているようなので、質問タグにそれを追加してください。