[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: php поиск
ellm
есть поиск на php , работает исправно , но немного не так как хотелось бы, вообщем он ищет совпадения по столбцу tags и если находит то выводит в виде таблице, а хотелось бы допустим чтоб он искал по таблице city и если город из первого input совпадает( допустим два input поля 1=город, 2-ое= тэги) то он искал бы уже по столбцу tags( из 2-го поля), и выводил на экран.

На примере запроса SELECT * FROM `tablica` WHERE citi='город из 1го поля' AND tags LIKE '%$word%' ------ но у меня ничего не выходит((




сам код

<?php
// This function builds a search query from the search keywords and sort setting
function build_query($user_search, $sort) {
$search_query = "SELECT * FROM riskyjobs";

// Extract the search keywords into an array
$clean_search = str_replace(',', ' ', $user_search);
$search_words = explode(' ', $clean_search);
$final_search_words = array();
if (count($search_words) > 0) {
foreach ($search_words as $word) {
if (!empty($word)) {
$final_search_words[] = $word;
}
}
}


// Generate a WHERE clause using all of the search keywords
$where_list = array();
if (count($final_search_words) > 0) {
foreach($final_search_words as $word) {
$where_list[] = " tags LIKE '%$word%' ";
}
}

$where_clause = implode(' OR ', $where_list);

// Add the keyword WHERE clause to the search query
if (!empty($where_clause)) {
$search_query .= " WHERE $where_clause";
}
if (empty($where_clause)) {
echo ' пусто ';
}
// Sort the search query using the sort setting
switch ($sort) {
// Ascending by job title
case 1:
$search_query .= " ORDER BY title";
break;
// Descending by job title
case 2:
$search_query .= " ORDER BY title DESC";
break;
// Ascending by state
case 3:
$search_query .= " ORDER BY state";
break;
// Descending by state
case 4:
$search_query .= " ORDER BY state DESC";
break;
// Ascending by date posted (oldest first)
case 5:
$search_query .= " ORDER BY date_posted";
break;
// Descending by date posted (newest first)
case 6:
$search_query .= " ORDER BY date_posted DESC";
break;
default:
// No sort setting provided, so don't sort the query
}

return $search_query;
}

// This function builds heading links based on the specified sort setting
function generate_sort_links($user_search, $sort) {
$sort_links = '';

switch ($sort) {
case 1:
$sort_links .= '<td><a href = "' . $_SERVER['PHP_SELF'] . '?$option_result=' . $user_search . '&sort=2">Job Title</a></td><td>Description</td>';
$sort_links .= '<td><a href = "' . $_SERVER['PHP_SELF'] . '?$option_result=' . $user_search . '&sort=3">State</a></td>';
$sort_links .= '<td><a href = "' . $_SERVER['PHP_SELF'] . '?$option_result=' . $user_search . '&sort=5">Date Posted</a></td>';
break;
case 3:
$sort_links .= '<td><a href = "' . $_SERVER['PHP_SELF'] . '?$option_result=' . $user_search . '&sort=1">Job Title</a></td><td>Description</td>';
$sort_links .= '<td><a href = "' . $_SERVER['PHP_SELF'] . '?$option_result=' . $user_search . '&sort=4">State</a></td>';
$sort_links .= '<td><a href = "' . $_SERVER['PHP_SELF'] . '?$option_result=' . $user_search . '&sort=3">Date Posted</a></td>';
break;
case 5:
$sort_links .= '<td><a href = "' . $_SERVER['PHP_SELF'] . '?$option_result=' . $user_search . '&sort=1">Job Title</a></td><td>Description</td>';
$sort_links .= '<td><a href = "' . $_SERVER['PHP_SELF'] . '?$option_result=' . $user_search . '&sort=3">State</a></td>';
$sort_links .= '<td><a href = "' . $_SERVER['PHP_SELF'] . '?$option_result=' . $user_search . '&sort=6">Date Posted</a></td>';
break;
default:
$sort_links .= '<td><a href = "' . $_SERVER['PHP_SELF'] . '?$option_result=' . $user_search . '&sort=1">Job Title</a></td><td>Description</td>';
$sort_links .= '<td><a href = "' . $_SERVER['PHP_SELF'] . '?$option_result=' . $user_search . '&sort=3">State</a></td>';
$sort_links .= '<td><a href = "' . $_SERVER['PHP_SELF'] . '?$option_result=' . $user_search . '&sort=5">Date Posted</a></td>';
}

return $sort_links;
}

// This function builds navigational page links based on the current page and the number of pages
function generate_page_links($user_search, $sort, $cur_page, $num_pages) {
$page_links = '';

// If this page is not the first page, generate the "previous" link
if ($cur_page > 1) {
$page_links .= '<a href="' . $_SERVER['PHP_SELF'] . '?option1=' . $user_search . '&sort=' . $sort . '&page=' . ($cur_page - 1) . '"><-</a> ';
}
else {
$page_links .= '<- ';
}

// Loop through the pages generating the page number links
for ($i = 1; $i <= $num_pages; $i++) {
if ($cur_page == $i) {
$page_links .= ' ' . $i;
}
else {
$page_links .= ' <a href="' . $_SERVER['PHP_SELF'] . '?option1=' . $user_search . '&sort=' . $sort . '&page=' . $i . '"> ' . $i . '</a>';
}
}


// If this page is not the last page, generate the "next" link
if ($cur_page < $num_pages) {
$page_links .= ' <a href="' . $_SERVER['PHP_SELF'] . '?option1=' . $user_search . '&sort=' . $sort . '&page=' . ($cur_page + 1) . '">-></a>';
}
else {
$page_links .= ' ->';
}

return $page_links;
}

// Grab the sort setting and search keywords from the URL using GET
$sort = $_GET['sort'];
$option1 = $_GET['option1'];
$user_search = $option1;

// Calculate pagination information
$cur_page = isset($_GET['page']) ? $_GET['page'] : 1;
$results_per_page = 5; // number of results per page
$skip = (($cur_page - 1) * $results_per_page);

// Start generating the table of results
echo '<table border="0" cellpadding="2">';

// Generate the search result headings
echo '<tr class="heading">';
echo generate_sort_links($user_search, $sort);
echo '</tr>';

// Connect to the database
require_once('connectvars.php');
$dbc = mysqli_connect(DB_HOST, DB_USER, DB_PASSWORD, DB_NAME);

// Query to get the total results
$query = build_query($user_search, $sort);
$result = mysqli_query($dbc, $query);
$total = mysqli_num_rows($result);
$num_pages = ceil($total / $results_per_page);

// Query again to get just the subset of results
$query = $query . " LIMIT $skip, $results_per_page";
$result = mysqli_query($dbc, $query);
while ($row = mysqli_fetch_array($result)) {
echo '<tr class="results">';
echo '<td valign="top" width="20%">' . $row['flname'] . '</td>';
echo '<td valign="top" width="50%">' . substr($row['description'], 0, 100) . '...</td>';
echo '<td valign="top" width="10%">' . $row['city'] . '</td>';
echo '<td valign="top" width="20%">' . substr($row['date_posted'], 0, 10) . '</td>';
echo '</tr>';
}
echo '</table>';

// Generate navigational page links if we have more than one page
if ($num_pages > 1) {
echo generate_page_links($user_search, $sort, $cur_page, $num_pages);
}

mysqli_close($dbc);
?>




Спустя 51 минута, 11 секунд (6.03.2012 - 17:33) ellm написал(а):
проще говоря хочу из этого сделать поиск по нескольким полям, но не выходит((
посоветуйте что нибудь

Спустя 1 день, 1 час, 33 минуты, 10 секунд (7.03.2012 - 19:06) Ser18 написал(а):
У них вроде запрос на поиск так выглядит

http://tfile.ru/forum/ssearch.php?q=maison

Смотрите ХТМЛ код загруженной страницы

Пишите регулярное выражение или можно строковыми функциями

Выбираете то что нужно и к себе в БД
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.