2016-04-09 16 views
0

こんにちはこれはコードがうまくいかないことではなく、実行に関して、私は(ある種の)PHPの基本を釘付けにしました。私は今よりきれいで短いコードを書くことに取り組んでいます。

私の質問のためにstackoverflowを検索しましたが、私の答えに固有のものは見つかりませんでした。

$_POST

を介してユーザがクリックするisset()機能がトリガされる提出し、私はすべての変数を取得するとき、私は、私は信じている多くの入力フィールドを持っているので、私は私の問題

、単純なテキスト入力を備えたHTMLフォームを持っています$val1 = $_POST['name'], $val2 = $_POST['lastname']の代わりに、私が後にしている値を取得するために、より高度な方法が必要です。

この非常に簡単なコードをどのように改善できるかについて、誰かから助言をいただければ幸いです。

<form name="newUser" method="post"> 
<input type="text" value="name" name="name" /> <br /> 
<input type="text" value="lastname" name="lastname" /><br /> 
<input type="text" vaulue="uname" name="uname" /><br /> 
<input type="email" value="email" name="email" /><br /> 
<input type="password" value="pword" name="pword" /><br /> 
<input type="text" value="company" name="company" /><br /> 
<input type="text" value="salary" name="salary" /><br /> 
<input type="submit" name="submit" /> 


if(isset($_POST['submit'])){ 
$name= $_POST['name']; 
$lastname = $_POST['lastname']; 
$uname = $_POST['uname']; 
$email = $_POST['email']; 
$pword = $_POST['pword']; 
$company = $_POST['company']; 
$salary = $_POST['salary']; 

regUser($name,$lastname,$uname,$email,$pword,$company,$salary); 

私はこのコードを短縮することができますどのようにした後、具体的だし、それが

+0

これはコードレビューに投稿しました – Chay22

+0

そのユーザーを登録するだけであれば、POSTを変数に格納する理由はありません。 – PVL

+0

http://codereview.stackexchange.com/に属しているため、この質問を議論の対象外としています。 – CodeMouse92

答えて

2

あなたは単にここextract() function機能を使用することができます向上させます。

このケースでは、単に書くことができます:

extract($_POST); 

をそして、あなたは直接、$のlastname..etcを$名前を使用することができます。

つまり、$ _POSTの配列キーが変数名になります。次のように

空白の検証を行うことができます。

$errors = []; 

foreach ($_POST as $k => $v) { 
    if (empty($v)) { 
     $errors[] = "$k is blank"; 
    } 
} 

if (!empty($errors)) { 
    echo "Please fix the following errors:<br/>"; 
    echo implode("<br/>", $errors); 
} 

は、この情報がお役に立てば幸い! $ _POSTが配列であるので、あなたがそのように行うことができます

+0

本当にありがとうございました...もし私が尋ねることができるならば、すべてのフィールドがこの関数で満たされているかどうかを検証する方法はありますか?時間が経過すると応答を受け入れる – Marilee

+0

この機能を使用して空白の検証を行うことはできません。その場合、各要素にアクセスする必要があります。 –

+0

@Marilee確かにあります。 'foreach'を呼び出し、各キー/値を取得し、空にチェックします。編集:彼が編集したときとまったく同じです。 –

2

// $_POST['foo'] = "bar"; 
foreach ($_POST as $key => $field) { 
    // >= php7 
    ${$key} = $field ?? null; 
    // < php7 
    ${$key} = isset($field) ? $field : null; 
} 

// $foo = 'bar'; 

あなたもそれを再利用可能にする例えばprocessPostVariables(array $postVar)機能でこれをラップすることができます。

しかし、個人的には変数を生成するというアイデアはあまり好きではありません。「マジックコード」のようなものです。あなたの例のようにするのはそれほど悪くはありません。

+0

変数が$ _POST配列にある場合、 'isset'部分は無駄であることに気がつきました。 '$ {$ key} = $ field;'で十分です。 – pimolo