• ベストアンサー

IEでの表示がおかしい

PHPでちょっとしたウェブアプリを作りました。 今まで確認にはFireFox1.0を使っていましたが、IE6.0で表示を確認したところ、FireFoxで表示されていたページが正しく表示されないという不具合を発見しました。 phpのソースが以下とします: <input type="checkbox" name="bd" value="1" <?php if ($form->value("bd")){echo "checked";} ?>"> Firefoxでソースを見ると、以下のように表示されます: <input type="checkbox" name="bd" value="1" > IE6.0では以下のように表示されます: <input type="checkbox" name="bd" value="1" "> (余計なダブルクオーテーションが現れる) これはリストの一部で、これが10くらいあります。そして、IEでは全ての行に余分なダブルクオーテーションが現れます。 また、実際の画面では、Firefoxの場合、全てのリストが表示されるのですが、IEでは4行目くらいまで表示され、その後はソースがあるにもかかわらず、表示されません。 どなたか原因や解決法をご存じでしたらお教え下さい。 よろしくお願いします。

質問者が選んだベストアンサー

  • ベストアンサー
  • chie65536
  • ベストアンサー率41% (2512/6032)
回答No.1

>phpのソースが以下とします: ><input type="checkbox" name="bd" value="1" <?php if ($form->value("bd")){echo "checked";} ?>"> >Firefoxでソースを見ると、以下のように表示されます: ><input type="checkbox" name="bd" value="1" > >IE6.0では以下のように表示されます: ><input type="checkbox" name="bd" value="1" "> >(余計なダブルクオーテーションが現れる) どう見ても「元ソースに余計なダブルクオーテーションが付いている」ようにしか思えませんが。 つまり、 「Firefoxはページ解釈を間違っていて、間違った解釈をしている為に、ソースの記述が間違った『正しく表示出来ないページ』が、偶然、正しく表示されている」 「IE6.0はページ解釈を間違わずに、正しく解釈している為に、ソースの記述が間違った『正しく表示出来ないページ』が、ちゃんと正しく表示されない」 と言う事です。 どう見ても、IE6.0の方が「正しい動き」をしています。 元ソースのダブルクオーテーションの対応を良く見て下さい。 判り易いように、正しく括られた「"~"」と「<~>」を1つづつ削り、トークンも削ってみます。 <input type="checkbox" name="bd" value="1" <?php if ($form->value("bd")){echo "checked";} ?>"> ↓ <input type="" name="bd" value="1" <?php if ($form->value("bd")){echo "checked";} ?>"> ↓ <input type="" name="" value="1" <?php if ($form->value("bd")){echo "checked";} ?>"> ↓ <input type="" name="" value="" <?php if ($form->value("bd")){echo "checked";} ?>"> ↓ <input type="" name="" value="" <?php if ($form->value("")){echo "checked";} ?>"> ↓ <input type="" name="" value="" <?php if ($form->value("")){echo "";} ?>"> ↓ <input name="" value="" <?php if ($form->value("")){echo "";} ?>"> ↓ <input value="" <?php if ($form->value("")){echo "";} ?>"> ↓ <input <?php if ($form->value("")){echo "";} ?>"> ↓ <input <?php if ($form->value("")){} ?>"> ↓ <input <?php if (){} ?>"> ↓ <input <?php ?>"> ↓ < <?php ?>"> ↓ < "> 正しく括られた「"~"」と「<~>」を1つづつ削り、トークンを削ると、最後は < > だけが残る筈ですが、質問に書かれた元ソースでは < "> と、どこにも対応の無い、余計なダブルクオーテーションが1つ残ります。 つまり「ソース表示」で見た場合に「余計なダブルクオーテーションが現れる」と言う事になります。 上記から「FireFox1.0はソース解釈が正しくないので、FireFoxでのページ表示確認は出来ない」と言う事が判ります。取り敢えずはIE6.0を信じましょう。

dokumori
質問者

お礼

早速のご回答、ありがとうございました。 いやはや、なんと単純な。 テキストボックス用に書いたものをコピペし、チェックボックス用に書き換えた際に、最後の " を取り忘れたようです。これを消してテストしたところ、問題なく全行表示されました。 どうもありがとうございました。

全文を見る
すると、全ての回答が全文表示されます。

その他の回答 (2)

  • chie65536
  • ベストアンサー率41% (2512/6032)
回答No.3

No.1の補足です。 「取り敢えずはIE6.0を信じましょう」と書きましたが、IE6.0にも「その動作は変だろ、間違ってる」と言う部分があるかも知れないので、完全に信じ切ってはいけません。 今回は「FireFoxでしか確認してなかったので、ソースの記述ミスに気が付かなかった」という事です。ですので「どのブラウザで見ても問題無く表示される」を目標に、FireFox、IE、NetScapeなど、色々なブラウザで確認するのが良いと思います。

