質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

HTML

HTMLとは、ウェブ上の文書を記述・作成するためのマークアップ言語のことです。文章の中に記述することで、文書の論理構造などを設定することができます。ハイパーリンクを設定できるハイパーテキストであり、画像・リスト・表などのデータファイルをリンクする情報に結びつけて情報を整理します。現在あるネットワーク上のほとんどのウェブページはHTMLで作成されています。

Q&A

5回答

2175閲覧

HTML内にPHPの記述

jackie1993427

総合スコア66

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

HTML

HTMLとは、ウェブ上の文書を記述・作成するためのマークアップ言語のことです。文章の中に記述することで、文書の論理構造などを設定することができます。ハイパーリンクを設定できるハイパーテキストであり、画像・リスト・表などのデータファイルをリンクする情報に結びつけて情報を整理します。現在あるネットワーク上のほとんどのウェブページはHTMLで作成されています。

0グッド

0クリップ

投稿2016/01/07 10:11

編集2016/01/07 11:39

お世話になります。

先に、お恥ずかしいながらPHPの事は全くと言っていいほどわかりません...

HTMLとCSSベースでECサイトを運営しているのですが、
html内のclass名を変更して売り切れ表示にしていますが、
htmlを全くわからない人に更新をお願いしたいため、
PHPの利用を考えています。

html

1<div class="soldout"> 2</div> 3 4<div class="cart"> 5</div>

この二つを切り替えたく、
PHPを利用して、
"soldout"の部分と、"cart"の部分を切り替えられますでしょうか。

イメージとしましては、


product_a(商品A)=soldout
product_b(商品B)=cart
product_c(商品C)=cart

html

1<div id="shouhin_a"> 2<div class="ここが変化する(soldout)"> 3</div> 4</div> 5 6<div id="shouhin_b"> 7<div class="ここが変化する(cart)"> 8</div> 9</div> 10 11<div id="shouhin_c"> 12<div class="ここが変化する(cart)"> 13</div> 14</div>

というような感じです。
説明が上手にできないのですが...

わからない部分があれば質問していただければと思います。
宜しくお願いいたします。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

deadcode

2016/01/07 10:54

もう少し詳細に情報をいただくことはできますでしょうか? ・HTMLとCSSベースでECサイトを運営している こちらは完全にHTMLのみでサーバサイドのPHPなどは使われていないという認識でしょうか? もしくはEC-CUBEなどのプラットフォームを使っているのでしょうか? サーバサイドがPHPであるか、完全手動で更新しているかによってロジックや考え方が変わってくると思います。 余談ですが ・htmlを全くわからない人に更新 ここでPHPを利用する意図がよくわからなかったです。HTMLがわからないけどPHPがわかるということでしょうか?
KoichiSugiyama

2016/01/07 11:00

実現されたいことについて、なんとなくは伝わってきて、手段もいくつかは考え付くのですが、HTMLが判らない人にPHPで更新させる、というくだりがあるのでどういった意図なのかよくわからなくなります。 ECサイトということなので、データベース上の在庫が0になったら"soldout"にしたい、ということでしょうか?そういった点について、もう少し詳細な説明をしていただいた方が的確な回答が集まりやすいと思います。
jackie1993427

2016/01/07 11:07

すみません、修正依頼ありがとうございます。 HTMLとCSSのみで運営しています。 商品のリンクをクリックすると外部に飛んで、外部のCMSで商品の管理をしております。 こちらで運営しているのはインターフェス部分のみということになります。 ただ、商品の在庫状況により、手動でhtmlを修正していく事になります。 商品A=soldout 商品B=在庫あり というのが羅列された状態で そこだけ書き換えればいいというように、簡単にしたいなと思い、今回の方法を思いついた次第です。 出来れば在庫状況を変更するファイルを外部ファイルにしてやりたいなと思っています。 <?php $product_a = 'soldout'; ?> <?php echo '$product_a'; ?> のようなイメージでしょうか(すみません、わかりませんが...) 引き続き宜しくお願いいたします。
guest

回答5

0

何を持って切り替えの判断をするかということなのですが、売り切れかどうか?ですよね。

では、売り切れとはお使いのシステムでは、何を持って売り切れと判断されているかわかりますか?

在庫でしょうか?商品属性などでしょうか?

これがわかれば、条件分岐をいれるだけでしょうね。

といいますか、今までどうやって処理してきたのでしょうか?

HTMLとCSSベースでとありますが、システム化されていない、静的なページを手で書き換えていたのですか?

ECサイトとPHPと記載されていたので、現行でPHPでシステム化されていると思いましたが、だとするとそういったHTMLを、更新する運用というものは出来ないのではないか?と思いました。

