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

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

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

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

HTML

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

Q&A

解決済

2回答

1403閲覧

スクロールありの表のスクロールが消えてしまう

hw_test

総合スコア13

PHP

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

HTML

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

0グッド

0クリップ

投稿2018/03/06 01:15

編集2018/03/09 11:30

以下のような表を作成しました。
https://jsfiddle.net/h9ehqw55/

上記では表にスクロールが表示されますが、
IEでhtmlを組むとスクロールが表示されません。
Chromeではスクロールが表示されます。

いろいろ試してみたのですが、
どうやっても上記で作成した表のスクロールがIEでは消えてしまいます。
解決方法ありましたら宜しくお願いします。

「追記」※styleとborderの個所を削除しております。
以下のようにjQueryプラグインを使用しようとしていますが、おかしな点はありますでしょうか?
現状はなぜか、
thead_height: '30px',の箇所や、
$strHTML = '<table id="tbl_list" cellspacing="0" cellpadding="0" >
の箇所でsyntax errorが出力されてしまいます。

$strHTML = '<!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> //ヘッダー部 $strHTML = '<table id="tbl_list" cellspacing="0" cellpadding="0" > <thead> <tr> <th scope="col" class="f-weight" >'.((!empty($lent_ichran)) ? "レンタル":'').'管理番号</th> <th scope="col" class="f-weight" >メーカー名</th> <th scope="col" class="f-weight" >シリアルNo</th> </tr> </thead> '; $strHTML .= "<tbody >"; if ($datanum > 0) { while ($CN->EOF() == true) { //データ部 $strHTML .= "<tr ".$bgcolor."> <td class='break' >"._hs($CN->GetFieldData('kanri_no'))."</td> <td class='break' >"._hs($CN->GetFieldData('maker_name'))."</td> <td class='break' >"._hs($CN->GetFieldData('maker_serial'))."</td> </tr>"; $CN->MoveNext(); } } else { $strHTML .= "<tr><td colspan='28'>該当するデータがありません。</td></tr>"; } $CN->DBClose(); $strHTML .= "</tbody> </table>"; </html> ';

