2016-04-17 21 views
1

実際、私は単一の検索フォームと複数のDBフィールドを持つ個人用Webサイトの検索フォームを作成しようとしています。データが入力値と一致すると、そのフィールドまたは同様のすべてのフィールドがエコーされます。 例:複数のdbフィールドの検索フォーム

は私が私のデシベルでの5つのフィールドを持っていると思います:

$f1, $f2, $f3, $f5 

$f1 = "Hello there I'm f1, look at the outside"; 
$f2 = "Hello there I'm f2, be brave on you"; 
$f3 = "Hello there I'm f3,Do great things"; 
$f4 = "Hello there I'm f4, drink somethings"; 
$f5 = "Hello there I'm f5, eat somethings"; 

のようないくつかの文字列を含むそれらのすべてが今$searchが入力フィールドだと思い、私たちはすべてを検索しますそれらの変数に格納されたデータ。 look at the outsideと入力した場合、$f1$f1のデータ全体をエコーし​​ますが、Hello there I'mという文字列で検索すると、すべての変数がこのすべての変数に含まれているため、echoという変数がすべて使用されます。私はその事例が実際に私の必要条件を正しく理解するのに役立つと思います。作業に直面

問題:

検索データ私はすべてのフィールドのforeachループ上のPHPのエコーキーワードを使用して、すべてのフィールドが表示されているすべてのデータと一致している場合。

ここスニペット:

<?php 
if(isset($_GET['submit_value']) && !empty($_GET['search_input'])) 
{ 
    include("db_config.php");  
    $db = database::getInstance(); 
    $searchValue = $_GET['search_input']; 
    $sql = "SELECT * FROM `sitedata` WHERE c_main_title LIKE '%$searchValue%' OR c_main_body LIKE '%$searchValue%' OR cmt_dept_title LIKE '%$searchValue%' OR cmt_dept_body LIKE '%$searchValue%' OR aidt_dept_title LIKE '%$searchValue%' OR aidt_dept_body LIKE '%$searchValue%' OR food_dept_title LIKE '%$searchValue%' OR food_dept_body LIKE '%$searchValue%' OR rac_dept_title LIKE '%$searchValue%' OR rac_dept_body LIKE '%$searchValue%' OR p_message_title LIKE '%$searchValue%' OR p_message_body LIKE '%$searchValue%' OR vp_message_title LIKE '%$searchValue%' OR vp_message_body LIKE '%$searchValue%' OR about_college_title LIKE '%$searchValue%' OR about_college_body LIKE '%$searchValue%' OR mission_message LIKE '%$searchValue%' OR vision_message LIKE '%$searchValue%' ";  
// Now i want to match fields with my $searchValue var if fields match with input data then that fields will echo. otherwise won't. 

    $result = $db->dbc->query($sql); 
    foreach($result as $row) 
    { 
     // Now i need to use condition here to show my data which match with input field. 
     // like $field1 = " hello world this is me" and user input value = "hello world"; then this will show up! 
     echo "<h2 class='all-header'>".$row['c_main_title']."</h2>"; 
     echo $row['c_main_body']; 
     echo "<h2 class='all-header'>".$row['cmt_dept_title']."</h2>"; 
     echo $row['cmt_dept_body']; 
     echo "<h2 class='all-header'>".$row['aidt_dept_title']."</h2>"; 
     echo $row['aidt_dept_body']; 
     echo "<h2 class='all-header'>".$row['food_dept_title']."</h2>"; 
     echo $row['food_dept_body']; 
     echo "<h2 class='all-header'>".$row['p_message_title']."</h2>"; 
     echo $row['p_message_body']; 
     echo "<h2 class='all-header'>".$row['vp_message_title']."</h2>"; 
     echo $row['vp_message_body']; 
     echo "<h2 class='all-header'>".$row['about_college_title']."</h2>"; 
    }           
} 
else { echo "<h2 class='not-found'>404 not found !</h2>";} 
?> 
+0

あなたの上記のコードで発生か? – Chay22

+0

検索クエリに一致するフィールドをDBクエリから見つけることはできません。そのために別々の検索クエリを設定する必要があります。 – aeonsleo

+0

問題が直面している問題: データと一致するデータがあれば、すべてのフィールドが表示されます。echoキーワードはすべてのフィールドに対してforeachループで使用されます。 –

答えて

0

あなたは、各フィールドを表示する前にこれを使用することができますかあなたは(最初のフィールドのコードの下に)表示する必要があるものは何でも

if(strpos($row['c_main_title'], $searchValue) !== false || strpos($row['c_main_body'], $searchValue) !== false){ 
    echo "<h2 class='all-header'>".$row['c_main_title']."</h2>"; 
    echo $row['c_main_body']; 
} 
+0

この場合、 '$ row ['c_main_title']'はユーザー入力フォームでのみ値をチェックします。しかし、私は '$ row ['c_main_title']'と '$ row ['c_main_body]'のように、入力されたユーザ文字列と比較する必要があります。あなたが理解して –

+0

をチェックして、私はさらに理解するための十分な説明を追加したことを確認してください! –

+0

||を使用して両方をチェックインできます演算子は編集中 – aeonsleo

関連する問題