• ベストアンサー

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

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

noname#12569
noname#12569
  • PHP
  • 回答数7
  • ありがとう数6

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

  • ベストアンサー
  • 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

  • 検索結果IDの使いまわしについて

    いつもお世話になります。 MySQL+PHPでシステムを構築しております。 PHPのmysql_queryもしくはmysql_db_queryで得た結果IDを使いまわす方法はありませんか? というのも、MySQLへ同じ検索をかける必要がある場合、都度検索するより、一度検索した結果IDを使えれば楽なのですが。。。 実際にやりたい事は、PHPのwhile関数で結果ID分の繰り返し処理を行い、その後、同じ繰り返し処理を行いたいのですが、再度、検索クエリ文をmysql_queryもしくはmysql_db_queryを行わずに利用できる方法があればと考えております。宜しくお願い致します。

    • ベストアンサー
    • MySQL
  • PHPで検索結果からさらに詳細な情報を表示させる

    PHP5.3.3 + MySQL5でWebプログラムを勉強している者です。 現在フォームからの情報をキーにしてDBの検索結果を表示するプログラムを組んでいるのですが、検索画面(HTML)→DBへアクセス→検索結果の一覧表示というところまでは出来たのですがそこからさらに表示ボタンを使って個別の結果を表示させたいのですが今一上手い方法が思いつきません。 何か良い方法はありませんでしょうか? 下手糞な文章なのでイメージが付かないと思いますのでイメージに近いURLを張っておきます。 ttp://www.e-trader.jp/trader/contents/kaitorikensaku/kensaku.php こちらのトレーダーさんのサイトの様な形で結果一覧→個別の結果を表示させたいのです。 どなたかアドバイスをよろしくお願いします。

    • ベストアンサー
    • PHP
  • 検索結果の数について

    前回も質問をしたのですが、html、php、MySQLを使い現在検索システムの作成の練習をしているのですが、やりたいのは、phpでMySQLからデータを呼び出し、htmlで文字を記入して合致しているものを検索して表示し、検索結果数(何件表示されました)を表示するというものを作りたいと思っています。 検索してデータを表示させるということはできたのですが、検索結果数を表示することができません。 count()を使えば一発でできるという助言をいただきましたが調べてもよく分かりませんでした。 [php] <?php $add = $_GET["add"]; $nm = $_GET["nm"]; $server = "xxxxxx"; $dbname = "xxxxxx"; $user = "xxxxx"; $passwd = "xxxxxx"; $sv = mysql_connect($server, $user, $passwd) or die("Connection err1"); $db = mysql_select_db($dbname) or die("Connection error2"); $rows = mysql_query("SELECT * FROM `table1` WHERE add ='$add' or `nm` LIKE N'%nm'"); if($rows > 0){ $out = ""; while ($row = mysql_fetch_array($rows)){ $out .= $row['add']."<i>"; $out .= $row['nm']."<i>"; $out .= "<r>"; } echo $out; }else { echo "参照不成功:nm = ".nm; } mysql_close($sv); ?> phpについてもsqlについてもあまり知識がないのですが、よろしくお願いします。

    • ベストアンサー
    • PHP
  • 検索結果件数を取りたいです。

    環境は、php + mysqlで作ってます。 DBのテーブルに格納されている文字列をセレクト文で取り出して 対象件数が何個あるか知りたいです。 DBのテーブルに格納されている文字列はURLの文字列が入ってます。 例えば http://www.yahoo.com/ 確認のため、予め $obj = "http://www.yahoo.com/"; として、DBに入っているデータを書いておいて以下を実行しました。 $sql="select * from geturl where url=".$obj; $datas = mysql_query($sql , $db ); $num = mysql_num_rows($datas); echo $num; 結果: Warning: mysql_num_rows(): supplied argument is not a valid MySQL result resource in /home/~~ といったエラーが出てしまいました。。。 今度は、予め数字を入れておいて実行してみました。 入れた文字は「123」です。 $obj = "123"; $sql="select * from geturl where url=".$obj; $datas = mysql_query($sql , $db ); $num = mysql_num_rows($datas); echo $num; 結果:正しく対象件数がブラウザに表示されてました。 数字だと正しく処理されて、英文字だとエラーになる原因がわかりません。。 アドバイスいただければ幸いです。 よろしくお願いします。

    • ベストアンサー
    • PHP
  • 検索結果がない時の信号の取り方を教えてください

    MySQLで検索結果がない場合の表記方法で、何もないと、検索結果が表示されないで終わりです。 検索結果がないときに、”検索結果のデータは存在しません”というような表示にしたいと思っています。 検索結果がある、ないの信号の取得方法を教えてもらえると幸いです。 ちなみに、PHP5+MySQL4.1.22で作成中です。 よろしくお願いします。

    • ベストアンサー
    • MySQL
  • 検索結果について

    <script type="text/javascript"> function show(out){ var body = ""; var recs = out.split("<r>"); for(var i = 0; i <recs.length - 1; i++){ body += "<table width='100' border='3'><th>あああ</th><th>いいい</th>"; body += "<tr>"; var flds = recs[i].split("<i>"); for(var j = 0; j <flds.length - 1; j++){ if(j != 5){ body += "<td>" + flds[j] + "</td>"; }else{ if(flds[1]!=""){ } } } } $("#show").html(body); } </script> html、php、MySQLで検索システムの作成を行っているのですが、検索して表示される結果が      あああ                    いいい DBのあああの検索結果1         DBのいいいの検索結果1      あああ                    いいい DBのあああの検索結果2         DBのいいいの検索結果2 となってしまうのですが、<th>のあああ、いいいを一つだけにして         あああ                    いいい DBのあああの検索結果1         DBのいいいの検索結果1 DBのあああの検索結果2         DBのいいいの検索結果2 とするにはどうすればいいでしょうか。 上のjavascriptがどのようになっているのかよく分かっていない状態です。 よろしくお願いします。

  • 長さ1の空文字列?

    タイトルの通り、長さ1の空文字列で困っています。 現在、Linux、Apache、MySQL、PHPを使って3階層アプリケーションを作っています。 予めMySQLでテーブルの形を決めておいて、CSVからデータを読み込ませておき、 PHPでSQL文を実行してレコードを取得することで、それらをユーザに表示という感じです。 複数あるカラムのうち、空文字列(CSV上でブランクだったもの)は表示させたくないので、 PHPで「 if(カラム=="")~ 」のように比較することで、空文字列だけ避けるつもりでした。 しかし上手くいかなかったので、strlen()で調べて見たところ、返り値が1でした。 本来は空文字列に対してstrlen()は0或いはfalseの返り値を返しますよね。 is_empty()でも空データ扱いにならず、当然NULLの扱いでもありません。 そのため、実データとの区別が出来ずに困っています。 何故、空文字列のカラムを除外したいかというと、 DB上のユニークなレコードを検索したいからです。 select * from where カラム='データ' and カラム='データ'… という風に。 「カラム=''」としてしまうと検索に引っかからなくなってしまいます。 どうすればよいでしょうか。 以下はそれぞれのバージョンです。 MySQL:5.0.95 PHP:5.1.6 Linux:RHEL5 Apache:2.2.3

    • ベストアンサー
    • PHP
  • 検索表示について

    はじめまして、こんばんは。 HTMLもままならないPHP初心者ですが、ここ2ヶ月、3冊の本を購入し、実際に動作させながら学んでいる状況です。 さて、今回質問させて頂きますのも、DBからPHPにより検索結果を表示させた際、検索にヒットした全ての一覧を1ページ10件ずつ掲載するようなページを、要はここ「教えてGoo!」のように、検索結果を10件ずつ表示させ、ページの下に[1|2|3|...]のようにページ移動のリンクを持つページを作りたいと考えております。 こちらの過去ログにも同じような質問があり、また、他のサイトでも近い内容のものは全てプリントアウトし、一日中資料と睨めっこしておりますが、どれも上手くいかずに困り果てております。。 勿論、丸投げでお願いするつもりはないのですが、皆様のお知恵をお借りできればと質問させて頂きました。 可笑しなところも含め、ご指導いただければ幸いです。宜しくお願い致します。

    • ベストアンサー
    • PHP
  • 検索結果表示について

    こんにちは。お世話になっております。 あるテーブルからの検索結果をPHPにてブラウザ上に表示させる際のコードに関しての質問なのですが、これまで、検索したいレコードが1つである事を条件にした場合、以下のコードのどちらが適切なのでしょうか? if($rows==1){ while($row = mysql_fetch_array($result))   ・   ・ echo $row["id"]; または、 if($rows ==1){ $id = mysql_result($result, 0, "id"); echo $id; どちらもブラウザでは同じ結果が返ってくるかと思われますが、諸先輩方々からのアドバイスを頂ければと、投函させて頂きました。 お忙しい中恐縮ですが宜しくお願い致します。

    • ベストアンサー
    • MySQL
  • 検索結果と件数について

    いつもお世話になっております。 PHP経験者の方にとっては、どうしようもない質問だと思いますがどうかよろしくお願いします。 現在HTML、PHP、MYSQLを使って検索のWebアプリを作成しております。 検索結果を表示して検索件数も表示することはできたのですが、結果と件数の表示位置をそれぞれ別々に指定するにはPHP側でどのように分け、HTML側でどのように書けばいいのか調べても全く分かりませんでした。 本当に何か簡単なサンプルでもありましたら教えていただきたいです。 よろしくお願いします。

    • ベストアンサー
    • PHP

専門家に質問してみよう