仮にPHPでシステム化されていないのでしたら、先にシステム化するところから始まってしまうので、目的の割に大きなコスト(外注するならお金と時間)が必要になってしまいますよ。

現在のシステムについて、把握している事を記載されてはどうでしょうか?

規模に見合った解決策が貰えるかもしれませんよ。

投稿2016/01/07 11:19

NARH

総合スコア209

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

jackie1993427

2016/01/07 11:27

回答ありがとうございます。 上記の追記情報の追加返信に書きましたが、 商品の管理自体は外部のCMSで行っています。 インターフェースのみこちらで手動で更新しております。 規模がかなり小さいので運営上特に問題はない (問題がないと言ったら言い方が悪いかもしれませんが、 外部にリンクで飛ぶとそちらでは在庫切れという表記が出るので 商品販売の部分では問題がない) という状態です。 ですから、システム化の必要はありません。(外部業者のサービスを利用しているため)
NARH

2016/01/07 11:36 編集

サーバーはPHPが動くことは把握済みなのでしょうか? 運用担当者の方は、データファイルをダウンロードして書き換えてアップロードするという運用は大丈夫なのでしょうか? そのCMSは、web APIなどで、販売状態を取得できる様な仕掛けはありませんか? なんかPHPを使わなくてもjavascriptでもできそうに思えます。
jackie1993427

2016/01/07 11:41

PHPが動く事は確認済みです。 ファウンロードしてアップロードに関しては問題ありません。 CMSに関してはそのような機能がないようです。 javascriptでできるようでしたらそれでも構いません。 class名を一括で管理するだけですので、 お教えいただければと思います。 すみませんが、宜しくお願いいたします。
guest

0

在庫データファイルを編集してアップロードという形であれば、比較的簡単に実装可能です。

が、
一切PHPが分からない状態で実装されるのは

  • バグ発生時の修正
  • 脆弱性が発見された場合の対応(最悪、加害者になる)

などの理由からお勧めできません。

予算の関係もあるかと思いますが、
せめて仕様や設計については専門家に、その専門家が責任を持てる状態(つまり有料で)依頼することを
強く
お勧めします。

今回のケースであれば、やりたいことさえ明確になっていて、運用も想定されていれば
ランサーズ
等で依頼すれば5-10万円程度で実装まで請け負ってくれるところもあると思います。

