電子書籍の厳選無料作品が豊富!

phpとmysqlでデータの一覧表示をしたいと思っています。

ずらーっと並べるだけでなく、1ページに100件した場合には
10行毎に<hr>や<br>などのタグを挿入して間隔を空けたいのですが
どのようにしたらいいのか悩んでいます。

現在は下記のようにLIMITで何度もqueryを発行しています。

できれば1回のqueryで処理したいのですが
他にどのような方法があるでしょうか。

$rs = mysql_query("select * from data order by id desc LIMIT 0,10 ;",$conn);
while($rec = mysql_fetch_array($rs, MYSQL_ASSOC)){
$site = $rec['site'];
$url = $rec['url'];
echo '<a href="'.$url.'">'.$site.'</a>';
}

$rs = mysql_query("select * from data order by id desc LIMIT 10,10 ;",$conn);
while($rec = mysql_fetch_array($rs, MYSQL_ASSOC)){
$site = $rec['site'];
$url = $rec['url'];
echo '<a href="'.$url.'">'.$site.'</a>';
}

$rs = mysql_query("select * from data order by id desc LIMIT 20,10 ;",$conn);
while($rec = mysql_fetch_array($rs, MYSQL_ASSOC)){
$site = $rec['site'];
$url = $rec['url'];
echo '<a href="'.$url.'">'.$site.'</a>';
}

よろしくお願い致します。

A 回答 (3件)

>おかしなところなどありますでしょうか。


「 $i = --$i; 」は、動作はすると思いますが、とても不自然な書き方です。
--$i; は $i = $i-1; の省略型ですから、 省略型と普通の書き方がごちゃまぜになってしまっています。書くなら 「 $i = $i-1; 」 か「 --$i; 」だけのどちらかにしましょう。

>また、教えていただいたif(!--$i)の部分が分かりませんでした・・
>その点も教えて頂けると嬉しいです。
(すでにご理解されているように思えますが一応。)
感嘆符 ! は、否定ですので  if(!--$i)は、
「 まず$iを-1して、その結果が FALSE つまり 0 なら~」ということです。
$i=$i-1;
if($i == 0){
ですね。

他のプログラム言語でも、演算子はほぼ同じですので、一度「演算子」に目を通しておかれるとよいかと思います。
http://www.php.net/manual/ja/language.operators. …
※もちろん無理に省略する必要はありません。ご自分で分かりやすいのが一番です。
    • good
    • 0
この回答へのお礼

丁寧に教えて頂きましてありがとうございました。
とても分かりやすかったです。

お礼日時:2010/06/17 16:18

$i = --$i;



はありえない・・・。
--$iという書式はデクリメントといって $i=$i-1という意味ですから
それを$iに代入しても仕方がありません。
    • good
    • 0
この回答へのお礼

指摘して頂きありがとうございました。

お礼日時:2010/06/17 16:23

カウント用のflagをたてればOKです。

一度に100件取得して

$i=10; //区切りたい件数
while(~){
 処理~
 
 //最後に$iを-1する。0なら<hr>出力して、カウンタを10に戻す
 if(!--$i){echo "<hr>"; $i=10;}
}
    • good
    • 0
この回答へのお礼

ありがとうございます。
アドバイスを参考にして下記のようにしてみました。
ぱっとみたところうまくいっているのですが
おかしなところなどありますでしょうか。

$i=10; //区切りたい件数
while(~){
 処理~
 
$i = --$i;
if($i==0){
echo '<hr>';
$i = 10;
}

}


また、教えていただいたif(!--$i)の部分が分かりませんでした・・・
その点も教えて頂けると嬉しいです。

お礼日時:2010/06/17 01:42

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