スレッド表示 | フラット表示〕 全トピック 920 件中 187 番目 次≫ ≪前

データの取り出しで・・・?

created: 2006-09-22 13:42 | modified: 2006-09-24 10:42 | reply: 5

[3375] データの取り出しで・・・?

user: 里美 | created: 2006-09-22 13:42
PHPはまだ3日目の超初心者です。よろしくお願いします!

ネットで調べて
http://affblog.aki-f.com/?eid=166018#sequel

このブログを見つけました。

CSVファイルからページを作る。と言う物なのです。

すごく便利だと思い、今作っていますが思わぬ所でつまずいてしまいました。

それはメタタグをいれるのにどうやってデータを取り出せばいいか全くわからないのです。

添付されているCSVファイルの一行目にdescriptionとKeywords1、Keywords2って感じで追加していろいろと試したのですが、上手くいきませんでした。

そこで質問ですが、メタタグのdescriptionとKeywordsを取り出したいのですが何をどのようにすればいいのか教えてください。

すごくわがままな質問ですいません。よろしくお願いします。
reply: 3376 返信 編集 削除

[3376] Re. データの取り出しで・・・?

user: ゆうじ | created: 2006-09-22 22:57
こんばんわ。

> 添付されているCSVファイルの一行目にdescriptionとKeywords1、Keywords2って感じで追加していろいろと試したのですが、上手くいきませんでした。

なにがわからないのかピンとこないのですが
この「いろいろ」って、どんなことを試して、
どういう結果になったのでしょうね。
ココが一番肝心なところですんで、
省かず書いてもらうとアドバイスしやすいですね。
Parent: 3375  reply: 3377 返信 編集 削除

[3377] よろしくお願いします!

user: 里美 | created: 2006-09-22 23:27
お返事ありがとうございました。

上手く説明出来なくてすいません。

サンプルファイルはタグが含まれているためここには書けませんが添付されたCSVには

カテゴリ番号,商品名,価格,コメント,,,,
1,商品1,1000,コメント,,,
1,商品2,2000,コメント,,,
2,商品3,1500,コメント,,,
2,商品4,3500,コメント,,,
3,商品5,1800,コメント,,,
4,商品6,500,コメント,,,
4,商品7,3000,コメント,,,
4,商品8,2500,コメント,,,
5,商品9,1000,コメント,,,
5,商品11,800,コメント,,,
5,商品12,2800,コメント,,,
5,商品13,900,コメント,,,

このようになっていました。

サンプルのPHPを実行すると全てのページのタイトルが
タイトルタグが「CSVからデータを読み込む」になってしまいます。

また、メタタグなども各ページに違う物を入れたいと考えていますが何処をどのようにすればいいかわかりません。
(たぶん、カテゴリ用のCSVを用意すればいいと思うのですがどうすればいいものか?・・・)

PHPがほどんど初心者で少しは調べろとか言われそうですがご指導のほどよろしくお願いします。
Parent: 3376  reply: 3378 返信 編集 削除

[3378] CSVのデータをページにレイアウトする

user: ゆうじ | created: 2006-09-23 02:46
サンプルを拝見すればそのプログラムのことはわかりますが、
投稿内容を読む限りでは、
そのプログラムの何がわからないのかが見えてこないのです。
PHP文法や関数の使い方、プログラムの仕様、処理の流れなど
いろいろ考えられます。
里美さんが、実際にどこをどのようにいじって、
どうなったのか(表示されないとかエラーが出たとか)がわかれば、
何がわかっていて、何がわからないのか見えてくるので
伝えるべきポイントが絞れます。
わかることを書いてもらうのも判断材料になります。
次はがんばって表現してみてください。

以下、想像して考えたサンプルです。
わからないところはまた聞いて下さい。


【1】データ構造を設計する
まずは、そのページデータの構造を決め、
CSVファイルを作ることからはじめましょう。

description や Keywords などのデータの他に
ページを一意に特定するページIDが必須です。

(Exp)
id, title, description, keywords

# とりあえずこの4項目を1ページ分のデータとして
# サンプルのCSVファイルを作ってみました。

-- pagedata.csv
1,"PHPの基礎体力","PHPの入門者&初心者向けの情報","PHP,基礎,予備知識,スクリプト,プログラミング,言語"
2,"PHPの基礎体力掲示板","PHPの基礎体力の意見交換&質問掲示板。","PHP,BBS,掲示板,フォーラム"
3,"PHPのインストール","PHPの基礎体力の意見交換&質問掲示板。","PHP,インストール,Windows"


