現在ラジオボタンでの選択後に条件分岐するスクリプトを製作しておりますが、if文で製作すると私の場合(駆け出しです。)およそ、見当もつかない位の時間がかかります。そこで皆様方の知恵を頂き開発時間の短縮が出来ればと思い投稿しました。よろしくお願いします。
<内容>
(1)値段表示はファイルを読み込んで表示します。200.txtなら、200円と表示です。
(2)前のページより田中、鈴木、小林の値をhiddenで送っています。鈴木さんが購入すると、田中さんより200円UP、小林さんだと、田中さんより300円UPにしています。
1.php
(下記のようにグダグダ長い文を書いていくのはあまりにも非効率のような気がしますので皆様方の知恵を拝借させていただきたいと思います。あつかましくて申し訳ございません。)
<?php
if(c=="田中" && a=="001" && b=="0"){
$file_name="200.txt";
$file=fopen($file_name,"r") or die("OPENエラー $file_name");
$string = fgets($file, 20);
echo $string;
}
elseif(c=="田中" && a=="002" && b=="0"){
$file_name="400.txt";
$file=fopen($file_name,"r") or die("OPENエラー $file_name");
$string = fgets($file, 20);
echo $string;
}
elseif(c=="田中" && a=="0" && b=="010"){
$file_name="600.txt";
$file=fopen($file_name,"r") or die("OPENエラー $file_name");
$string = fgets($file, 20);
echo $string;
}
以下省略
?>
No.3
- 回答日時:
慣れですかね。
。たとえば、三つの条件を一変に指定するので条件が多くなってしまうかと思います。
(1)値段表示はファイルを読み込んで表示します。200.txtなら、200円と表示です。
どうやって値段表示ファイルを選択するのかがわかりませんが。。。
たとえば$aが選択の基準ならば$aだけでif文を作ればよいのでは。
(2)前のページより田中、鈴木、小林の値をhiddenで送っています。鈴木さんが購入すると、田中さんより200円UP、小林さんだと、田中さんより300円UPにしています。
これは
$plus = 0; # プラス金額初期設定
if ($c == "鈴木") {
$plus += 200;
} elseif ($c == '小林') {
$plus += 300;
}
とかで、各条件を別々にすればいいのでは?
No.2ベストアンサー
- 回答日時:
こんにちは。
まず、変数$c とか $a とか $b って何でしょうか。変数に意味のある値を入れたいならば、それを読んでいる方に伝えたい場合は意味のある変数名にしてみてください。たとえば、
$c は、 $name ・・・名前を入れるんだなってわかりやすいですよね
$a は、 $count・・・カウント
$b は、 $no・・・商品番号を入れるだろうな
みたいな。
(もしくは$c は、田中さんの買った個数でしょうか。$a が鈴木さんが買った個数とか?)
それと、$a の値が1番目と2番目の if では3桁なのに3番目の if では "0" 一桁になっています。
さらに、$c の値が3つ目の if でいきなり "010"???になってるし $a が "0" に・・・。
この辺を3桁なら3桁に統一、もしくは全部、頭に「 0 」を「付けない」。といった統一する規則がないと開発期間を短くすることはほど遠いでしょう。
また、鈴木さんと小林さんはどこに出てきますか?
で、見た感じプログラムの覚えたての頃にやりそうな記述の仕方ですね。よって、慣れていけばそれなりに上手に書けるようになっていきます。まずは『プログラムになれること。』だと思います。
具体的に見ていくと、3つの if で、「 c == "田中" 」ってあるので、この3つの if の前に、
if ($c == "田中"){
if ( $a == "001" && $b == "0")
のように出来ます。次に、どの if後の処理にも
$file = fopen($file_name , "r") or die("OPENエラー" . $file_name);・・・・
と、ありますが、これは if群を抜けてからでいいんじゃないですか。具体的には、
---------------------- 質問に書かれていた処理を書き直すと -----------------------
if ($c == "田中"){
if ( $a == "001" && $b == "0") //マッチした後の処理が1行の時は「{」を省略できる
$file_name = "200.txt";
else if ( $a == "002" && $b == "0")
$file_name = "400.txt";
・・・・・・省略・・・・・・
} // if ( $c == "田中") の終了
//ファイルのオープンと読み込み
$file = fopen($file_name , "r") or die("OPENエラー $file_name");
$string = fgets($file , 20);
echo $string;
--------------------------------------------------------------------------------------
あと、 $a の値と、ファイルの名前に共通の部分があるなら、たとえば・・・if なんか使わなくても
$tmp = $a * 100;
$file_name = (string)$tmp . ".txt";
これだけで出来ます。
$c と絡ませたいのならそういった使い方にするような変数にする方が楽でしょう。
$tmp = $a * $c * 100;
$file_name = (string)$tmp . ".txt";
この辺は『慣れ』でしょうから、いきなり、と言うよりは徐々に書き直していくとよいと思いますよ。
そのうち、自分で定義した関数やクラスを書いて処理するようになるでしょう。
※なお、処理速度という点から見るのでしたら、function や classで汎用性を高くすると、利便性に反して処理は遅くなります。(メモリ上にある自分で定義した関数やクラスを呼び出す手間がかかるため)
この辺のどうやって処理させるかも、慣れれば自分流で出来るようになります。
ご回答ありがとうございます。ご回答頂いた内容に非常に満足しております。言葉足らずを補っていただき、また、具体的なソースを教えていただいて、本当に感謝しております。ありがとうございました。
所で理論演算子ですが、例えば
************************************************
$a==001 を基点に $b==0ならtrue $b==1ならtrueに
したいのです。$b同士は処理しません。
************************************************
このような理論演算子は存在するのでしょうか?下記に書いたものは &&とorですが、これはだめでした。もう少しお付き合いいただければと思います。よろしくお願いいたします。
if ($c == "田中"){
if ( $a == "001" && $b == "0" or $b == "1")
No.1
- 回答日時:
開発期間というか。
。。処理を短くしたいってことですよね。
同じ処理がある場合はfunctionを使います。
自分専用関数を作るイメージです。
頑張ってください。
#もっといい参考ページがあるかもしれません。
参考URL:http://ww7.tiki.ne.jp/~inabah/php/004_001.htm
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- C言語・C++・C# c言語の問題の説明、各所ごとに 5 2023/07/26 11:03
- PHP 画像が表示出来ません。 1 2023/02/02 16:30
- PHP PHPで画像の渡しが上手く行きません。 1 2023/02/02 09:39
- HTML・CSS CSSが効かずどのように指定すれば良いか分からないのでアドバイスお願い致します 2 2023/06/07 12:25
- CGI htmlからパラメータで、cgiに渡したい。 1 2023/02/06 16:15
- PHP PHP MySql 画像を取得 1 2022/06/04 14:05
- JavaScript clear機能を失わずにファイルアップロード機能を作成したい 3 2023/06/10 16:12
- その他(プログラミング・Web制作) セレクトボックスで選択された値をコントローラーで使用したい 2 2022/07/26 16:41
- Visual Basic(VBA) ExcelVBAに関する質問 3 2023/02/17 10:47
- C言語・C++・C# プログラミングの授業の課題です 1 2023/01/17 22:15
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
phpでPEAR::DBを使っているので...
-
phpでcookieがうまく保存されない
-
index.phpって何ですか? 具体...
-
index.phpに入るには、どうすれ...
-
PHP8を使うと、大量のWarningが...
-
PHPSpreadsheetを使って関数を...
-
アンドロイドスマホでのphp ech...
-
Postgresの特定のカラムからス...
-
PHPのエラーの解消法について教...
-
PHP MySql ページング
-
ECCUBE4のページ管理でPHPを実...
-
PHPで画像の渡しが上手く行きま...
-
ログインした掲示板ですが、直...
-
ここで言う空文字の意味とは?
-
PHP でメールフォームを作成したい
-
MySQLの配置が変わったため、db...
-
phpのクラスメソッドの定義が長...
-
phpでクラスのメソッドで同名の...
-
アマゾンのような評価の星を選...
-
SFTPなどは使わないホームペー...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
phpでcookieがうまく保存されない
-
なんでブラウザでPHPを動かすた...
-
PHP8を使うと、大量のWarningが...
-
ワードプレスサイト PHP8.0.25...
-
PHPSpreadsheetを使って関数を...
-
php 入力画面から確認表示画面...
-
PHPのエラーの解消法について教...
-
掲示板のセキュリティについて...
-
php 完了画面の送信メールのコ...
-
PHPのセッション有効期限について
-
掲示板を作成しておりアップロ...
-
PHPでCookieを使った訪問回数に...
-
PHPで画像の渡しが上手く行きま...
-
重複を防ぐ記述について教えて...
-
php 確認表示画面で値をSESSION...
-
ファイルアップロードに関して...
-
メールフォームのタイトルが文...
-
フォームで戻った際に入力済み...
-
PHPで訪問回数を表示するカウン...
-
アップロード画像数でCSSを分け...
おすすめ情報