ページめくりの問題
Smarty を使用して Web サイトを構築していると、最近このような問題に遭遇しました。それは、写真を 1 枚ずつページめくり (前ページ、次ページ) する問題です。画像の名前はデータベースに保存され、画像 ID が主キーとなり、自動的に増加するように設定されます。ページ上で「次のページ」をクリックすると次のページにリンクし、動的に変数(画像ID)を渡して次の画像を呼び出します。ただし、バックグラウンド管理中に一部の写真が削除され、データベース内の写真 ID が不連続になる可能性があります。では、ループで読み込む場合、ID の大きい順に写真を読み込むにはどうすればよいでしょうか。
php のコード:
$row=$GLOBALS['db']->getone("SELECT * FROM ".$db_prefix."project where project_id='$id'");
if ($row){
$project['id']=intval($row['project_id']);//ピクチャ ID
$project['up_id']=intval($row['project_id' ]+1);
$project['down_id']=intval($row['project_id']-1);
$project['pro_name']=$row['proj_name'];
$project['pro_pic']=$row['proj_pic'];//ピクチャ名
$project['pro_declare']=$row['proj_declare'];
$project['pro_class'] =$row['proj_class'];//画像の種類は全部で2種類あります
}
$smarty=new Smarty();smarty_header();
$ Smarty-> assign('project',$project);
$smarty->display('projectdetail.html');
projectdetail.html のコード:
最初のページ
前のページ
< ! --{if $project.id==$min}-->
最後のページ
次のページ
主キー ID は自動的にインクリメントされるように設定されています。この時点でデータベース内の画像が削除された場合、ID は連続しなくなり、$project['up_id'] と $project['down_id'] が実行できなくなる可能性があります。正しい写真にリンクするには
-----解決策--------------------------
不連続な ID の場合、Simple
$project['up_id']=intval($row['project_id']+1);
$project['down_id']=intval( $row['project_id']-1);
代わりに、処理のために project_id の上下に 1 つのレコードをクエリする必要があります (合計 3 レコード)。
------解決策---------