【2】CSVファイルの読み込みとデコード処理
次に、このCSVファイルを読み込み
PHPで扱いやすいよう配列に格納する処理を考えます。

# ひとつのページで必要なのは、
# 1行(1ページ分のデータ)だけなので、
# 任意のページデータが取り出せるよう
# 関数化することにします。
# id が 1 のページデータを獲得したければ
# $page = getPageRecord(1); とすれば
# 以下のように参照できる仕様とします。
# $page[0] ← id
# $page[1] ← title
# $page[2] ← description
# $page[3] ← keywords


【3】HTMLにレイアウト
次に、実行するスクリプトに、
上記のページデータを獲得する処理と
HTMLへのレイアウトを記述します。

-- index.php
<?php
/*
* CSVファイルからページデータを獲得する関数
* @引数 $id :ページID
* @戻り値 array :ページデータ
* (該当するIDがなければ空の配列を返す)
*/
function getPageRecord ( $id )
{
$filename = 'pagedata.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['p'])

/*
* 獲得したデータのレイアウト
*/
?>
<html>
<head>
<title><?php echo $page[1] ?></title>
<meta name="description" content="<?php echo $page[2] ?>">
<meta name="keywords" content="<?php echo $page[3] ?>">
</head>
<body>
<!-- 確認のためbodyにも表示 -->
<p>id : <?php echo $page[0] ?></p>
<p>title : <?php echo $page[1] ?></p>
<p>description : <?php echo $page[2] ?></p>
<p>keywords : <?php echo $page[3] ?></p>
</body>
</html>


【4】実行
上記 pagedata.csv と index.php を同じディレクトリに置いて
ブラウザから次のリクエストを発行すれば、
id が 1 のページが表示されます。

http://localhost/index.php?p=1


流れがわかりやすいよう処理を簡素化しています。
本来なら、$_GET['p'] の値が整数かどうか確認する処理や
id に該当するページデータがない場合の処理、
なども盛り込むべきです。


# 尚、この掲示板はコードを書いても平気です。
# 〈codef〉?コード?〈/codef〉
# で囲むと綺麗にレイアウトされます。
# "〈" と "〉" は、実際には半角記号です。
(例)
〈codef〉
http://localhost/index.php?p=1
〈/codef〉
これがこうなります。
http://localhost/index.php?p=1
Parent: 3377  reply: 3379 返信 編集 削除

[3379] だいたい解決したのですが・・・

user: 里美 | created: 2006-09-23 20:54
ゆうじ様へ

大変、ありがとうございました。
思っていたことが出来ました。

感謝、感謝です!

PHPをほとんどわかっていない私でしたがなんとか出来そうです。


それと質問ついでにもう1つお聞きしたいのですが、よろしいですか?


作ったファイル名が

index.php

とします。

このファイルをアップすると

http://1234/abc/index.php

になるとします。

各ページには

http://1234/abc/index.php?c=2
などindex.php?c1?

こんな感じになります。

.htaccessを使うと
http://1234/abc/index.php?c=2 が

http://1234/abc/c2.html

とかになるのようなのですが、
こんな事ってできるのでしょうか?

動的ページを静的ページにするらしいのですが
私には出来ません。

たびたび申し訳ありませんが教えてください。

よろしくお願いします。
Parent: 3378  reply: 3380 返信 編集 削除

[3380] 解決しました!

user: 里美 | created: 2006-09-24 10:42
ゆうじ様

.htaccessファイルに

RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^c-([0-9]+).html+ index.php?c=$1

これをいれたら無事解決しました。

今回は本当にありがとうございました。
Parent: 3379  返信 編集 削除
スレッド表示 | フラット表示〕 全トピック 920 件中 187 番目 次≫ ≪前
ページの一番上へ
Googleグックマークに登録 Yahooグックマークに登録 livedoorクリップに登録 @niftyクリップに登録 はてなブックマークに登録 deliciousに登録 Buzzurlに登録 FC2ブックマークに登録
最近更新された掲示板トピックス
管理人Blog
Yahoo Search

最近更新したNote
PHPマニュアル
今日のブックマーク
PHPマニュアル関数検索
関数名を入力し検索ボタンをクリック↑