• ベストアンサー

検索結果を2列で表示させたい

PHP5、MySQL4、Apache2、DreamweaverMX2004を使ってリンク集を作っています。 DBからの検索結果を、現在は 1 2 3 4 と1列になっているのですが、これを 1 2 3 4 と表示させたいと思っているのですが どうしてもうまくいきません・・・。 ヒントでも教えて頂ければ幸いです。 どうぞよろしくお願い致します。

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

  • ベストアンサー
  • kotaron
  • ベストアンサー率61% (8/13)
回答No.7

しのぶが可哀想・・・と思ってたら、 こっちのソースも可哀想 とりあえず、これで最後にしよう・・・っと 以下の関数の、$i→$num に変更しないと <?php // fetch data function _fetchRequest($num) {   global $rows_Request, $nums_Request;   if ( $num >= $nums_Request) {     return array_pad($_temp, 3, false);   }   $url   = $rows_Request[$i]['url'];   $bn   = $rows_Request[$i]['bn' ];   $hptytle = $rows_Request[$i]['hptytle']; // hptytle's miss-typo, means hp-title ?   $comment = $rows_Request[$i]['comment'];   $link   = "<a href=\"{$url}\"><img src=\"{$bn}\" alt=\"{$hptytle}\"></a>";   return array($link, $hptytle, $comment); } ?> 録画でも見て気分転換・・・

noname#12569
質問者

お礼

