今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で質問しましょう!
似たような質問が見つかりました
- MySQL MySQL,JavaScript,PHPコードの結果を表示する方法を教えてください。 1 2023/02/13 17:49
- Excel(エクセル) PHPプログラムをエクセルに張り付けると検索ボックスがでてくる! 3 2022/05/08 07:10
- MySQL SQL任意に並び替えをしたい 2 2023/08/28 10:47
- PHP if(preg_match("/[^0-9]/",$gu_d)){意味を教えてください。 1 2022/05/06 05:37
- PHP アップロードファイルの数に応じてCSSを動的に変更したいのですが、方法がわかりません 3 2023/07/23 21:59
- PHP PHP MySql ページング 2 2022/09/20 06:38
- PHP コメント機能に返信欄を矢印で追加したい 1 2022/05/09 21:17
- JavaScript ①入力フォーム→②確認表示画面→③送信完了画面のコードを書いているのです、 入力フォームから受け取っ 2 2022/05/10 16:45
- JavaScript html5に変えるとスライドショーが消えてしまった。 3 2022/03/26 19:53
- PHP HTMLのINPUTから画面表示 3 2023/04/04 21:34
関連するカテゴリからQ&Aを探す
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
HPを開くとダウンロードページ...
-
社内イントラネットのHPにアク...
-
訪問回数ごとに違うページを表...
-
階層の少ないページ作り
-
すごく初歩的な質問です
-
フォントの色を変えるには?
-
onedrive にexcelファイルをア...
-
Subversionのリポジトリの削除
-
拡張子php画像をjpg画像等に変...
-
PHPのif文でその処理を途中で抜...
-
バッチを用いたフォルダの自動移動
-
別ファイルの変数を呼び出した...
-
FTPコマンドでディレクトリごと...
-
form actionで二つ送信先を指定...
-
さくらレンタルサーバーでPHPが...
-
ftpでアップロードが出来ない
-
.phpと.incファイルの違いはな...
-
TSVファイルをCSV形式に変換したい
-
【file_exists】ファイルが存在...
-
別PHPファイルに変数を渡す
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
HPを開くとダウンロードページ...
-
index.phpって何ですか? 具体...
-
社内イントラネットのHPにアク...
-
phpで大量のhtmlを任意の順番で...
-
PHPでの複数ファイル出力
-
CGIでHTMLファイルのPHP部分を...
-
phpコードの戻り値をhtmlファイ...
-
ヒアドキュメントの中で別ファ...
-
HTMのファイルをPHPに変換す...
-
VScode文字の色の変更について
-
php excelダウンロード
-
public_htmlと同じ階層にあるフ...
-
拡張子をhtmlにすることのメリ...
-
PHPの結果をhtmlで保存する方法
-
トップページURLのみで下層ペー...
-
phpのheader関数でページ移動さ...
-
PHP プルダウンからの選択 ペ...
-
file_get_contentsでcss読み込み
-
file_get_contents()の動きが読...
-
includeで読み込んだ内容を変数...
おすすめ情報