
今phpを勉強を始めて2ヶ月くらいです。
表示させたいhtmlが500個以上あります。
その500個を任意の順番で並び替えて全て表示させたいと考えています。
(任意とはラジオボタンなどで条件を選びフォームで送って・・ということです。一つ一つのhtmlがdivなどで区切られていると考えてください)
メモ帳にhtmlを記載して、それぞれ番号を割り振って、その番号を元にphpで並び替えさせ、foreachで回して全部表示させる・・ここまでは完成させました。ただhtmlをどう保存するのかがよく分かりません。(一つ一つが結構長いhtmlプログラムですし・・)
今はメモ帳にhtmlを記載し、phpで表示させる際にこのメモ帳を
指定しているのですが、メモ帳を何百個も作るのは無理ですし、普通htmlの保存はどのように
するのでしょうか?
どういった方法があるかアドバイスもらえるとうれしいです。
A 回答 (4件)
- 最新から表示
- 回答順に表示
No.4
- 回答日時:
ブログシステムのようなものを作りたいということでしょうか。
方法としては、その1~500まであるPHPファイル(内容はテーブルタグの1つの記事、ってことですよね)
とは別に、ファイルの番号に連動する形のタグを列挙したCSVファイルでも作ってみてはいかがでしょう。
■tags.csv
(番号),(季節),(日時),(場所)だとして
1,春,20130909,北海道
2,夏,20130801,東京
3,冬,20121010,長野
・・・・
みたいに。
で、絞込フォームで、該当の記事を絞り込むとして、表示は10件表示ってことなんでしょうか。
<?php
$data = file('tags.csv'); //file関数で1行毎に配列にする形で開く。
$result = array(); //結果取得用の配列
foreach($data as $datum){
$datum = rtrim($datum); //改行くっついてくるので改行を削除
list($no, $season, $date, $place) = explode(',', $datum); //「,」で文字列をバラバラにしてlist内にある変数にいれる。
//POSTされた絞り込み種別によって振り分けをしながら、
//適合する記事の内容のみ$resultへ代入していく
if($_POST['sh_season'] == $season){
$result[] = array($no, $season, $date, $place);
}
}
//で最終的に、絞り込みの並べ替えを昇順/降順でどのキーでそうするのかをチェックの上、
//usort関数あたりで任意の並び順で並べ替える。
if($_POST['st_date'] == 'desc'){ //例えば何か日付を降順に、とかだったとして、
usort($result, 'date_sort');
}
//並べ替えたら上から10件とか適当に表示
foreach($result as $item){
echo file_get_contents($item[0] . ".php"); //配列の先頭の番号が記事のファイル名に連動。
}
//$resultの日付を降順に並べ替える関数
function date_sort($a, $b){
if($a[2] == $b[2]){
return 0;
}
if($a[2] > $b[2]){
return -1;
}
return 1;
}
かなりざっくり書くとこんなかんじでしょうか。
ただ、全部台無しにする話ですが、データベースを勉強されたほうが、建設的です。
データベース使えば、これらの実装がかなりスッキリ書けます。
No.3
- 回答日時:
> htmlを表示させるだけならphp直接記入すればいいと思いますが、
> それぞれのhtmlに番号を振ってその番号を元に並び替えプログラムを作りましたので・・。
複数のhtmlファイルを同時に出力するのも、phpで直接かけますよ。
その都度htmlファイルをfile_get_contents()で読み込む
なりして、出力すればいいだけなので。
サーバ側に、500個以上のhtmlファイルが事前に用意されているわけではないのですか?
なんだか、今あなたが実装した方法について、あまりイメージが湧かないです・・・。
この回答への補足
>>複数のhtmlファイルを同時に出力するのも、phpで直接かけますよ。
その都度htmlファイルをfile_get_contents()で読み込む
なりして、出力すればいいだけなので。
とりあえずは希望通りの結果は出たのですが、素人目に見ても、このような表示方法はおかしいだろう・・というのが感想です。
行いたい事は、
例えばウェブサイトでテーブルで囲まれた文字があったとします。それが500個以上あると
考えてください。テーブルの内容は全て異なります。
ラジオボタンなどを使い、フォームで値を飛ばして、phpで並び変えてこの500個のテーブル
ごと並び変えて表示させたい・・というのが希望です。(テーブルの内容は自分でとった写真とコメントです。それが季節順、日付順、場所などで絞り込めるようなサイトを作りたいのです)
自分で考えてやってみたのはまず、テーブルの中にコメントと画像を入れたhtmlファイルを10個作り、それぞれ1~10番まで名前を付けます。(拡張子はテキストでもphpでもhtmlでもなんでもいいですがとりあえず今回はphpとします)
それで次に下記みたなのを10個作って、フォームでもらった値に従い、
foreachで回しながら削除や並び変えをして該当したものを全部表示します。
$abc["1"]["bb0"]="natu";
$abc["1"]["bb1"]="20130909";
$abc["1"]["bb2"]=file_get_contents(ファイル名/1.php)
$abc["2"]["bb0"]="haru";
$abc["2"]["bb1"]="20110401";
$abc["2"]["bb2"]=file_get_contents(ファイル名/2.php)
とりあえずこれで自分のやりたい事はできているのですが、まだ私はphpを初めて数十時間
でして、結果的に上記のやり方くらいしか思いつきませんでした。
テーブルが今後どんどん増えそうなのですが普通上記のやり方以外にどのような
やり方があるのでしょうか?
No.2
- 回答日時:
>今はメモ帳にhtmlを記載し、phpで表示させる際にこのメモ帳を
>指定しているのですが
一般的には「メモ帳」というのは(Windows標準の)アプリケーションソフトの名前です。テキストを保存したのであれば、それは「テキストファイル」です。
>foreachで回して全部表示させる・・ここまでは完成させました。ただhtmlを
>どう保存するのかがよく分かりません。
普通は「保存しません」。何度アクセスがあってもforeachで回して表示させます。foreachで回して表示すべきケースなのでそう書くのです。保存する必要があるのなら、ローカルでテキストファイルを結合させてアップロードすべきです。
まぁphpスクリプトで(foreachで回して)表示させた内容をブラウザ側で保存して使ってもいいですけどね(別途アップロードするのは一緒)。
#出力制御でファイルへの書き出しも出来なくはないですが、
#どうも「それ以前」の問題のように思います(汗
No.1
- 回答日時:
なんかよくわかりませんが、htmlを表示させたいのに、
なんで保存する必要があるのでしょうか?
すでに500個以上のhtmlファイルが存在するので、
PHPで複数のhtmlファイルを読み込み、それを連続して
出力させる、というように解釈しましたが、間違ってますか?
この回答への補足
PHPで複数のhtmlファイルを読み込み、それを連続して
出力させる
その通りです。もう少し正確に言うと任意の順番で連続して表示したいと考えています。
htmlを表示させるだけならphp直接記入すればいいと思いますが、それぞれのhtmlに番号を振ってその番号を元に並び替えプログラムを作りましたので・・。
(日付順、季節順などで表示順を任意に並び替えます)
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
ヒアドキュメントの中で別ファ...
-
ワードプレスのhtmlファイル名...
-
社内イントラネットのHPにアク...
-
PHPでのindex.htmlの生成ができ...
-
サーバーに送られたデータを計...
-
文系でHTMLしかわからない者です。
-
HPを開くとダウンロードページ...
-
PHPファイル内でCSSが反映されない
-
PHPのSEO
-
phpコードの戻り値をhtmlファイ...
-
file_get_contents()の動きが読...
-
phpのheader関数でページ移動さ...
-
HTMLファイル内の行数を指定し...
-
PHPのアップロードについて。FF...
-
そろそろお願いします
-
htmlを含まないphpファイルにも...
-
そのページ内のある箇所のコン...
-
htmlのテンプレートの使いまわし
-
PHP 正規表現について教えて下さい
-
jsファイルがうまく読み込めない
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
グーグル検索について
-
フォルダ内のHTMLにランダ...
-
DBのデータをHTMLファイル...
-
PHPについて質問です。
-
PHPファイルをHTMLにリネーム
-
file_get_contents()の動きが読...
-
階層の少ないページ作り
-
ポータルサイト構築
-
あるマルチバイト文字が表示さ...
-
PHPでの複数ファイル出力
-
PHPとhtmlの関係
-
index.phpって何ですか? 具体...
-
社内イントラネットのHPにアク...
-
拡張子をhtmlにすることのメリ...
-
PHPスクリプト実行後に別URLを...
-
Smartyの検索エンジンとの相性は?
-
埋め込み型スクリプトでhtmlの...
-
Google Analyticsのモバイル用
-
phpのheader関数でページ移動さ...
-
VScode文字の色の変更について
おすすめ情報