本当ーーーにどうもありがとうございました! 2列にするのって、てっきり、どこか1~2行ちょろちょろっと直せばできるのか と思い込んでいたのですが、 大変な解説をとても丁寧にして頂き、本当に感謝しております。 しかもドラマそっちのけで書いて頂いたようで・・・。 >しのぶが可哀想・・・と思ってたら、こっちのソースも可哀想 これにはウケまくってしまいましたが。 私が書いたコードとかは、本とDreamweaverの言いなりになっていたらできたものなので >もしかして、帰国子女、または業界人? を見た時、慌てちゃいました。title のスペルも間違えてたくらいですし( ´・ω・`) 教えて頂いた内容を夕方からずっと本と格闘しながら解読していたのですが 先程ようやくだいたい理解できたところです・・・。 本を読んでもなかなか理解できなかった部分がわかってすっごく嬉しかったです。 本当はきちんと出来てから「出来ました!」と書きたかったのですが 今日はここまででヘトヘトな感じなので、とりあえず先にお礼をと思いまして・・・。 本当にご丁寧に教えて頂きましてどうもありがとうございました。

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

その他の回答 (6)

  • kotaron
  • ベストアンサー率61% (8/13)
回答No.6

あわててすると、ろくな事がない良い例かも・・・ さっきのとこは、こうで、   list($link_1, $hptytle_1, $comment_1) = _fetchRequest($i);   list($link_2, $hptytle_2, $comment_2) = _fetchRequest($i+1); おまけに、こうです。 <?php if ( $url !== false ) : // valid 2 column ?>    ↓ <?php if ( $link_2 !== false ) : // valid 2 column ?>

すると、全ての回答が全文表示されます。
  • kotaron
  • ベストアンサー率61% (8/13)
回答No.5

いきなり、訂正 該当箇所を以下に・・・ ドラマに集中できない・・・   list($link_1, $hptytle_1, $comment_1) = _fetchRequest($i);   list($link_1, $hptytle_2, $comment_2) = _fetchRequest($i+1);

すると、全ての回答が全文表示されます。
  • hide999
  • ベストアンサー率33% (2/6)
回答No.4

$yoko=2 //改行列数 $i=0; while($row=mysql_fetch_array($res)) { $i++; echo"$row[number] "; if($i==$yoko) { echo"<br>"; $i=0; } } 試してませんが私はこんなかんじで やってます

noname#12569
質問者

お礼

ありがとうございました! 2列にする方法って何通りもあるんですね・・・。 参考にさせて頂き、色々やってみたいと思います。 本当にどうもありがとうございました!

すると、全ての回答が全文表示されます。
  • kotaron
  • ベストアンサー率61% (8/13)
回答No.3

とても、読みやすいソースですね。 もしかして、帰国子女、または業界人? もしくは、どっかからの引用でしょうか? ちほとしのぶとちづるを見なきゃならないんで、動作確認していません。 頭の中だけで組み立てたので、このままで動けば奇跡です。 適当に、直してください。 ロジック的におかしな所があれば、教えてもらえると嬉しいな! ※全角スペース使用してるんで、タブなどに変換してください。 表示部分は、テンプレ使用しないの久しぶりだったので、見にくくなりました。 ぁあああ、ドラマはじまってる・・・ <?php require_once('Connections/link.php'); ?> <?php $maxRows_Recordset = 15; $pageNum_Recordset = 0; if (isset($_GET['pageNum_Recordset'])) {   $pageNum_Recordset = $_GET['pageNum_Recordset']; } $startRow_Recordset = $pageNum_Recordset * $maxRows_Recordset; mysql_select_db($database_link, $link); $query_Recordset = "SELECT * FROM `link`"; $query_limit_Recordset = sprintf("%s LIMIT %d, %d", $query_Recordset, $startRow_Recordset, $maxRows_Recordset); $Recordset = mysql_query($query_limit_Recordset, $link) or die(mysql_error()); // 表示処理が一覧のみしかない場合は、ここで取得されてはどうでしょうか? // 他の処理とかち合わない様に、変数名ちょこっと変更 //$row_Recordset = mysql_fetch_assoc($Recordset); for ( $i=0; $row = mysql_fetch_assoc($Recordset); $i++ ) {   $_tempFetchBuffer[$i] = $row; } // 取得されたデータがない場合、テーブル表示をせず、それなりの処理を施してください。 if ( ($nums_Request = $i) != 0 ) { // 取得数   $rows_Request = $_tempFetchBuffer; // 取得データ } else {   /* データがない場合にでも・・・ */ } if (isset($_GET['totalRows_Recordset'])) {   $totalRows_Recordset = $_GET['totalRows_Recordset']; } else {   $all_Recordset = mysql_query($query_Recordset);   $totalRows_Recordset = mysql_num_rows($all_Recordset); } // 対処の必要は無いと思いますが、$maxRows_Recordset=1の場合、求める値と違う場合があります。 $totalPages_Recordset = ceil($totalRows_Recordset/$maxRows_Recordset)-1; ?> <?php // fetch data function _fetchRequest($num) {   global $rows_Request, $nums_Request;   if ( $num >= $nums_Request) {     return array_pad($_temp, 3, false);   }   $url   = $rows_Request[$i]['url'];   $bn   = $rows_Request[$i]['bn' ];   $hptytle = $rows_Request[$i]['hptytle']; // hptytle's miss-typo, means hp-title ?   $comment = $rows_Request[$i]['comment'];   $link   = "<a href=\"{$url}\"><img src=\"{$bn}\" alt=\"{$hptytle}\"></a>";   return array($link, $hptytle, $comment); } ?> /* php comment * 表示部は、SMA*SMAテンプレートをと言いたいところですが・・・ * 原本の方法ですると、ちょっと複雑になります。ヒァドキュ使ったほうが見やすいかも * 同じような処理は、一つにまとめられる方が好きな方もいますが、 * 表示処理は、無理に一つにまとめるとソースがわかり辛く、メンテが大変だと思います * また、3段、4段組みとされたくなった場合を考慮して、 * 段組数により、表示処理を分けられる事をお勧めします * 分岐処理は、適当にしてください。 */ // 段組なしの場合 この段階で1つ以上データがある事を保障しておく <table width="100%" border="0" cellpadding="5"> <?php for ( $i; $i < $nums_Request; $i++ ) :   list($link, $hptytle, $comment) = _fetchRequest($i); // if ( $url === false ) break;  // まぁ、いいかな ?> <tr><td rowspan="2"><?php echo $link; ?></td>   <td><?php echo $hptytle; ?></td> </tr> <tr><td><?php echo $comment; ?></td></tr> <tr><td colspan="2"><hr></td></tr> <?php endfor; ?> </table> // 二段組の場合 この段階で1つ以上データがある事を保障しておく <table width="100%" border="0" cellpadding="5"> <?php for ( $i; $i < $nums_Request; $i+=2 ) :   list($url_1, $bn_1, $hptytle_1, $comment_1, $link_1) = _fetchRequest($i);   list($url_2, $bn_2, $hptytle_2, $comment_2, $link_2) = _fetchRequest($i+1); ?> <?php if ( $url !== false ) : // valid 2 column ?> <tr><td rowspan="2"><?php echo $link_1; ?></td>   <td><?php echo $hptytle_1; ?></td>   <td rowspan="2"><?php echo $link_2; ?></td>   <td><?php echo $hptytle_2; ?></td> </tr> <tr><td><?php echo $comment_1; ?></td><td><?php echo $comment_2; ?></td></tr> <?php else :  // valid only one ?> <tr><td rowspan="2"><?php echo $link_1; ?></td>   <td><?php echo $hptytle_1; ?></td>   <td colspan="2" rowspan="2"><br></td> </tr> <tr><td><?php echo $comment_1; ?></td></tr> <tr><td colspan="4"><hr></td></tr> <?php endif;  ?> <?php endfor; ?> </table>

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

すみません。試していないので、合ってないかもしれませんが、表示部分の<?php do { ?>を後ろを <tr> <td rowspan="2"><?php echo "<a href=\"{$row_Recordset['url']}\"><img src=\"{$row_Recordset['bn']}\" alt=\"{$row_Recordset['hptytle']}\"></a>"; ?></td> <td><?php echo $row_Recordset['hptytle']; ?></td> <td><?php echo $row_Recordset['comment']; ?></td> </tr> としてみたらどうでしょうか? <tr>はテーブルの改行のタグなので、ひょっとしたらできるかも・・・

noname#12569
質問者

お礼

レスありがとうございました。 試してみたところ、これだとどうもできない感じでしたが お時間を割いてレスして頂き、どうもありがとうございました!

すると、全ての回答が全文表示されます。
  • kotaron
  • ベストアンサー率61% (8/13)
回答No.1

こんにちは! DreamweaverMX2004で処理を書き込まれていると思いますが、 DBの読込および表示処理をされている部分を提示してもらえませんか? 提示してもらえれば、 具体的で良い回答が投稿されると思います。 タイミングがあえば、わたしも返答させてもらいます。 念のために申しておけば、PHPソース(JavaScript)が入っているソースをDreamweaverで最適化する場合は、 バックアップを取った後に実行してください。

noname#12569
質問者

補足

はじめまして。アドバイスを頂き、ありがとうございます! 質問に「DBからの検索結果を」と書きましたが、 ただの一覧表示のページも出来れば2列にしたいので そちらを教えて頂いた方が初心者の私には理解しやすそうな気がしましたので できればそちらで教えて頂ければ幸いです・・・。 おっしゃる通りDreamweaverで作っておりまして、 ■リンク集(link.php)のコードで上部には <?php require_once('Connections/link.php'); ?> <?php $maxRows_Recordset = 15; $pageNum_Recordset = 0; if (isset($_GET['pageNum_Recordset'])) { $pageNum_Recordset = $_GET['pageNum_Recordset']; } $startRow_Recordset = $pageNum_Recordset * $maxRows_Recordset; mysql_select_db($database_link, $link); $query_Recordset = "SELECT * FROM `link`"; $query_limit_Recordset = sprintf("%s LIMIT %d, %d", $query_Recordset, $startRow_Recordset, $maxRows_Recordset); $Recordset = mysql_query($query_limit_Recordset, $link) or die(mysql_error()); $row_Recordset = mysql_fetch_assoc($Recordset); if (isset($_GET['totalRows_Recordset'])) { $totalRows_Recordset = $_GET['totalRows_Recordset']; } else { $all_Recordset = mysql_query($query_Recordset); $totalRows_Recordset = mysql_num_rows($all_Recordset); } $totalPages_Recordset = ceil($totalRows_Recordset/$maxRows_Recordset)-1; ?> ■表示部分は <table width="100%" border="0" cellpadding="5"> <?php do { ?> <tr> <td rowspan="2"><?php echo "<a href=\"{$row_Recordset['url']}\"><img src=\"{$row_Recordset['bn']}\" alt=\"{$row_Recordset['hptytle']}\"></a>"; ?></td> <td><?php echo $row_Recordset['hptytle']; ?></td> </tr> <tr> <td><?php echo $row_Recordset['comment']; ?></td> </tr> <tr> <td colspan="2"><hr></td> </tr> <?php } while ($row_Recordset = mysql_fetch_assoc($Recordset)); ?> </table> となっています。私なりに調べてみまして、 表示部分の最後のwhileの所をどうにかすればいいのかなぁと思ったのですが どうしたら良いのかわからず、1週間位悩んでいます(汗 図々しくおたずねしちゃって申し訳ございません。 お時間のある時で、できればアドバイス頂ければ幸いでございます。 >PHPソース(JavaScript)が入っているソースをDreamweaverで最適化する場合は、 >バックアップを取った後に実行してください。 そうなんですか・・・。勉強になりました。

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

関連するQ&A