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

PHPはほとんど初心者ですが、よろしくお願いします。

カテゴリページでデータがある場合の表示ですが、逆順で表示させたいと思っています。

いろいろ調べてarray_reverse()を使えばいいそうですが、どのように書けばいいかわかりません。

見にくいですが、よろしくお願いします。


<?php
$C=$_GET["c"];//クエリからパラメータを取得
$ID=$_GET["id"];//クエリからパラメータを取得(アイテム)
$DATA=file("item.csv");//CSVファイルを1行1要素で配列に読み込む
$CAT_DATA=file("cate.csv");//カテゴリ用CSVファイルを読み込む


//CSVファイルからページデータを獲得する関数
//@引数 $id :ページID
//@戻り値 array :ページデータ
//(該当するIDがなければ空の配列を返す)

function getPageRecord ( $id )
{
$filename = 'cate.csv'; // CSVファイル名
$maxlen = 10240; // 1行の最大長(バイト)


$record = array();
if ($fp = fopen($filename, 'r')) {
while ($rec = fgetcsv($fp, $maxlen, ',')) {
if ($rec[0] == $id) {
$record = $rec;
break;
}
}
fclose($fp);
}
return $record;
}

//ページデータ獲得
$page = getPageRecord($_GET['c'])


//獲得したデータのレイアウト(カテゴリページ用のトップ)
?>
<?php
if($C){
print"<!DOCTYPE HTML PUBLIC '-//W3C//DTD HTML 4.01 Transitional//EN'>\n";
print"<html lang='ja'><head>\n";
print"<meta http-equiv='Content-Type' content='text/html; charset=Shift_JIS'>\n";
print"<meta http-equiv='Content-Style-Type' content='text/css'><title>$page[7]</title>\n";
print"<meta name='description' content='$page[4]'>\n";
print"<meta name='Keywords' content='$page[5],$page[6],'>\n";
print"<link rel='stylesheet' href='shop.css' type='text/css'>\n";
print"</head>\n";
print"<body>\n";
include("ninjya.txt");
print"<p class='b'>$page[2]</p>\n";
print"<div id='box'>\n";
print"<div id='hed'>\n";
print"<div class='sitemame'><p> サイト名</p></div>\n";
print"</div>\n";
print"<div id='navi'>\n";
print"<div class='navibody'><A href='url'>ホーム</A>&gt;<a href='index.html'>サイト名</a>&gt;{$page[1]}</div>\n";
print"</div>\n";
print"<div id='main'>\n";
print"<div class='mainbody'>\n";

//パラメータがある場合の処理(カテゴリ別のページを表示)
print"<h1>{$page[1]}</h1>\n";
for($i=0;$i<sizeof($DATA);$i++){//$DATAの要素を一つずつ読み込みながら以下の処理を行う
$line=explode(",",$DATA[$i]); //1要素をさらにカンマで分解し配列に格納
if($line[1]==$C){//もしパラメータとカテゴリ番号が一致すれば表示

print"<table width='90%' cellspacing='10'><tbody><tr><td width='20%' rowspan='2'><a href='{$line[2]}'><img src='{$line[3]}' border='0' height='80' alt='{$line[4]}'></a></td>\n";
print"<td width='60%'><a href='{$line[2]}'>{$line[4]}</a>\n";
print"</td>\n";
print"<td width='20%'>\n";
print"<span class='nedan'>{$line[5]}円</span></td>\n";
print"</tr><tr><td width='70%' colspan='2'><a href='item-{$line[0]}.html' title='{$line[4]}'>&gt;&gt;詳細</a></td></tr></tbody>\n";
print"</table>\n";

}
}

}

A 回答 (5件)

あっと・・・



for($i=sizeof($DATA)-1;$i>=0;$i--){

に変更してください。
    • good
    • 0
この回答へのお礼

何度もお返事ありがとうございました。成功しました!
本当に感謝です!

お礼日時:2007/06/11 14:51

index.phpの63行目はちゃんとみましたか?



括弧の数がちがっていたり、行末に「;」が抜けていたりしませんか?
前回の回答でもかきましたがそういう「ケアレスミス」の可能性が大です。

この回答への補足

すいません確認ですが、

for($i=0;$i<sizeof($DATA);$i++){//$DATAの要素を一つずつ読み込みながら以下の処理を行う
$line=explode(",",$DATA[$i]); //1要素をさらにカンマで分解し配列に格納
if($line[1]==$C){//もしパラメータとカテゴリ番号が一致すれば表示

これを

for($i=sizeof($DATA)-1;$i>=0);$i--){   //$DATAの要素を一つずつ読み込みながら以下の処理を行う
$line=explode(",",$DATA[$i]); //1要素をさらにカンマで分解し配列に格納
if($line[1]==$C){//もしパラメータとカテゴリ番号が一致すれば表示

このように変えればいいのですよね。(まちがっていたらすいません)

ちなみに前のままではちゃんと表示できています。

補足日時:2007/06/11 13:22
    • good
    • 0

ためしに、テストデータをつくって


「for($i=sizeof($DATA)-1;$i>=0);$i--){」でやってみましたが
問題なく表示されました。おそらく、なんらかのケアレスミスではないですか?

>試してみましたがエラーがでました。

エラーの内容を転記してください。
    • good
    • 0
この回答へのお礼

わざわざ試していただきありがとうございます。

エラーですが、このようなものが表示されています。
Parse error: syntax error, unexpected ')', expecting ';' in /home/~/index.php on line 63

お礼日時:2007/06/11 12:46

試していませんが、


for($i=sizeof($DATA)-1;$i>=0);$i--){ //$DATAの要素を一つずつ読み込みながら以下の処理を行う
    • good
    • 0
この回答へのお礼

ご回答ありがとうございます。
for($i=0;$i<sizeof($DATA);$i++){ //$DATAの要素を一つずつ読み込みながら以下の処理を行う の部分を
for($i=sizeof($DATA)-1;$i>=0);$i--){ //$DATAの要素を一つずつ読み込みながら以下の処理を行う で試してみましたがエラーがでました。
どうすれば・・

お礼日時:2007/06/10 20:02

まるなげすぎて要件がわかりづらいですね。



<?PHP
$array=Array(5,2,3,1,4);
$array=array_reverse($array);
print_r($array);
?>

とすれば出力が4,1,3,2,5となります。
こういうのが逆順ですが、やりたいことはどういうことなのでしょう?
    • good
    • 0
この回答へのお礼

お返事ありがとうございます。

もともと私はPHPが出来ず、このプログラムも他の人から参考にしたものです。
参考までに
http://affblog.aki-f.com/?eid=176447#sequel
このページのサンプルになります。

http://affiliate.aki-f.com/blogdata/sample5/samp …
CSVにデータを追加すると下に追加されます。これを逆順にして、新しくデータを追加したものは上に表示されるようにしたいです。
そこでいろいろと調べてarray_reverse()で出来そうと分かったのですが、どこをどのように入れれば分からなく質問しています。
わかりづらくてすいませんがよろしくお願いします。

お礼日時:2007/06/10 18:21

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