У меня есть веб-сайт с фотографиями, на котором я пытаюсь выполнить запрос к базе данных MySQL. Запрос относится к объединенному полю «title» и «ключевое слово» с названием «title_keyword».
Я хочу взять результаты поиска и отсортировать их по вновь сформированной переменной «sort_priority», которая проверяет, находится ли искомое слово в поле «заголовок». Если оно находится в поле «title», то я хочу присвоить значение 1, а если нет в поле title, то значение 2. Полученный массив будет отсортирован по «sort_priority» и выведен на экран.
Вот логика, которую я использую с PHP и MySQL:
1) Запросите базу данных MySQL и назначьте переменные. (Это работает просто отлично)
2) Возьмите результаты, присвойте каждое поле переменной, создайте новую переменную, которая выполняет вычисление для одной из возвращенных переменных
$data_array=array();
// get each row
while($row = mysql_fetch_array($result))
{
//get data
$image_id = "{$row['image_id']}";
$title = "{$row['title']}";
$imageurl = "{$row['imageurl']}";
// Create sort_priority to identify if search word is in title field.
//If it is then set to 1 to force this higher in the result list after sorting
$sort_priority = 2;
if(stristr($title,$search))
{ $sort_priority = 1;}
Все, что выше этой точки, работает. Теперь для части, на которой я поставлен в тупик. Как создавать и добавлять данные в массив, а затем сортировать по моей новой переменной $ sort_priority.
Вот то, что я написал, но это просто не работает **
// Create array and sort by title then keyword (tk_sort)
$data_array = array(
'image_id' => $image_id,
'title' => $title,
'imageurl' => $imageurl,
'sort_priority' => $sort_priority);
// Obtain a list of columns
foreach ($data_array as $key => $row) {
$image_id[$key] = $row['image_id'];
$title[$key] = $row['atitle'];
$imageurl[$key] = $row['imageurl'];
$sort_priority[$key] = $row['sort_priority'];
}
// Sort the data with volume descending, edition ascending
// Add $data as the last parameter, to sort by the common key
array_multisort($sort_priority, SORT_ASC);
// end of array creation and sort
3) Вывести вновь отсортированный массив в таблицу
Не уверен, как извлечь из него данные. Должен ли я использовать цикл или что-то?