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

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

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

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

解決済

私のコードをチェックしていただけませんか。回答(クラスやセッション、POST/GETの利用方法や動作条件について)

Junya42
Junya42

総合スコア0

PHP

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

1回答

-7評価

1クリップ

849閲覧

投稿2019/08/20 01:42

編集2022/01/12 10:58

#至らない点を教えていただきたいです。
分量が多くなってしまうので、ご迷惑をおかけします。
もし可能であれば、コードをみて、ここ変じゃない?こうしたら?
というようなアドバイスを頂けたらと思います。

飲食店の注文システムを作りました。

↓3つがお客様が使用する画面側
2つがお店の人が管理する側です。

index.php

php

<?php class DB { function dbconnect() { try { return new PDO ('省略'); //SQLinjection対策、けど最近はディフォルトらしい⇒ array(PDO::ATTR_EMULATE_PREPARES => false) } catch (\Exception $e) {      exit('データベース接続失敗。'.$e->getMessage()); } } } $dbcon = new DB; try { $pdo = $dbcon->dbconnect(); $stmt = $pdo->prepare('select * from menus'); $stmt->execute(); $menus=$stmt->fetchall(); } catch (\Exception $e) { exit(''.$e->getMessage()); } require 'tindex.php'; ?>

tindex.php

php

<!DOCTYPE html> <html lang="ja" dir="ltr"> <head> <meta charset="utf-8"> <meta name="viewport" content="width=device-width"> <link rel="stylesheet" href="style.css"> <title>神田まつややぶそば</title> </head> <body> <article class=""> <header> <h1>ご注文</h1> <h3> いらっしゃいませ。お越しいただきありがとうございます。 <br> 下記のメニューより注文をお決めくださいませ。 </h3> </header> <div class=""> </div>       <form class="" action="thanks.php" method="post">     <?php foreach ($menus as $menu) : ?> <section class="contents"> <img src="images/<?php echo($menu['name']); ?>.jpg" alt="a"> <div class="商品名"> <?php echo($menu['name']); ?> </div> <div class="値段"> <?php echo($menu["price"]."円"); ?> </div> <a class="個数">個数 <?php $n = $menu['name']; ?> <select class="select" name=<?php echo $n; ?>> <?php for ($i=0; $i <10 ; $i++): ?> <option value="<?php echo $i ;?>"><?php echo $i; ?></option> <?php endfor; ?> </select> </a> </section> <?php endforeach; ?> <a class="人数">テーブル番号 <select class="select" name="table" id="table">   <?php for ($i=0; $i <15 ; $i++): ?>      <option value="<?php echo $i ?>"><?php echo $i.?></option>      <?php endfor; ?> </select> </a> <a class="人数">人数 <select class="select" name="hito" id="hito"> <?php for ($i=0; $i <30 ; $i++): ?> <option value="<?php echo $i ?>"><?php echo $i.?></option> <?php endfor; ?> </select> </a> <input type="submit" name="" value="注文" class="注文 button" id="submit_btn"> </form> </body> </html>

thanks.php

php

<?php if ($_POST['table'] == 0 ) : ?> <!DOCTYPE html> <html lang="ja" dir="ltr"> <head> <meta charset="utf-8"> <meta http-equiv=refresh content=5;URL='index.php'> <title></title> </head> <body> すみませんが、テーブル番号と人数の入力をお願い致します </body> </html> <?php else : //これじゃないとだめらしい。 ?> <!DOCTYPE html> <html lang="ja" dir="ltr"> <head> <meta charset="utf-8"> <meta http-equiv=refresh content=5;URL='index.php'> <title></title> </head> <body> 御注文ありがとうございます。 <?php $n = $_POST['table']; ${"ordertable".$n} = $_POST ; session_start(); $_SESSION['ordertable'.$n] = ${"ordertable".$n}; ?> <?php endif; ?> </body> </html>

tyuubou2.php

php

<html lang="ja" dir="ltr"> <head> <meta charset="utf-8"> <meta name="viewport" content="width=device-width"> <link rel="stylesheet" href="style2.css"> <title></title> </head> <body> <article class=""> <header> <h1>オーダー</h1> </header> <?php session_start(); foreach ($_SESSION as $ordertable => $orders) :?> <?php foreach ($orders as $menu => $num): ?> <?php if(!0==($num)){ if ($menu !== 'table'&& $menu !=='hito') { ?>   <section class=""> <div class="商品名"> <?php echo $menu; ?> </div> <form class="" action="uriage.php" method="post"> <a class="個数">個数 <select class="select" > <option> <?php echo $num; ?></option> </select> </a> <input type="hidden" name="num" value="<?php echo $num; ?>"> <input type="hidden" name="menu" value="<?php echo $menu; ?>"> <input type="hidden" name="table" value="<?php echo $orders[table] ?>"> <input type="hidden" name="hito" value="<?php echo $orders[hito] ?>"> <input type="submit" value="完了"> </form> <a class="">テーブル番号 <select class="select" >      <option><?php echo $orders[table] ?></option> </select> </a> <a class="">人数 <select class="select" name="hito" >?> <option><?php echo $orders[hito] ?></option> </select> </a> </section> <?php } }?> <?php endforeach;?> <?php endforeach;?> <br> <br><br> </body> </html>

uriage.php

php

<?php session_start(); //unset($_SESSION[ordertable]); //print_r($_SESSION); switch ($_POST[menu]) { case 'もりそば': $id = 0; break; case 'ざるそば': $id = 1; break; case 'たぬきそば': $id = 2; break; case 'きつねそば': $id = 3; break; case 'かもせいろ': $id = 4; break; case '天ぷらそば': $id = 5; break; } $ordertablen = "ordertable" .$_POST[table]; array_splice($_SESSION[$ordertablen],$id,1,0); foreach ($_SESSION[$ordertablen] as $menu => $value) { if ($value == 0) { $i += 1; if ($i==6) { unset($_SESSION[$ordertablen]); } } } $name = $_POST[menu]; switch ($name) { case 'もりそば': $price = 600; break; case 'ざるそば': $price = 700; break; case 'たぬきそば': $price = 750; break; case 'きつねそば': $price = 800; break; case 'かもせいろ': $price = 900; break; case '天ぷらそば': $price = 1300; break; } class DB { function dbconnect() { try { return new PDO ('省略); array(PDO::ATTR_EMULATE_PREPARES => false) } catch (\Exception $e) {      exit('データベース接続失敗。'.$e->getMessage()); } } } $dbcon = new DB; if (ctype_digit($_POST[table])) { try { $pdo = $dbcon->dbconnect(); $stmt = $pdo->prepare('insert into uriage (name,num,price)value(:name,:num,:price)'); $stmt -> bindParam(':name',$name); $stmt -> bindParam(':num',$_POST['num']); $stmt -> bindParam(':price',$price); $stmt->execute(); echo "完了"; header( "Location: tyuubou2.php直していなかったです。すいません" ) ; } catch (\Exception $e) { exit('ログイン失敗 データが該当しません。'.$e->getMessage()); } }else { try { $pdo = $dbcon->dbconnect(); $stmt = $pdo->prepare('insert into uriage (name,num,price,cname,demae)value(:name,:num,:price,:cname,1)'); $stmt -> bindParam(':name',$name); $stmt -> bindParam(':num',$_POST['num']); $stmt -> bindParam(':price',$price); $stmt -> bindParam(':cname',$_POST[table]); $stmt->execute(); echo "完了"; header( "Location: tyuubou2.php" ) ; } catch (\Exception $e) { exit('ログイン失敗 データが該当しません。'.$e->getMessage()); } } ?>

良い質問の評価を上げる

以下のような質問は評価を上げましょう

  • 質問内容が明確
  • 自分も答えを知りたい
  • 質問者以外のユーザにも役立つ

評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

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

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

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

teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

  • プログラミングに関係のない質問
  • やってほしいことだけを記載した丸投げの質問
  • 問題・課題が含まれていない質問
  • 意図的に内容が抹消された質問
  • 過去に投稿した質問と同じ内容の質問
  • 広告と受け取られるような投稿

評価を下げると、トップページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

azuapricot
azuapricot

2019/08/20 01:44

チェックと質問は全くの別物です。 ここは質問サイトです。 別のサイトでどうぞ。
m.ts10806
m.ts10806

2019/08/20 01:45

多すぎて無理です(これだけのために時間をかけるのは負担が大きすぎるし「質問」になっていない) もっと問題を絞ってください。
gentaro
gentaro

2019/08/20 01:45

仕事の依頼になっちゃってますね。 クラウドソーシングとかで依頼してみては。
m.ts10806
m.ts10806

2019/08/20 01:46

本当にコードレビューしてもらいたいのでしたらMENTAとかでお金払ってきっちりやってもらってください。あくまでQAサイトです。 作業依頼、デバッグ依頼を受けるサイトではありません。
azuapricot
azuapricot

2019/08/20 01:46

もし冗長だなと思うならその一部分を切り出して質問するなり何なりして下さい。 ここが上手く行かないというならそこを切り出して発生しているエラーを書いて下さい。 動いてるけどとりあえず見てほしいならこのサイトには合ってません
dyoshikawa
dyoshikawa

2019/08/20 01:47

作業に対して対価を払いたくないという強い意志だけは伝わってきますね。
gentaro
gentaro

2019/08/20 01:49

MENTAってサービス初めて知った。こんなのあるのか。すごいピッタリな気がする。
m.ts10806
m.ts10806

2019/08/20 01:51 編集

gentaroさん 暗にペアプロ求める質問者(そもそも質問になってないけど)にはもってこいです。
m.ts10806
m.ts10806

2019/08/20 02:00 編集

azuapricotさん 例え「省略」のようなところが埋まってても動かないコードですけどね。 タグに入ってないので気づきにくいですけど前の質問からするとLaravel利用なので(一部の記述からそこは伺える) 「Laravelの適切な組み方にそって1から作り直し」という回答ならできます。言ってしまえば「全部ダメ」なので。
azuapricot
azuapricot

2019/08/20 01:57

MENTAって初めて聞きましたけどめちゃめちゃ良さそう・・・・ わ~良いもの知れて嬉しい
m.ts10806
m.ts10806

2019/08/20 01:59

MENTAって書いたものの、この内容だとMENTA使ったとしても相当言われるのは間違いないですね。コードレビューではなく「Laravelの基本を最初から教えますね」という展開になること間違いなし。 (ただ、コードから、PHPのレベルもお世辞にも並とは言えないので相当覚悟したほうが良さそうですね)
dyoshikawa
dyoshikawa

2019/08/20 02:10 編集

全く本題ではないですがMENTAは価格崩壊(1ヶ月数千円とか)が激しくまともな収入源にするには厳しいし割にも合わない印象です。 報酬が発生しているだけマシとは言えますが、そのあたり従来のクラウドソーシングサービスと同じ問題を抱えていますね。
azuapricot
azuapricot

2019/08/20 02:14

うーん確かにこれを収入源にするのはキビシイですね。お小遣い程度になるかどうかといったところでしょうか
asakuta
asakuta

2019/08/20 02:44

MENTAってこのレベルの質問に対してもマンツーマンで教え続けるとか新手の拷問かな?来世のために得を積むのには良さそう。
m.ts10806
m.ts10806

2019/08/20 02:47

回答がつき、解決済みとした後で修正しまくるのはよろしくないですね。 コメントなり回答をしてくれた人に失礼です。 (それに回答にはすぐに反応しておきながら、指摘事項丸々無視しっぱなしなのも悪い印象しか与えません) >私のコードをチェックしていただけませんか。 この文言は不要ということに気づきませんか? また「クラスやセッション、POST/GETの利用方法」だと広すぎます。 PHPマニュアル読んできましょうというところからになりますよ。 回答にも「相当低レベルの処理を入れていますので基礎ができていないように見受けられます」とある通りです。 私が最初の方に指摘として書いた「多すぎて無理です」に全て集約されていると思ってください。 質問するのは全然良いですが、問題をもっと絞るべきですし、「コード見てください」と質問する領域にはありません。 もっとポイントポイントの精度を高めていくべきでしょう。
Junya42
Junya42

2019/08/20 02:51

たいはんがあおり交じりのコメントで不快だったので、無視していました。 修正したのは、指摘して頂いた通り間違っているところを直したのと、 私の質問で得た、回答がその分野についてだったので、こうしました。 タイトルはじゃあかえときますね
m.ts10806
m.ts10806

2019/08/20 02:55

煽りではなくガイドラインにそった指摘がほとんどです。 https://teratail.com/help/question-tips https://teratail.com/help/avoid-asking 「不快だった」と仰いますが「ガイドラインに沿っていない質問が投稿される」方が見ている方としては不快です。 ちゃんとしたアドバイスを得たいのでしたらちゃんとガイドラインに則ってください。
yambejp
yambejp

2019/08/20 03:01

それだけみんな真面目に読んでくれたんですよ 私みたいに表面だけサラッと読んでアラの部分だけ指摘する分には さほど質問者さんの冗長なコードも気になりません。 逆にだらだらと書かれたものからロジック的なエラーが発生するので なんとかして・・・的な質問だったら私は無視していたと思います
Junya42
Junya42

2019/08/20 04:03

そううことなんですかね、 やんべさんのようにかいとうしていただけるのを期待していました。 そこは私の質問の仕方ですね。ガイドラインも特に読んでませんでしたし、 なので、上3つのコメントに対しては、 そうでしたかすいません。と思いましたが、件数が増えて、何度も同じこと言っていたり、関係のない話していたりで、めんどくさかったので、 ただやんべさんとmtsさんはありがとうございました。 言葉足らずなのを棚にあげると、mtsさんの言い方は、 初心者には伝わりませんでした。あとちょっととげがあります。
m.ts10806
m.ts10806

2019/08/20 04:13

特に言い訳するわけではないですが、 エンジニアの特性と思ってください。 なるべく必要最小限のコメントで無駄なことを省くものです(怠慢ではないです)。 伝わらなかったのは申し訳なかったですが、そこは都度聞くなり意図を確認してもらえれば良い話で、 指摘を無視し続けることで印象が悪化していったのは言うまでもありません。 そもそも赤の他人で、誰も悪意も恨みも何も持ってないので。 ただ赤の他人故、どういう意図があっての質問なのか、質問内容に書かれていることしか伝わりません。 質問を解決する責任はあくまで質問者のみにあるので、他者に確実に「何をしようとして」「何が問題で」「自分はその問題に対してどう取り組んだのか」の3つを伝える努力はしないといけません。
Junya42
Junya42

2019/08/20 04:14

はい。 気を付けます。

まだ回答がついていません

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

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

ただいまの回答率
87.20%

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

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

質問する

関連した質問

同じタグがついた質問を見る

PHP

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