データベースからひっぱってきた画像の表示方法を教えてください - PHPプロ!Q&A掲示板

2492

  • 0P

データベースからひっぱってきた画像の表示方法を教えてください

質問日時 / 2010年1月30日 16:49 (最終編集:1月30日 17:05)    回答数 / 4件

Questioner:  tamatama  このエントリーをはてなブックマークに追加 

キーワード / 画像    画像表示    データベース   

学校の課題でMYSQLで作ったデータベースからひっぱてきた、画像を表示しているのですが、
よくある、ショッピングサイトみたいに、画像を一行で三枚ぐらい並べて1ページに
つき10枚ずつ表示しようとしているのですが、画像が縦に一枚ずつしかならべれません。
色々ネットなどでやり方を探してみたのですが、ものわかりが悪くよくわかりません。どうか
初心者にでわかるくらい優しく教えてもらえるとすごく助かります。
困っている部分のソースをのせます。


<?php if(isset($rowary)){ for($i=0 ; $i<count($rowary) ; $i++){ ?>
<table border="0" cellpadding="0" cellspacing="0">
    <tr>
    <td>
    <form action="detail.php" method="post">
    <input type="hidden" name="sid" value="<?php print $rowary[$i]["sid"]; ?>">
    <input type="hidden" name="sname" value="<?php print $rowary[$i]["sname"]; ?>">
    <input type="hidden" name="value" value="<?php print $rowary[$i]["value"]; ?>">
    <input type="hidden" name="simg" value="<?php print $rowary[$i]["simg"]; ?>">
    <input type="hidden" name="sexp" value="<?php print $rowary[$i]["sexp"]; ?>">
    <input type="hidden" name="cid" value="<?php print $rowary[$i]["cid"]; ?>">
    <input type="hidden" name="category" value="<?php print $category; ?>">
    <input type="hidden" name="sarch" value="<?php print $sarch; ?>">
  <input type="image" src="../../img/commo/<?php print $rowary[$i]["cid"]; ?>/
  <?php print $rowary[$i]["simg"]; ?>" width="190" height="150" />
    </form>
    </td>
    </tr>
    
    <tr>
     <td><font size="2"><?php print $rowary[$i]["sname"]; ?></font></td>
    </tr>
    
    <tr>
        <td><font size="2">\<?php print $rowary[$i]["value"]; ?></font></td>
    </tr>
</table>

<br>

<?php } 


一部分だけなのでわかりにくいと思うのですが、

<input type="image" src="../../img/commo/<?php print $rowary[$i]["cid"]; ?>/
<?php print $rowary[$i]["simg"]; ?>" width="190" height="150" />

上記のこの部分が画像表示している部分です。

10枚ずつ表示してページがきりかわる所まではできています。

画像は縦に一枚ずつしか表示されないので、一行に三枚ずつくらい表示ができるようにしたいのですが、
アドバイスなり、ヒントでもかまいません。どのようにソースを変えればそのようになるのか、
教えてもらえると助かります。

まだまだ勉強不足で無知なことがたくさんありますが、よろしくお願いします。

説明がわかりにくくてすいません。要は画像を一行で三枚一列に三枚みたいな感じで表示したいだけです。
説明がわかりにくいので、わからなかったら答えれるようにしておきますので、どうかご助力お願いします。

この質問への意見の募集は締め切られ、ポイントは既に配分されました。
意見を投稿することはできますが、ポイントを受け取ることはできません。



ツリー一覧

┣A01slymanPHPじゃなくてHTMLの質問ですよね? 適当なうえに手
┗A02magicflute2そのソースをいじくると、ますます迷宮入りになります
 ┣A02-1slymanあー、カウントとか考えずに適当に組んだから、画像数
 ┗A02-2tamatama返信ありがとうございます。 まだできていませんが、

回答一覧

並び替え:

A01
answererslyman [1月30日 20:25]

PHPじゃなくてHTMLの質問ですよね?
適当なうえに手元に実行環境ないんでまともに動くかわかりませんが、
こんなイメージでできるんじゃないかと。

  1. <table border="0" cellpadding="0" cellspacing="0">
  2. <?php if(isset($rowary)){ for($i=0 ; $i<count($rowary) ; $i++){ 
  3.  if(($i % 3)==0){
  4.   echo "<tr>"
  5.  }
  6.  echo "<td>"
  7. ?>
  8. <table border="0" cellpadding="0" cellspacing="0">
  9.     <tr>
  10.     <td>
  11.     <form action="detail.php" method="post">
  12.     <input type="hidden" name="sid" value="<?php print $rowary[$i]["sid"]?>">
  13.     <input type="hidden" name="sname" value="<?php print $rowary[$i]["sname"]?>">
  14.     <input type="hidden" name="value" value="<?php print $rowary[$i]["value"]?>">
  15.     <input type="hidden" name="simg" value="<?php print $rowary[$i]["simg"]?>">
  16.     <input type="hidden" name="sexp" value="<?php print $rowary[$i]["sexp"]?>">
  17.     <input type="hidden" name="cid" value="<?php print $rowary[$i]["cid"]?>">
  18.     <input type="hidden" name="category" value="<?php print $category?>">
  19.     <input type="hidden" name="sarch" value="<?php print $sarch?>">
  20.    <input type="image" src="../../img/commo/<?php print $rowary[$i]["cid"]?>/
  21.    <?php print $rowary[$i]["simg"]?>" width="190" height="150" />
  22.     </form>
  23.     </td>
  24.     </tr>
  25.     
  26.     <tr>
  27.      <td><font size="2"><?php print $rowary[$i]["sname"]?></font></td>
  28.     </tr>
  29.     
  30.     <tr>
  31.         <td><font size="2">\<?php print $rowary[$i]["value"]?></font></td>
  32.     </tr>
  33. </table>
  34. <br>
  35. <?php 
  36.  echo "</td>"
  37.  if(($i % 3)==2){
  38.   echo "</tr>"
  39.  }
  40. }
  41. ?>
  42. </table>

この意見に回答する

ツリーへ TOPへ

A02 満足
answerermagicflute2 [1月30日 20:51] (最終編集:1月30日 21:27)

そのソースをいじくると、ますます迷宮入りになりますよ。
もっとシンプルな形にしてみましょう。

ポイントは、以下の3つ。
・1からカウントアップする値(現在位置)
・横の列数
・余算
まずは、『*』を<br />タグだけを使って表示してみてください。


<table>タグを使用した場合、もっと複雑になりますし、
ページャーも併用するなら、更に工夫が必要です。
余談1:<form>タグは<table>の外に置いたほうが良くない?
余談2:detail.phpに渡すhiddenは、恐らくsidだけでいいと思う。

例:<table>タグの場合
  1. <?php
  2. // ソースを見やすくしたかったので、タグを定数化
  3. define( "STBL"     , "<table>\n" );
  4. define( "ETBL"     , "</table>\n" );
  5. define( "STR"      , "<tr>" );
  6. define( "ETR"      , "</tr>\n" );
  7. define( "STD"      , "<td>" );
  8. define( "ETD"      , "</td>" );
  9. define( "NBSP"     , "-" );
  10. define( 'COLUMNS'  , 3 );
  11. //
  12. $arr             = array( '*','*','*','*','*','*','*','*','*','*','*','*' );
  13. $arr_realsize    = count( $arr ) - 1;
  14. // 始めに横カラム数を揃えておく
  15. $total           = $arr_realsize + (COLUMNS - $arr_realsize % COLUMNS);
  16. $current         = 1;
  17. //
  18. echo STBL;
  19. for ( $i = 0$i < $total$i++ ) {
  20.   $remainder = $current % COLUMNS;
  21.   if ( $remainder === 1 ) echo STR;
  22.   echo STD;
  23.   // *がまだ存在するなら表示、存在しないなら変わりの値を表示
  24.   echo (isset($arr[$i]))$arr[$i] : NBSP;
  25.   echo ETD;
  26.   $current++;
  27.   if ( $remainder === 0 ) echo ETR;
  28. }
  29. echo ETBL;

この意見に回答する

ツリーへ TOPへ

A02-1 参考になった
replyerslyman [1月30日 21:16]

あー、カウントとか考えずに適当に組んだから、画像数が3で割り切れない時にテーブル崩れますね。
あと仕様がよくわかってなくてテーブルひとまとめで横に並べてしまってるけど、画像だけですかね?

この意見に回答する

ツリーへ TOPへ

A02-2
replyertamatama [1月30日 23:33]

返信ありがとうございます。
まだできていませんが、なんとなくわかった気がします。
もう少し自分でいじってなんとかしてみます。
本当にありがとうございました。
またなにかあった時は助けてもらえると助かります。

この意見に回答する

ツリーへ TOPへ

<<質問一覧へ



Pick Up Q&A

Q
動的なURLを静的に見せる方法
 このエントリーをはてなブックマークに追加 
A
普通に考えて、mod_rewrite でしょうね。 http://www.nishishi.com/blog/2006/01/mod_rewrite_url.html...

>>続きを読む

GETのままでは検索エンジンのロボットが拾ってくれなかったためにSEO対策として有効だと言われていますね。

▲解説者:岡本(アシアル株式会社 教育コーディネーター兼 システムエンジニア)