2016-08-15 2 views
1

私は、ページが読み込まれたときに、データベースからのフィールドの値をすべて取得しますが、サブミットをクリックして必要なフィールドが入力されないそれを元に戻すと、変更されたすべてのデータは、あたかもまったく触れていないかのように、元の状態に戻ります。多くの変数をより細かく見せる方法

私は、送信ボタンをクリックしなかった場合、変数はデータベースからの結果ですが、クリックされた場合、変数は送信されたフォームの$ _POSTです"私は、if文で、現在のコードで二回定義されたそのわずか20+変数を、この一見「すっきり」を作るのですかどのように私の質問がある

、:

if(!isset($_POST['submit'])) 
    { 
     $jobtitle = $record['job_title']; 
     $sitecontact = $record['site_contact']; 
     $siteph = $record['site_phno']; 
     $siteadd = $record['site_add']; 
     $sitesuburb = $record['site_suburb']; 
     $sitepc = $record['site_pc']; 
     $jobref = $record['job_ref']; 
     $quoteref = $record['quote_ref']; 
     $systembrand = $record['cctv_alarm_brand']; 
     $jobtype = $record['job_type']; 
     $datebooked = $record['date_booked']; 
     [...] 
    }else{ 
     $jobtitle = $_POST['title']; 
     $sitecontact = $_POST['cname']; 
     $siteph = $_POST['cnum']; 
     $siteadd = $_POST['address']; 
     $sitesuburb = $_POST['suburb']; 
     $sitepc = $_POST['postcode']; 
     $jobref = $_POST['jobref']; 
     $quoteref = $_POST['quoteref']; 
     $systembrand = $_POST['brand']; 
     $jobtype = $_POST['job_type']; 
     $datebooked = $_POST['date']; 
     $timebooked = $_POST['time']; 
     [...] 
    } 

任意のアドバイスは大歓迎です。ここで

+1

アレイを使用します。そのメモでは、 '$ _POST'はすでに配列です - それを使わないのはなぜですか? –

+1

命名規則の一貫性が役立つでしょう。 'datebooked'、' date'、 'date_booked'はすべて異なる名前にするべきではありません。 –

+0

[CodeReview](http://codereview.stackexchange.com/)多分? – Script47

答えて

1

は、私はそれを行うだろう方法は次のとおりです。

  1. 変更した変数の名前、データベースには、同じ列名を使用しますので。これにより、将来他の人や自分のコードをあまり混乱させないようにします。
  2. extract()を使用して配列で使用される変数をインポートします。

コード:

// turn $record['name'] to $name. be careful because this will overwrite variables 
extract($record); 
$jobtitle = $jobtitle ?: $_POST['jobtitle']; 
+0

'$ jobtitle = $ jobtitle?:$ _POST ['jobtitle'];' '?:'は何をしますか? –

+0

[三項演算子](http://php.net/manual/en/language.operators.comparison.php#language.operators.comparison.ternary)と呼ばれています。それは省略形のif/else文です。 – rationalboss

+0

もう少し読んだら、 '$ jobtitle =(!isset($ _ POST ['submit'])))のような何かをする必要はないでしょうか? $ jobtitle:$ _POST ['jobtitle']; ' –

0

使用演算子?

条件がtrueの場合は?次いで、値X:そうでない場合、値Y

$jobtitle = (isset($_POST['submit'])) ? $_POST['title'] : $record['job_title']; 
[...] 
関連する問題