• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:MySQLでselect文を発行した際の表示)

MySQLでselect文を発行した際の表示

このQ&Aのポイント
  • PHPカテゴリに投稿されたMySQLのselect文で、ブラウザに表示される金額がハイフンに変換される問題が発生しています。
  • 問題はPC用とスマホ用のページでのみ発生し、同じソースコードでも一部の項目のみが影響を受けます。
  • PHPのバージョンは5.3.3、MySQLのバージョンは5.0.95で、閲覧に使用しているブラウザはchromeとIE9です。

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

  • ベストアンサー
  • t_ohta
  • ベストアンサー率38% (5252/13737)
回答No.3

例示して頂いた内容等をもとに数パターン試してみましたが、私の手元では再現できませんでした。 データベースのデータに何らかの制御文字のような物が混入していて表示をおかしくしているような気がします。 No.2さんの回答にあるように、データを詳しく調べる必要があると思います。 根本解決ではありませんが number_format((int)$body["img_title"]) のように、DBの値をintにキャストしてやると余計な文字は消えるので、とりあえずは改善されるかもしれません。

nazal2010
質問者

お礼

まだ解決には至っておりませんが、デザイナーサイドにも報告し、検証してもらっています。 データベース、PHPロジックと、HTMLの両者で検証を行って参ろうと思っております。 参考になるご回答をいただき、大変感謝申し上げます。 ありがとうございました。

その他の回答 (2)

回答No.2

数字に紛れて別の文字が入っていたりしてませんか? 随分前に、上手く動かないと言った話が出た時に、「ZERO WIDTH SPACE」が行末に紛れ込んでいた、なんてことがあったりしていたんですが、そういうようなものはないんでしょうか。 <?php echo bin2hex($body["img_title"]); //バイナリを16進数表現に変換する ?> などとしてみていただいた時に、変な値が吐出されたりしませんか?

nazal2010
質問者

お礼

ご回答をいただき、ありがとうございます。 なるほど、16進数に変換して検証。という方法もあるのですね。 大変参考になりました。 ありがとうございます。検証してみます。

  • t_ohta
  • ベストアンサー率38% (5252/13737)
回答No.1

$body["img_title"] の中身はどのようなデータが入っているのでしょうか。 ソースには出ているという事なので、データの中にタグとみなされるような文字が混ざっているか、なんらかの制御コードが混入している可能性があると思います。 あと、PHPを使用しているのであれば、わざわざタグを echo で出す必要は無いと思いますし、コーディングの手間やデバッグを考えると直した方がいいと思いますよ。 ↓こんな風に ・・・・ ?> <div class="recommendItem"><a href="<?php echo $body["img_comp"]; ?>" rel="lightbox[plants]" title="<?php echo $body["img_body"]; ?>"><img src="<?php echo $body["img_comp"]; ?>" alt="<?php echo $body["img_body"]; ?>" /></a> <div class="detail clearfix"> ・・・・

nazal2010
質問者

お礼

早速のご回答ありがとうございます。 $body["img_title"]の中身は、データベースにinsertされているテキストデータを 単純にselectし、number_formatで3桁のカンマ区切りをして表示しております。 因みに、number_formatを外しても改善されませんでした。 以下、ブラウザへ反映されたソースです。(URLは伏せております。) ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ <!-- thumb --> <div class="recommendItem"> <a href="https://www.URL/000000006.jpg" rel="lightbox[plants]" title="商品1"> <img src="https://www.URL/000000006.jpg" alt="商品1" /></a> <div class="detail clearfix"> <p class="menuName">商品1</p> <p class="price">1,000円</p> </div> </div> <!-- /thumb --> <!-- thumb --> <div class="recommendItem"> <a href="https://www.URL/000000012.jpg" rel="lightbox[plants]" title="商品2"> <img src="https://www.URL/000000012.jpg" alt="商品2" /></a> <div class="detail clearfix"> <p class="menuName">商品2</p> <p class="price">0円</p> </div> </div> <!-- /thumb --> <!-- thumb --> <div class="recommendItem"> <a href="https://www.URL/000000011.jpg" rel="lightbox[plants]" title="商品3"> <img src="https://www.URL/000000011.jpg" alt="商品3" /></a> <div class="detail clearfix"> <p class="menuName">商品3</p> <p class="price">2,000円</p> </div> </div> <!-- /thumb --> <!-- thumb --> <div class="recommendItem"> <a href="https://www.URL/000000010.jpg" rel="lightbox[plants]" title="商品4"> <img src="https://www.URL/000000010.jpg" alt="商品4" /></a> <div class="detail clearfix"> <p class="menuName">商品4</p> <p class="price">2,300円</p> </div> </div> <!-- /thumb --> <!-- thumb --> <div class="recommendItem"> <a href="https://www.URL/000000006.jpg" rel="lightbox[plants]" title="商品5"> <img src="https://www.URL/000000006.jpg" alt="商品5" /></a> <div class="detail clearfix"> <p class="menuName">商品5</p> <p class="price">3,000円</p> </div> </div> <!-- /thumb --> ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 3つ目のブロックの<p class="price">2,000円</p>が、 <p class="price">-</p>という形でブラウザへ反映されてしまいます。 ハイフンをコピーして、テキストエディタ等にペーストすると、 円と表示されます・・・。 何度も申し上げますが、この5つのブロックはwhileループで表示して おりますので、3つ目のブロックの$body["img_title"]だけが ハイフンの表示になるのが、全く意味が分からなく思っております。 解決の糸口がございましたら、何卒よろしくお願い申し上げます。 ※echoのご指摘をいただき、ありがとうございます。 ダブルクォートのエスケープ処理も面倒ですしね。 昔からこの様な書き方でして、今後改善して参ります。 ありがとうございます。

関連するQ&A

専門家に質問してみよう