dokumori
質問者

お礼

実は、MacのIEとSafariでもテストをしたのですが、この問題は生じませんでした。 また、このコードとはもう一ヶ月以上も付き合っている上、WinのIE6でしか問題が生じなかったため、IEの問題と決め付けていました。 やっぱり、まずは自分を疑わないといけません。反省。 改めて、ありがとうございました。

全文を見る
すると、全ての回答が全文表示されます。
回答No.2

書かれているソースを見ると、 ~(前略)~?>"> と、「?>」の直後に「”」がありますから、 IEのソースが正しい結果のようです。 このようにHTMLで出力されると、「”」の組み合わせがおかしくなりますので、正しくページが出力されないでしょう。 FireFoxが、なぜ「”」を消去するのかは判りませんが、まずはソースの修正をされてはいかがですか?

dokumori
質問者

お礼

ご回答ありがとうございました。 仰るとおり、" が一つ余計でした。

全文を見る
すると、全ての回答が全文表示されます。

関連するQ&A

  • phpでチェックボックスでの値の表示について

    HTMLで作成したテキスト、セレクト、チェックボックスなどに、選択されたもの全てをPOST送信で受け取って PHPにてパラメータをチェックしてから 確認画面(HTML)に表示してPHPにてDB登録するというプログラムを作ってます。 HTML側で <input type="checkbox" name="genre[0]" value="1" >国語 <input type="checkbox" name="genre[1]" value="2" >算数 <input type="checkbox" name="genre[2]" value="3" >理科  <input type="checkbox" name="genre[3]" value="4" >社会 として例えば、 <?php $genre = $_POST["genre"]; foreach ($genre as $key => $value){ print($value); } ?> で表示するとチェックした数字が表示されます。 (国語をチェックした場合 1) これを 国語 と表示させるにはどうすればいいんでしょうか? DBに登録する際は数字でいいんですが。

    • ベストアンサー
    • PHP
  • チェックボックスのデータの受け取り方について

    以下のようなチェックボックスを作ったとき、 test.phpではどうやって受け取ればよいのでしょうか? nameがそれぞれ違う場合は分かるのですが... 教えてください。 <form method="POST" action="test.php"> <input type="checkbox" name="color" value="red">赤</input> <input type="checkbox" name="color" value="blue">青</input> <input type="checkbox" name="color" value="white">白</input> <input type="checkbox" name="color" value="black">黒</input> <input type="submit" value="送信" > </form>

    • ベストアンサー
    • PHP
  • 送信後のチェックボックスの表示

    最初の画面でAにチェックされているとします。 そのあとに、AとBをチェックしたあとにSubmitで送信します。 送信したあとに、AとBにチェックした最初の画面を表示させたいときは、 どんな風にすればよいのでしょうか。 今は・・・ If Request.Form="" <input type="checkbox" name="test" value="A" checked>A <input type="checkbox" name="test" value="B">B <input type="checkbox" name="test" value="C">C Else Select Request.Form("test") Case "A" <input type="checkbox" name="test" value="A" checked>A <input type="checkbox" name="test" value="B">B <input type="checkbox" name="test" value="C">C Case "B" <input type="checkbox" name="test" value="A">A <input type="checkbox" name="test" value="B" checked>B <input type="checkbox" name="test" value="C">C Case "C" <input type="checkbox" name="test" value="A">A <input type="checkbox" name="test" value="B">B <input type="checkbox" name="test" value="C" checked>C   ・・・ End Select End If というように、全ての場合のときに"checke"をつけて表示させています。 もっと、効率のよい書き方はないものでしょうか?

  • AUだけ表示されない!

    CGIをつかって簡易データベースを作っています。 HTML出力したときに、DoCoMoとSoftbankでは表示される場所が、auだけ表示されません。 auは仕様が違うことはしっています。しかし、何が原因で表示されないかがわかりません。 みなさん力を貸してください。 表示されない箇所:formタグのところの項目名、<H1>タグの見出し文字 以下ソースです。 -------HTMLソース------- <html> <head> <title>タイトル</title> </head> <Body> <H1>タイトル</H1> <FONT size="-1"> <Hr> <BR> 【&#xE6DC;検索対象】<BR> <Form Method="get" Action="./*****.cgi"> <input type="checkbox" name="type" value="1" >&#xE6D8;項目1 <input type="checkbox" name="type" value="2" >&#xE68C;項目2 <input type="checkbox" name="type" value="3" >&#xE6B1;項目3 <input type="checkbox" name="type" value="4" >&#xE6AE;項目4 <input type="checkbox" name="type" value="5" >&#xE731;項目5 <input type="checkbox" name="type" value="6" >&#xE689;項目6 <BR> <Input Type="text" Name="search" size="20" value=""></input> <Input Type="submit" Value="検索"></input> </Form> <BR> <HR> <A Href="./*****.cgi" accesskey="0">&#xE6EB;トップページ</A><BR> <A Href="./*****.cgi" accesskey="9">&#xE6EA;管理者モード</A><BR> </font> </body></html>

    • ベストアンサー
    • HTML
  • 複数のcheckboxを間隔を空けず引っ付けて、横に並べたいのですが、

    複数のcheckboxを間隔を空けず引っ付けて、横に並べたいのですが、 以下のように、styleの中で、左右のマージンで調整すると、 ブラウザ(ie、firefox、safariなど)によって見え方が異なってしまいます。 他によい方法はないでしょうか。 よろしくお願いします。 <input type="checkbox" name="a1" value="1" style="margin-left: -10; margin-right: 0"> <input type="checkbox" name="a2" value="2" style="margin-left: -10; margin-right: 0"> <input type="checkbox" name="a3" value="3" style="margin-left: -10; margin-right: 0">  :

    • ベストアンサー
    • HTML
  • チェックボックスのvalueを連結してURLに追加

    <form method="get" action="<?php = $_SERVER['PHP_SELF']; ?>"> <input type="checkbox" name="c" value="001" /> <input type="checkbox" name="c" value="002" /> <input type="checkbox" name="c" value="003" /> <input type="checkbox" name="c" value="004" /> <input type="checkbox" name="c" value="005" /> <input type="submit" value="送信" /> </form> submitするとURLに ?c=001&c=002&c=003… が追加されます。 その形ではなく、c=001002003… と連結してURLに追加するにはどうしたら良いですか?

    • 締切済み
    • PHP
  • 大量のcheckboxにcheckedを入れる

    チェックボックスが50個あります。 送信ボタンを押して元のページを再度開きます。 そのときにチェックしたボックスにチェックを入れた状態にしたいです。 inputタグの中に<?php if(isset($checkbox2) && in_array('b2',$checkbox2)){echo ' checked';} ?>を入れていますが単調になってしまいます。 単調にならずにする方法はありますか? <input type="checkbox" name="chk1[]" value="a1" />の場合はインデックスが固定でないのでできませんでした。 その他いけない箇所があれば教えて下さい。 お願いします。 <?php if(isset($_GET["chk1"])){ $checkbox1 = $_GET["chk1"]; for($i=0; $i<sizeof($checkbox1); $i++){ print $checkbox1[$i]."<br />"; } } if(isset($_GET["chk2"])){ $checkbox2 = $_GET["chk2"]; foreach($checkbox2 as $key => $val){ print $val."<br />"; } } ?> <html lang="ja"> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <title></title> </head> <body> <form method="get" action="checkbox.php"> <input type="checkbox" name="chk1[]" value="a1" /> <input type="checkbox" name="chk1[]" value="a2" /> <input type="checkbox" name="chk1[]" value="a3" /> <input type="checkbox" name="chk1[]" value="a4" /> <input type="checkbox" name="chk1[]" value="a5" /> <input type="checkbox" name="chk1[]" value="a6" /> <input type="checkbox" name="chk1[]" value="a7" /> <input type="checkbox" name="chk1[]" value="a8" /> <input type="checkbox" name="chk1[]" value="a9" /> <input type="checkbox" name="chk1[]" value="a10" /> <br /> <input type="checkbox" name="chk2['b1']" value="b1" <?php if(isset($checkbox2) && in_array('b1',$checkbox2)){echo ' checked';} ?>/> <input type="checkbox" name="chk2['b2']" value="b2" <?php if(isset($checkbox2) && in_array('b2',$checkbox2)){echo ' checked';} ?>/> <input type="checkbox" name="chk2['b3']" value="b3" <?php if(isset($checkbox2) && in_array('b3',$checkbox2)){echo ' checked';} ?>/> <input type="checkbox" name="chk2['b4']" value="b4" <?php if(isset($checkbox2) && in_array('b4',$checkbox2)){echo ' checked';} ?>/> <input type="checkbox" name="chk2['b5']" value="b5" <?php if(isset($checkbox2) && in_array('b5',$checkbox2)){echo ' checked';} ?>/> <input type="checkbox" name="chk2['b6']" value="b6" <?php if(isset($checkbox2) && in_array('b6',$checkbox2)){echo ' checked';} ?>/> <input type="checkbox" name="chk2['b7']" value="b7" <?php if(isset($checkbox2) && in_array('b7',$checkbox2)){echo ' checked';} ?>/> <input type="checkbox" name="chk2['b8']" value="b8" <?php if(isset($checkbox2) && in_array('b8',$checkbox2)){echo ' checked';} ?>/> <input type="checkbox" name="chk2['b9']" value="b9" <?php if(isset($checkbox2) && in_array('b9',$checkbox2)){echo ' checked';} ?>/> <input type="checkbox" name="chk2['b10']" value="b10" <?php if(isset($checkbox2) && in_array('b10',$checkbox2)){echo ' checked';} ?>/> <br /> <input type="submit" value="送信" /> </form> </body> </html>

    • 締切済み
    • PHP
  • 検索後にチェックボックスのON/OFF状態を再現して表示したい

    下記の例で、表示されている sample.php にあるチェックボックスを ON/OFFしてから再計算ボタンを押下後、チェックボックスのON/OFF状態を 引き継いで(維持して)sample.phpを表示させることはできませんか? 「りんご」だけにチェックして再計算ボタンを押下後、再表示された sample.php は「りんご」だけチェックが入っているイメージです。 <form action="./sample.php" method="post"> <input type="checkbox" name="fruit[]" value="apple">りんご</td> <input type="checkbox" name="fruit[]" value="orange">みかん</td> <input type="checkbox" name="fruit[]" value="grape">ぶどう</td> <input type="submit" name="exec" value="再計算"> </form> なお、name="fruit[]" は配列になっていて、SQL発行に生かされています。

    • ベストアンサー
    • PHP
  • フォーム INPUTの文字化け対策の対処方は?

    チェックボックス(趣味のリスト)のチェック有無を配列で受けていますが、"パソコン"の文字が"パソ\コン"に文字化けしてしまいます。対処方法をお教えください。 <?php mb_language('Japanese'); $hobby=@implode(" ",$_POST[hobby]); echo $hobby; ?> <FORM action="<?=$_SERVER[PHP_SELF]; ?>" method="post" > <INPUT type="checkbox" name="hobby[]" value="旅行" >旅行<BR> <INPUT type="checkbox" name="hobby[]" value="温泉" >温泉<BR> <INPUT type="checkbox" name="hobby[]" value="ゴルフ" >ゴルフ<BR> <INPUT type="checkbox" name="hobby[]" value="パソコン" >パソコン<BR> <INPUT type="checkbox" name="hobby[]" value="ドライブ" >ドライブ<BR> <INPUT type="checkbox" name="hobby[]" value="写真" >写真<BR> <INPUT type="submit" name="submit" value="送信"><BR> <INPUT type="reset" name="reset" value="RESET"> </FORM>

    • ベストアンサー
    • PHP
  • chromeでフォームの値が取得できない

    PHPでフォームに入力された値を取得して画面に表示させる処理において、 Javascriptでフォームの値を変更した場合、chromeだと変更後の値が 取得できません。 例えば、 <form name="form" method="post" action="index.php"> <input type="checkbox" name="chk1" value="111"> <input type="hidden" name="data1" value="AAA"> <input type="submit" value="送信"> </form> というようなフォームがあったとして、Javascriptで値を <form name="form" method="post" action="index.php"> <input type="checkbox" name="chk1" value="222"> <input type="hidden" name="data1" value="BBB"> <input type="submit" value="送信"> </form> と、変更しても送信ボタンを押して取得できる値は、上の方の値になります。 IEやFireFoxでは問題なく変更後の値が取得できるのですが、chromeだと 取得できません。 なにか解決方法があるのか、それともchromeの仕様なのかご教示いただければと 思います。 どうかよろしくお願いいたします。

勝手にキー連続入力される
このQ&Aのポイント
  • デスクトップPCのキーボードで勝手にキー連続入力が発生しています。購入から正常に使えていたが、2022年9月1日から連続して「a」が入力される現象が発生し、新しい電池に交換しても改善されません。
  • エレコム株式会社製のTK-FBP100BKという型番のキーボードを使用しています。購入から正常に使用できていたが、2022年9月1日から勝手に「a」が連続して入力されるという現象が発生し、電池の交換をしても改善されません。
  • デスクトップPCのキーボードで、2022年9月1日から勝手に「a」が連続して入力されるという問題が発生しています。エレコム株式会社のTK-FBP100BKというキーボードを使用していて、電池を新品に交換しても問題は解消されません。
回答を見る

専門家に質問してみよう