2016-04-17 2 views
1

На самом деле, я пытаюсь создать форму поиска для личного сайта, на котором есть одна форма поиска и несколько полей БД. если данные соответствуют входному значению, то это поле или аналогичные все поля будут эхо. примеры:Форма поиска для нескольких полей 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 эту строку только на нашем поле ввода html, тогда $f1 будет эхо целовать данные $f1, но если мы будем искать с Hello there I'm этими строками, то это будет echo наши все переменные, потому что во всех них доступны эти строки. Я думаю, что примеры помогут вам правильно понять, что мое требование на самом деле.

проблема, стоящая на рабочем:

поиска данные в случае совпадения каких-либо данных, то все поля, показывающие, как я использовал эхо ключевого слова 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

Вы не можете узнать из этого запроса БД, какое поле соответствует поисковому запросу. Для этого вам нужно настроить отдельные поисковые запросы. – aeonsleo

+0

проблемы, с которыми сталкиваются при работе: поиск данных при совпадении любых данных, тогда все поля отображаются, поскольку я использовал ключевое слово echo php для цикла 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

Смежные вопросы