2016-05-22 12 views
2

基本的にフィルタリングシステムを作成しようとしていますが、HTML形式の入力からデータを取得し、PHPのデータをPHPの既存の「プロファイル」をフィルタリングして$profileArrayユーザーが入力したデータ/変数を含むプロファイルを出力します。わたしの知る限り、var_dumpを使ってテストすることで、filter_array関数を通してユーザー入力データを送信する方法を理解できません。PHP:HTML形式の入力からデータを取得してからfilter_arrayを使用して出力する

初心者として、私はphp.netで$ fooと$ barの説明を理解できないので、明確な説明を非常に感謝しています。

HTML

<html> 
<body> 
    <form action="profileFilter.php" method="POST"> 
    <p>Age: <input type="text" name="ageChoice"></p> 
    <p>Colour: <input type="text" name="colourChoice"></p> 
    <input type="submit" name="catQualitiesBtn"> 
    </form> 
</body> 
</html> 

PHP

<?php  
    $profileArray = array( 
    array( 'Name' => "Toby", 
      'Age' => 3, 
      'Colour' => "Ginger", 
      ), 

array( 'Name' => "Cassie", 
     'Age' => 3, 
     'Colour' => "Tabby", 
     ), 

array( 'Name' => "Lucy", 
     'Age' => 1, 
     'Colour' => "Black", 
     ) 
     ); 

function get_profile_by_age ($profile, $age){ 
    return array_filter ($profile, function($ageInput) use ($age){ 
    return $ageInput['Age'] === $age; 
    });  
    } 

function get_profile_by_age ($profile, $colour){ 
    return array_filter ($profile, function($colourInput) use ($colour){ 
    return $colourInput['Colour'] === $colour; 
    });  
    } 

$ageInput = intval($_POST['ageChoice']); 
$colourInput = strval($_POST['colourChoice']); 

echo function get_profile_by_age ($ageInput , $age); 
echo function get_profile_by_colour ($colourInput , $colour); 
?> 

答えて

0

私はあなたの質問が何であったかを理解していなかったが、私はあなたがyou'r配列をループにできないと思います。このループは、多次元配列をループするのにも役立ちます。そしてあなたの配列では、年齢は文字列ではないので、ユーザー入力の値をstringからintに変更する必要はありません。 `intval`あなたがあなたの答えを送った前に、私は実際にそれを編集した上で頭部のアップのための

<html> 
<body> 
<form action="profileFilter.php" method="POST"> 
<p>Age: <input type="text" name="ageChoice"></p> 
<p>Colour: <input type="text" name="colourChoice"></p> 
<input type="submit" name="catQualitiesBtn"> 
</form> 
</body> 
</html> 

PHP

<?php 

$profileArray = array( 
array( 'Name' => "Toby", 
     'Age' => 3, 
     'Colour' => "Ginger", 
     ), 

    array( 'Name' => "Cassie", 
    'Age' => 3, 
    'Colour' => "Tabby", 
    ), 

    array( 'Name' => "Lucy", 
    'Age' => 1, 
    'Colour' => "Black", 
    ) 
    ); 

    if (isset($_POST['ageChoice']) && isset($_POST['colourChoice'])) { 
    $ageInput = $_POST['ageChoice']; 
    $colourInput = $_POST['colourChoice']; 

for ($i=0; $i >=0 ; $i++) { 
     if ($profileArray[i]['Age'] == $_POST['ageChoice'] && $profileArray[i]['Colour'] == $_POST['colourChoice']) { 
      echo "name -".$profileArray[i]['Name']; 
      break; 
     } 
    } 
} 
} 
+0

感謝。エラーは出ませんが、値をHTMLフォームに送信しても何も表示されません。私はHTMLフォームに入力された文字列データを含む '$ profileArray'からプロファイルを吐き出すフィルタシステムを基本的に作ろうとしています。 –

+0

@eainnem上記のループを使用します – Sumit

+0

私はそれを行っていません。それは私を連続的なループに導いている。また、最後に余分な}があります.... –

関連する問題