プロが教える店舗&オフィスのセキュリティ対策術

PHP5、MySQL4、Apache2、DreamweaverMX2004を使ってリンク集を作っています。

DBからの検索結果を、現在は




と1列になっているのですが、これを
1 2
3 4
と表示させたいと思っているのですが
どうしてもうまくいきません・・・。
ヒントでも教えて頂ければ幸いです。
どうぞよろしくお願い致します。

A 回答 (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);
}
?>

録画でも見て気分転換・・・
    • good
    • 0
この回答へのお礼

本当ーーーにどうもありがとうございました!
2列にするのって、てっきり、どこか1~2行ちょろちょろっと直せばできるのか
と思い込んでいたのですが、
大変な解説をとても丁寧にして頂き、本当に感謝しております。
しかもドラマそっちのけで書いて頂いたようで・・・。
>しのぶが可哀想・・・と思ってたら、こっちのソースも可哀想
これにはウケまくってしまいましたが。

私が書いたコードとかは、本とDreamweaverの言いなりになっていたらできたものなので
>もしかして、帰国子女、または業界人?
を見た時、慌てちゃいました。title のスペルも間違えてたくらいですし( ´・ω・`)
教えて頂いた内容を夕方からずっと本と格闘しながら解読していたのですが
先程ようやくだいたい理解できたところです・・・。
本を読んでもなかなか理解できなかった部分がわかってすっごく嬉しかったです。
本当はきちんと出来てから「出来ました!」と書きたかったのですが
今日はここまででヘトヘトな感じなので、とりあえず先にお礼をと思いまして・・・。
本当にご丁寧に教えて頂きましてどうもありがとうございました。

お礼日時:2005/03/16 22:21

あわててすると、ろくな事がない良い例かも・・・



さっきのとこは、こうで、
  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 ?>
    • good
    • 0

いきなり、訂正


該当箇所を以下に・・・

ドラマに集中できない・・・

  list($link_1, $hptytle_1, $comment_1) = _fetchRequest($i);
  list($link_1, $hptytle_2, $comment_2) = _fetchRequest($i+1);
    • good
    • 0

$yoko=2 //改行列数


$i=0;

while($row=mysql_fetch_array($res))
{
$i++;
echo"$row[number] ";
if($i==$yoko)
{
echo"<br>";
$i=0;
}
}

試してませんが私はこんなかんじで
やってます
    • good
    • 0
この回答へのお礼

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

お礼日時:2005/03/16 22:19

とても、読みやすいソースですね。


もしかして、帰国子女、または業界人?
もしくは、どっかからの引用でしょうか?

ちほとしのぶとちづるを見なきゃならないんで、動作確認していません。
頭の中だけで組み立てたので、このままで動けば奇跡です。
適当に、直してください。
ロジック的におかしな所があれば、教えてもらえると嬉しいな!
※全角スペース使用してるんで、タブなどに変換してください。

表示部分は、テンプレ使用しないの久しぶりだったので、見にくくなりました。

ぁあああ、ドラマはじまってる・・・

<?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>
    • good
    • 0

すみません。

試していないので、合ってないかもしれませんが、表示部分の<?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>はテーブルの改行のタグなので、ひょっとしたらできるかも・・・
    • good
    • 0
この回答へのお礼

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

お礼日時:2005/03/16 22:17

こんにちは!



DreamweaverMX2004で処理を書き込まれていると思いますが、
DBの読込および表示処理をされている部分を提示してもらえませんか?

提示してもらえれば、
具体的で良い回答が投稿されると思います。
タイミングがあえば、わたしも返答させてもらいます。

念のために申しておけば、PHPソース(JavaScript)が入っているソースをDreamweaverで最適化する場合は、
バックアップを取った後に実行してください。

この回答への補足

はじめまして。アドバイスを頂き、ありがとうございます!
質問に「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で最適化する場合は、
>バックアップを取った後に実行してください。
そうなんですか・・・。勉強になりました。

補足日時:2005/03/16 10:42
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!