責任は一切持てませんが、私が実装するとしたら以下の様な感じでしょうか。
運用/要件としては

  • 商品在庫の管理自体は手動/CMS側で行う(恐らく現在と同じ)
  • 商品在庫が「ある」商品IDの一覧を運用者が編集してアップロードする
  • 商品が増えた場合にルールに沿ってコピーと編集をすれば新商品についても扱える(商品項目そのものの追加はエラー発生時に責任を取れる人間のみが行う

という感じになるかと思います。

データファイルはこんな感じで在庫のある商品のIDのみを改行区切りで記述する。
在庫が無くなったらその行を削除して上書きアップロードする

shouhin_a shouhin_c

PHP側は

PHP

1<?php 2//商品ページの先頭でデータファイルを読み込んで配列の格納 3$stock_list = explode(PHP_EOL,file_get_contents('データファイルのパス')); 4?> 5<div id="shouhin_a"> 6<?php 7//商品を増やす場合はshouhin_a部分を編集して以下をコピー 8if(in_array("shouhin_a",$stock_list)){ ?> 9<div class="cart"> 10<?php }else{ ?> 11<div class="soldout"> 12<?php }?> 13 14</div> 15</div> 16 17<div id="shouhin_b"> 18<?php 19if(in_array("shouhin_b",$stock_list)){ ?> 20<div class="cart"> 21<?php }else{ ?> 22<div class="soldout"> 23<?php }?> 24 25</div> 26</div> 27 28<div id="shouhin_c"> 29<?php 30if(in_array("shouhin_c",$stock_list)){ ?> 31<div class="cart"> 32<?php }else{ ?> 33<div class="soldout"> 34<?php }?> 35 36</div> 37</div> 38

という感じで出来るかとは思います。

在庫データファイルと商品リストデータファイルを別に持って、
商品の増減時にもデータファイルを編集するだけで良いようにすることも可能ですが
言い出したら切りが無いですね。

投稿2016/01/07 12:24

tanat

総合スコア18713

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

iPhone からですと、Teratail 使いづらいな。。(別コメントになってしまいました。)

PHPでも充分できますが、javascriptでも、サーバーに商品情報と販売状態を羅列した json 形式のデータファイルを置いて、scriptタグでインポートし、該当箇所をjqueryかなんかで、置換する方法もあります。

json 形式で書かなければならない制限がありますので、HTMLの修正が出来ない方でしたら、もしかしたらダメかもしれませんね。

{ goods_id: "goodsA", status: 1}

こんな形で商品数分羅列しておき、status が、1なら販売中、0なら売り切れのように決めておいて。

キャッシュされちゃうから、だめかなぁ。

PHPでも似たようなもんですが、データ形式を決めて、PHPで、データを読み込み、動的に出力することになりますが、商品単位なので、商品のdivブロックごと動的にする必要があります。

他の要件がなければ、PHPが書ける人なら1日あれば、書けるでしょう。
学生アルバイトでもできると思います。

Tertail にも居るようですが、プログラマを目指す方がいますから、いくばくかのアルバイト料を払って、プログラムの修正があるときだけでもメンテナンスさせて実績をつむチャンスを与えてはいかがですか?

投稿2016/01/07 12:03

編集2016/01/07 13:01
NARH

総合スコア209

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

商品のリンクをクリックすると外部に飛んで、外部のCMSで商品の管理をしております。 こちらで運営しているのはインターフェス部分のみということになります。

修正依頼のやり取りを拝見しましたが、この部分が既に普通では無いと思います。
「Yahooショップや楽天のような一体型のECサービスで販売は行われており、インターフェースページもそこには存在するが、表現上の制約などがあり不便なため別途自前でも商品一覧ページを作成しており、情報同期は人力で行っている」といった感じでしょうか?

もしこれでしたら、普通はCMS側に商品情報を発信するAPIがあるはずなので独自作成する商品ページも人手を介することなく自動更新されるように作れるはずです。
しかし、そうはしておらず、「ページはCMSとは完全に独立しており、情報更新は人がECページを目で確認してHTMLに手作業で反映している」といったシチュエーションで回答します。

PHPを利用して、 "soldout"の部分と、"cart"の部分を切り替えられますでしょうか。

product_a = "soldout";
product_b = "cart";
product_c = "cart";
人力修正をHTMLではなく上記のデータの変更にし、ここを変更すればページに結果が反映されるようにしたい。といったような事なら(上記の情報が何らかの形で提供されるなら)、PHPに限らずjavascriptでもなんでも「可能」です。ただしそういうデータを受けてHTMLを生成するプログラム(非常に簡単なものですが)は別途作成する必要があります。
これが現地スタッフに可能か?また具体的にはなにをどうすれば良いのかというのは別の話になってきます。
それにこのような対応は泥縄的で将来に大きな問題を起こしそうな、あまり推奨できない方法でもあります。
もし売り上げも殆どなく、情報更新も月に1回ほど行われれば良く、商品量も少ないならば、担当者をHTML修正が出きるように教育するのが一番コストが低いかも知れません。
もしコストを掛けても良い案件なのなら、CMSからのAPIを介した自動更新ページの開発を検討してみるのが良いのかも知れません。

投稿2016/01/07 11:52

hirohiro

総合スコア2068

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

追加・修正依頼の回答ありがとうございます。
NARHさんが仰っている通り、不安な部分も何点か、更に確かにPHPじゃなくてもJavascriptでも同様のことができると思います。

サーバ要件としてPHPが動く環境であることを前提にお話をさせてください。

html

1<?php 2 3 // shohin_status list 4 // cart ... 在庫あり 5 // soldout ... 売り切れ 6 7 $shouhin_a_status = "soldout"; 8 $shouhin_b_status = "cart"; 9 $shouhin_c_status = "cart"; 10 11?> 12 13 14<div id="shohin_a"> 15<div class="<?php echo $shouhin_a_status; ?>"> 16</div> 17</div> 18 19<div id="shouhin_b"> 20<div class="<?php echo $shouhin_b_status;?>"> 21</div> 22</div> 23 24<div id="shouhin_c"> 25<div class="<?php echo $shouhin_c_status;?>"> 26</div> 27</div>

これで実現できるのではないでしょうか。
※ファイル名をhoge.phpに書き換える必要があります。
これが求めていることかはわかりませんが・・・

上部で変数を定義し、
それをclass以下でechoして出しているだけです。

statusを定義しておいて、それを各商品のClassで変えてもいいのですが、、、
それだとPHPにする意味がなく、classを手動で変更するのと一緒ですからね・・・

直接Classを変えたほうが本当は手間がかからないと思いますが。

投稿2016/01/07 11:48

編集2016/01/07 11:56
deadcode

総合スコア216

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

jackie1993427

2016/01/08 01:29

回答ありがとうございます。 index.html上の作業になるので、ファイル名をPHPに変更するのは難しいかと思うのですが、indexにリダイレクトでもかければ大丈夫でしょうか。
deadcode

2016/01/08 01:38

それであれば.htaccessを編集することは可能でしょうか。 拡張子が.phpでなくても.htmlのままでphpを実行するには ``` AddType application/x-httpd-php .htm .html ``` 上記を追記することによって拡張子 .htm .htmlでも実行可能になります。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問