「追記」
修正しましたが、$(document).ready(function() {の箇所で
syntax error, unexpected '('と怒られます。なぜでしょうか。
ほかにもおかしな箇所ありましたらご教授ください。

$strHTML = '<!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" }); }); $strHTML = '</script> <style> th,td {width: 180px;} </style> </head>'; //ヘッダー部 $strHTML = '<table id="tbl_list" cellspacing="0" cellpadding="0" > <thead> <tr> <th scope="col" class="f-weight" >'.((!empty($lent_ichran)) ? "レンタル":'').'管理番号</th> <th scope="col" class="f-weight" >メーカー名</th> <th scope="col" class="f-weight" >シリアルNo</th> </tr> </thead> '; $strHTML .= "<tbody >"; if ($datanum > 0) { while ($CN->EOF() == true) { //データ部 $strHTML .= "<tr ".$bgcolor."> <td class='break' >"._hs($CN->GetFieldData('kanri_no'))."</td> <td class='break' >"._hs($CN->GetFieldData('maker_name'))."</td> <td class='break' >"._hs($CN->GetFieldData('maker_serial'))."</td> </tr>"; $CN->MoveNext(); } } else { $strHTML .= "<tr><td colspan='28'>該当するデータがありません。</td></tr>"; } $CN->DBClose(); $strHTML .= "</tbody> </table>"; </html> ';

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

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

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

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

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

guest

回答2

0

ベストアンサー

あとはjQueryプラグイン利用するしかないですね。
試してみてください。

※多少テーブルのタグやクラス指定が変わるかもしれませんが調整してください

投稿2018/03/06 06:52

m.ts10806

総合スコア80765

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

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

hw_test

2018/03/07 01:40

回答ありがとうございます。 参考にして進めていますが、わからない部分がありますので質問内容に追記しますので確認をお願いします。
m.ts10806

2018/03/07 04:49

おかしなところ、というとstyleやらborderやら 直指定しているところでしょうか。以前も指摘されていたとは思いますが。。 syntax errorが出るのもプログラムのせいではなく、そのエラーが出るように組んでしまっているプログラマーのせいなので、そこはきちんと修正すべきかと。 (文法エラーなのでそもそもPHPの文法通りに組めていないということですし、プラグイン導入以前の問題です)
m.ts10806

2018/03/07 04:53

IEで未対応機能だったからプラグインに切り替えたわけですが、 この選んだプラグインはもちろん自身のIE環境で動作確認できて、入れようとしているんですよね? 参考サイトや記事をIEで見たときに動いてた、では意味がありません。
hw_test

2018/03/07 07:13 編集

私のIEの環境ではサイトのコードでは動作確認しております。 styleやらborderを削除し、追記いたしましたが、 thead_height: '30px',の箇所や、 $strHTML = '<table id="tbl_list" cellspacing="0" cellpadding="0" > の箇所でsyntax errorが出力されてしまいますので、 まだどこかおかしな箇所がありそうなのですが、 何かわかりますでしょうか?
m.ts10806

2018/03/07 07:13 編集

エラーが表示されたらそのエラーを提示してください。 syntax errorが出ているのはHTML自体の正規化とは関係ありません。 あくまでPHP上の問題です。 ソースコードを正しく確認したいので、ファイル毎にコードブロックをわけてもらうことはできますか? 上と下で全く違いますよね?上も途中で切れていますし。
hw_test

2018/03/07 07:22 編集

上記は1つのファイル上のコードとなります。 コードが長いため、余計な処理は削除しておりますが。 どのあたりが切れていますでしょうか? エラー内容は以下となっております。 <b>Parse error</b>: syntax error, unexpected T_CONSTANT_ENCAPSED_STRING in <b>C:\xampp\htdocs\xxx.php</b> on line <b>261</b><br /> 261行目は上でお伝えした箇所になります。
m.ts10806

2018/03/07 07:38 編集

切れているのは $strHTML = ' で始まっているけど、閉じの ' がないところ。 それでも上の部分ではsyntax error出てると思いますよ。 ' で変数を代入しているのに中に 'があります。中で使いたい場合はエスケープされた方が良いでしょう。 $hogehoge = 'aaa\'bbb'; おそらく同じ観点でエラーを解消できるはずです。 変数に代入する際に ' で囲っているか、 " で囲っているか。 囲っているクォートを中のHTMLやjavascriptなどの文字列で使っていないか。 特に上のほうはシングルクォートで囲いながら中でjavascriptの記述でシングルクォートを使っていますね。 $strHTML = '<!DOCTYPE html> ~~ $('.demo').tbodyScroll({ ←ここ。 あとは、終了部分(;の前)は同じクォートになっているかあたりを確認してみてください。
hw_test

2018/03/07 08:20

そのせいだったのですね。 初歩的なことばかりですみません。 修正して確認してみます。
hw_test

2018/03/07 08:43

<th scope="col" class="f-weight" >'.((!empty($lent_ichran)) ? "レンタル":'').'管理番号</th> 上記の部分の一部分をエスケープしたいのですが、 なぜか以下でエラーが出ます。 このような定義はできないのでしょうか? $test1 = '.((!empty($lent_ichran)) ? "レンタル":'').';
m.ts10806

2018/03/08 00:42 編集

ソースコードを最新にしてもらってよいでしょうか? というか、そこは最初の= '.(と 最後の .'; だと思います。 ; はプログラミング的な終了符的なものなので . は連結(文字列など)です。連結していて ' が続いているのにそこに文字列がないからです。 (JavaScript云々よりPHPの基本をおさえたほうが良いように思います・・)
m.ts10806

2018/03/08 00:42 編集

そこに限って言えば、こう。 $test1 = (!empty($lent_ichran)) ? "レンタル":'' ; Eclipseなどコードのエラーチェックも自動で行ってくれるテキストエディタを使用するように強くすすめます。 それくらいのシンタックスエラーであれば実行しなくてもコードを打った段階で見つかります。
hw_test

2018/03/09 11:07

ありがとうございます。 時間がかかっていますが、自分でも調べながらエラーを取り除いていっています。。 明日までに追記します。
guest

0

IEじゃできないことで有名なものの一つですね。
検証はしてないのですが、
下記記事の方法、やってみてはいかがでしょうか?

http://kagan.hatenablog.com/entry/2014/08/08/071726

tbodyに対して、display: block;を効かせた上で、
overflow-y: auto;をきかせる方法です。

それでダメなら、divでテーブル分けちゃって、
セルの大きさは、javascriptで揃えるとか・・・。

投稿2018/03/07 07:29

miyabi_takatsuk

総合スコア9528

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

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

退会済みユーザー

退会済みユーザー

2018/03/07 23:29

datatablesでいいよなそれ(笑) 調整面倒だし
m.ts10806

2018/03/08 00:41

どちらかというとPHPの技術面が問題ですよね。
miyabi_takatsuk

2018/03/08 09:37 編集

asahina1979さん> うお、これなまらいいですね。 今度自分も使おう 笑 なるほど、こんな経緯で、本質問のmts10806さんの解答だったのですね・・・。 mts10806さん> 確かに、mts10806さんが省略って書いているところを本当に省略しちゃってたら、そら動かないですよね 汗 それでプラグインを勧めたわけなんですね。
m.ts10806

2018/03/08 09:41

そです。文字だけのやりとりのほぼ限界にきています(涙
退会済みユーザー

退会済みユーザー

2018/03/09 13:20

おや同郷者でしたか(道産子という意味で)
退会済みユーザー

退会済みユーザー

2018/03/09 13:45

自分でも分けて考えれるよってサンプルだしたけど結果理解してないしね (テーブルに属性も何もつけない)
m.ts10806

2018/03/09 23:02

道には修学旅行くらいでしか行ったことないですね。ずっと西の方です。 結局のところPHPの方の技術不足とHTML、CSSの理解不足辺りがあわさってかなりの悪循環になってる気がしますね。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.50%

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

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

質問する

関連した質問