解決済みの質問
ほとんど、phpが分からず、人のコードを参考にして作った物をいじっています。
今回、どうしてもわからない事があるので質問しました。
item.csvとcate.csvからページを作成しています。
item.csvにデータを入れるのですが、バナータグを入れると
,"<a href=""http://・・・"" target=""_blank""><img src=""http://・・・"" border=""0""></a>",
このようになってしまい、上手く表示ができない状態です。(エクセルが原因と考えられます)
""を"に置き変えてちゃんと表示できるのようにしたいのですが、どのようにすればいいのでしょうか?
この問題点をクリアすればどうにかなりそうです。
すいませんが、どこをどのように直せばバナーが上手く表示できるようになるのでしょうか?
phpがほとんど分かっていない為、詳しく教えてください。よろしくお願いします。
<?php
$C=$_GET["c"]; //クエリからパラメータを取得
$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 = 1024; // 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"<head>\n";
print"</head>\n";
print"<body>\n";
for($i=sizeof($DATA)-1;$i>=1;$i--){ //$DATAの要素を一つずつ読み込みながら以下の処理を行う
$line=explode(",",$DATA[$i]); //1要素をさらにカンマで分解し配列に格納
if($line[1]==$C){ //もしパラメータとカテゴリ番号が一致すれば表示
//問題箇所:商品出力:バナータグやテキストリンクタグを入れると上手く表示できません
print"<table width='90%' class='shop'><tbody><tr><td align='center' width='20%'>{$line[3]}</td><td width='60%' colspan='2'><p>{$line[2]}<br>{$line[7]}</td></tr></tbody></table>\n";
}
}
}else{
print"<head>\n";
print"</head>\n";
print"<body>\n";
}
?>
</body></html>
投稿日時 - 2007-07-06 18:52:09
$DATA=file("item.csv"); //CSVファイルを1行1要素で配列に読み込む
を
$fp = fopen("item.csv", "rt");
while ($DATA[] = fgetcsv($fp)) ;
fclose($fp);
にするとcsvが自動的に処理されます
$DATA[ ]は , で explodeされた配列になるので新たに explode する必要はありません
for($i=sizeof($DATA)-1;$i>=1;$i--){ //$DATAの要素を一つずつ読み込みながら以下の処理を行う
$line=$DATA[$i];
if($line[1]==$C){ //もしパラメータとカテゴリ番号が一致すれば表示
投稿日時 - 2007-07-07 09:50:46
お礼
返事が遅くなりすいません。何とか解決いたしました。
それともう1つ質問していいですか?
上記のコードの場合
http://abc.com/c-1.html
とかになるのですが、間にカテゴリを1つ増やす何て事できるのでしょうか?
こんな感じ
http://abc.com/カテゴリID/c-1.html
ちなみにCSVデータには
cate.csv
カテゴリID,カテゴリ名,,,,,
item.csv
商品ID,カテゴリID,商品名などがあります。
もしよろしければ教えてください。よろしくお願いします!
投稿日時 - 2007-07-09 15:14:08
0人が「このQ&Aが役に立った」と投票しています
ベストアンサー以外の回答(1件中 1~1件目)
単純な文字の置換なら
$str = str_replace('""', '"', $str);
ですがexplode()ではなくちゃんとしたパーサを使った方がいいかと。
//$line=explode(",",$DATA[$i]);
$line=csv2values($DATA[$i]);
function csv2values
http://rabis.iblis.org/index.php?CSV
投稿日時 - 2007-07-06 19:40:14
お礼
ご回答ありがごうございます。
>$str = str_replace('""', '"', $str);
$line = str_replace('""', '"', $line);これで試した所、バナーは表示されるようになりました。
ただバナーの前後に " が表示されている状態です。
もう少しです。
>$line=csv2values($DATA[$i]);
こちらの方は今、時間がないので明日にでも試したいと思います。
ありがとうございました。
投稿日時 - 2007-07-06 20:57:45
OKWaveのオススメ
おすすめリンク