スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

お気に入り動画の一覧表示をする仕組み(2)

今回はデータベースから検索したデータを表示する部分です。

さっそく該当部分のソースです。

$body = "";
$sqlStr = "SELECT id,vurl FROM fav_xvideos LIMIT " . $pageIdx . ",10";
$sql = $pdo->prepare($sqlStr);
$sql->execute();
while($row = $sql->fetch()) {
$id = $row['id'];
$vurl = $row['vurl'];

$body .= "<div>";
$body .= " <iframe src='http://flashservice.xvideos.com/embedframe/" . $vurl . "'";
$body .= " frameborder=0 width='400' height='320' scrolling=no></iframe>";
$body .= " <p><a href='db_del.php?id=" . $id . "'>削除</a></p>";
$body .= "</div>";
}
if ($body == "") {
$body = "動画が見つかりませんでした。";
}
$body .= "<hr/>";
if ($page > 0) {
$body .= "<a href='?page=" . ($page - 1) . "'>前へ</a> | ";
}
$body .= "<a href='main.php?page=" . ($page + 1) . "'>次へ</a>";


上から解説していきます。
$sqlStr = "SELECT id,vurl FROM fav_xvideos LIMIT " . $pageIdx . ",10";

というところがSQL文を作っているところです。文字をくっつけているだけですね。SQL文は、簡単に説明すると以下のような命令です。

SELECT 知りたい列 FROM テーブル名 LIMIT 検索結果を何番目から何個表示するか

最後に変数をくっつけているのは、前回やったページングのためのものですね。これは、データベースの中身を全部持ってきちゃうとすごい量になったりして表示にメモリを喰い過ぎ、最悪ブラウザが落ちてしまうのを防ぐためです。

今回executeには引数を渡してません。こういうやり方もある、ということで渡してないです。どちらでも構いません。やりやすい方で。僕は結構ごちゃまぜにします。統一するのは自作関数にまとめて、使う側の意志を入れないようにする時ですね。要は大規模な開発の時です。データベース関連は統一しといたほうがデバッグ(バグを探し、取り除く手順)が楽です。

そして、新しく登場するwhile文です。これもPHPの構文で、

while ( 条件 ) {
 繰り返す処理;
}

という形です。条件が一致(true)している間、処理を何度も繰り返す時に使います。前回のif文の条件と同じように、$rowに値がfalseにならない何かしらが入っていればtrueですね。今回は、fetch関数の戻り値です。

fetch関数も新しく登場です。

$row = $sql->fetch()

というように使ってます。prepare関数(SQL文を実行する準備を行ったものを返す関数)の戻り値に、fetch関数が含まれてます。execute関数で実際にSELECTの検索が行われますが、fetch関数は、検索で見つかった行のデータを1つずつ返してくれます。何度も呼べば、順番に次の行、次の行、という感じでデータを返し、データが見つから無くなったらfalseを返します。

そのため、whileループのところに入れると、検索で見つかったデータを1行ずつ処理したい時に便利です。

条件のところで関数の戻り値を入れるのが嫌いな人は次のようになります。

$row = $sql->fetch();
while($row) {
 処理
 $row = $sql->fetch();
}

同じ文を2回も呼ぶのは嫌だ!となると、while以外の構文を使うことで実現できますが、それはまた機会があれば説明します。

そして$rowに入る値ですが、今回は連想配列になります。

SELECT aaa,bbb FROM 〜〜

として列が見つかれば、$row["aaa"]、$row[”bbb”]にそれぞれデータが入ってきます。fetchの返す値は、どんなSQL文を実行していたかで変わってきます。

そして、そのデータをHTML文に入れています。これで、お気に入りの一覧が表示されるわけです。HTMLが何も作れなかったときは、if ($body=="")が成立するので、「動画が見つかりませんでした。」と表示しています。ここは別に無くても問題ありませんが、一応入れてみました。

最後に、「前へ」「次へ」を$bodyに入れてます。aタグのリンクでpageの指定をしているだけですが、括弧内でプラスしたりマイナスしているのは意味があります。括弧を付けないと、左から順番に文字連結の「.」が先に実行されてしまうので、おかしくなるのです。

プログラムでよく括弧「(」「)」が出てきますが、これは数学の括弧と同じように、括弧の中が先に処理されます。PHPに限らず、そういった仕様の言語が多いです。この仕様はよく使うので、覚えとくと便利ですが、プログラムが複雑になりやすい要員の一つでもあります。趣味のプログラムでは、自分が分かれば良いので、複雑になっても誰も怒ったりしませんので自由に作って行きましょう。


次回は、今回つけるだけ付けた「削除」リンクの機能を実装しましょう。
関連記事

コメントの投稿

非公開コメント

プロフィール

エロぺんぎん

管理人:エロぺんぎん
不純な動機でプログラマーになった男、エロぺんぎんです。ブラザー達を猛烈に応援したい気持ちと、自分もプログラマーとして成長したい思いで、当ブログを立ち上げました。
エロぺん動画を運営しております。

検索フォーム
Twitter
最新記事
最新コメント
カテゴリ
リンク
RSSリンク
エロぺん動画で人気の動画
人気の記事