I have a database query that displays a list of national birds. I picked up a script that adds a cool detail: The ability to add asterisks, stars, etc. to birds that represent more than one nation.
However, I must have changed something in my code or database table that broke it. I now get the error message Undefined index: Stars. Can anyone spot the problem?
I pasted the query into phpMyAdmin > SQL, and it seems to work OK, displaying rows representing nations with national birds...
SELECT GS.N, GS.IDArea SymArea, GS.IDSymbol, GS.URL, GS.Title,
GS.PageKind3, GS.Symbol, GS.Latin, GS.Desig, GS.DesigGen, GS.DesigGroup, GS.Date,
GG.N, GG.IDArea, GG.Name, GG.Type, GG.IDParent, GG.IDParent2, GG.Parent, GG.Parent2, GG.IDReg,
T.Stars
FROM gs AS GS
LEFT JOIN gw_geog AS GG ON GG.IDArea = GS.IDArea
LEFT JOIN (
SELECT Latin, COUNT(Latin) as Stars
FROM gs
GROUP BY Latin
) as T ON GS.Latin = T.Latin
WHERE GS.DesigGen = 'bird' AND GG.Type = 'nat' AND GS.Symbol != ''
OR GS.DesigGen = 'bird' AND GG.Type = 'dep' AND GS.Symbol != ''
GROUP BY GS.IDArea ORDER BY GS.N
The most important value is probably GS.Latin, which simply lists various birds' Latin, or scientific names. It appears that the above query isn't "connecting" with the script in my loop, below. Does anyone have a hunch what the problem is?
while ($row = $stm->fetch())
{
switch (TRUE)
{
case ($row['Stars'] == 2):
$star_rating = ' (2)';
break;
case ($row['Stars'] == 3):
$star_rating = ' (3)';
break;
case ($row['Stars'] == 4):
$star_rating = ' (4)';
break;
case ($row['Stars'] > 5):
$star_rating = ' (5 or more)';
break;
default:
$star_rating = '';
break;
}
}