我有一个ajax搜索引擎。如果没有打开过滤器,我想查询每个表中的标题。在此示例中,只有两个表。 music_page AND restaurant_page。
public function Any_Category_Name($search_title) {
$query = mysql_query("SELECT music_page.title AS music_title,
restaurant_page.title AS restaurant_title
FROM music_page,
restaurant_page
WHERE music_page.title
LIKE '%$search_title%' OR
restaurant_page.title
LIKE '%$search_title%'");
while($fetch = mysql_fetch_assoc($query)) {
$music_title = $fetch['music_title'];
$restaurant_title = $fetch['restaurant_title'];
echo '<b>Restaurant:</b> '.$restaurant_title.'<br />';
echo '<b>Music Spot:</b> '.$music_title.'<br />';
}
}
这是输入字母/搜索时的输出:
Restaurant: Giordanoes
Music Spot: jazz showcase
Restaurant: Giordanoes
Music Spot: The Green Mill
Restaurant: Giordanoes
Music Spot: ayooooo
Restaurant: Giordanoes
Music Spot: ayoooooooo
Restaurant: Giordanoes
Music Spot: new one
Giordanoes是restaurant_page表中唯一的一行。它是为music_page中的每一行输出的。我该如何解决这个问题?
答案 0 :(得分:1)
您需要了解正确加入表格的方法。如您所见,您将从restaurant_page
表中获取music_page
表中每条记录的记录。
另一种方法是有两个查询,每个查询从一个单独的表中选择记录,两个while循环一个接一个地输出结果。
答案 1 :(得分:1)
这正是连接表时发生的情况。我通常做的就是你循环,只有输出餐厅,如果它从最后一个循环改变。像:
$last = '';
while($fetch = mysql_fetch_assoc($query)) {
$music_title = $fetch['music_title'];
$restaurant_title = $fetch['restaurant_title'];
if($last != $restaurant_title){
echo '<h1>Restaurant: '.$restaurant_title.'</h1>';
}
echo '<b>Music Spot:</b> '.$music_title.'<br />';
$last = $restaurant_title;
}
答案 2 :(得分:1)
替代
while($fetch = mysql_fetch_assoc($query)) {
// Create the listing array
$listing[$fetch['restaurant_title']] = array($fetch['music_title'] => 'music_title');
}
// Check if we have Restaurants
if(is_array($listing)) {
// Loop through the new listings array
foreach($listing as $restaurant_title => $music_titles) {
echo '<b>Restaurant:</b> '.$restaurant_title.'<br />';
// Check if we have Music
if(is_array($music_titles)) {
// Loop through the Music
foreach($music_titles as $music_title => $placeholder) {
echo '<b>Music Spot:</b> '.$music_title.'<br />';
}
} else {
echo '<b>Music Spot:</b> No Music found<br />';
}
}
} else {
echo '<b>Restaurant:</b> No Restaurants found<br />';
}