トップページは画像一覧を表示。
fopenでdata.csvを読み込み、whileで1行ずつ$lineに配列で格納。
読み込まれた1行のカンマ区切りデータを$line[0]や$line[1]で出力する。
<?php
$f = fopen("data.csv","r");
while($line = fgetcsv($f)){
echo <<< eof
<a href="prev.php?id={$line[0]}"><img src="images/{$line[0]}.jpg" title="{$line[1]}"></a>
eof;
}
fclose($f);
?>
続いて個別の画像表示ページ。
トップページに並んだ画像をクリックすると個別ページに飛ぶ。
<?php
$flg = "2";
$id = intval($_GET["id"]);
$f = fopen("data.csv","r");
while($line = fgetcsv($f)){
$data[] = $line;
if($line[0] == $id){
$flg = "1";
$title = $line[1];
$number = $line[0];//IDを取得
$number_prev = intval($number - 1);//一つ前のIDを取得
$number_next = intval($number + 1);//一つ次のIDを取得
}
}
$data = array_reverse($data);
$title_prev = $data[$number_prev -1][1];
$title_next = $data[$number_next -1][1];
fclose($f);
?>
<?php include("header.php");?>
<title><?php echo $title;?> - サイトタイトル</title>
<?php include("header2.php");?>
<?php
if($flg == "1"){
echo <<< eof
<h2>{$title}</h2>
<a href="images/{$number}.jpg"><img src="images/{$number}.jpg" title="{$title}"></a>
<br>
<br>
eof;
}
?>
<?php
if(file_exists("images/{$number_prev}.jpg")){
echo <<< eof
<a href="prev.php?id={$number_prev}">◀ {$title_prev}</a>
eof;
}
if(file_exists("images/{$number_next}.jpg")){
echo <<< eof
<a href="prev.php?id={$number_next}">{$title_next} ▶</a>
eof;
}
?>
<?php
include("footer.php");
?>
1画像について1ページで表示させる。
次ページ、前ページなどページ送り機能もつけている。
while($line = fgetcsv($f)){ }
これだと1行ずつ読み込んで変数に入れて処理するから、1行前と後のデータが何だったのか残らない。 なのでわざわざ$data[] = $lineで配列に入れている。
そしてarray_reverseで逆順にして前後のタイトルを取得する。
続いてカンマ区切りのデータファイル(data.csv)
5,ページタイトル
4,ページタイトル
3,ページタイトル
2,ページタイトル
1,ページタイトル
1番目にid、2番目にタイトルをつけている。
imagesフォルダを用意して画像をアップロードする。
画像のファイル名は、
3.jpg
2.jpg
1.jpg
のように数字で連番でつける。
data.csvのタイトルと一致するように。
これで画像ギャラリーサイトの出来上がり。
画像を追加したい場合
- imagesフォルダに連番で名付けた画像をアップロードする。
- data.csvを更新する。
コメント