こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

解決済みの質問

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

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>';
}

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

投稿日時 - 2010-06-16 20:36:13

QNo.5973518

困ってます

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

>おかしなところなどありますでしょうか。
「 $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.increment.php
※もちろん無理に省略する必要はありません。ご自分で分かりやすいのが一番です。

投稿日時 - 2010-06-17 09:24:48

お礼

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

投稿日時 - 2010-06-17 16:18:00

ANo.2

このQ&Aは役に立ちましたか?

15人が「このQ&Aが役に立った」と投票しています

回答(3)

ANo.3

$i = --$i;

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

投稿日時 - 2010-06-17 09:28:00

お礼

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

投稿日時 - 2010-06-17 16:23:34

ANo.1

カウント用のflagをたてればOKです。一度に100件取得して

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

投稿日時 - 2010-06-16 21:26:43

お礼

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

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

}


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

投稿日時 - 2010-06-17 01:42:37

あなたにオススメの質問