Nu dienen deze tabellen natuurlijk dmv JOIN opgehaald te worden. Het probleem is dat de auto's meerder kleuren kunnen hebben, anders was het een simpele JOIN als:
SELECT
2.merk,
1.kleur,
FROM
tabel1 AS 1
INNER JOIN
kleuren AS 2
ON 2.id = 1.kleur_id
Ja, maar ook daarmee kom ik er niet uit. Ik heb het volgende:
<?php
$teamkleuren = "SELECT
1.naam,
2.kleur_naam
FROM
tabel1 AS 1
INNER JOIN
(tabel2 AS 2
INNER JOIN
koppeltabel AS kt
ON
kt.kleur_id = 2.id
)
ON
kt.team_id = 1.id
";
?>
en ik krijg "Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource". Oftewel, de query is niet goed, maar wat doe ik fout?
Tja, je mag geen aliassen aanmaken welke met een nummertje beginnen
SELECT
table1.naam,
table2.kleur_naam
FROM
table1
INNER JOIN koppeltabel
ON table1.id=koppeltabel.team_id
INNER JOIN table2
ON koppeltabel.kleur_id=table2.id
Oftewel, de query is niet goed, maar wat doe ik fout?
Zou je dan voortaan niet even de mysql foutmelding ook echoën? Gebruik mysql_error() om die foutmelding op te halen als blijkt dat een query mislukt is...
Maar het voorkomt in de toekomst wel fouten. Laat met PHP iets meelopen die bepaald of het automerk nog hetzelfde is:
<?php
$last_car = '';
while($row=mysql_fetch_assoc($result)){
if($last_car == $row['team']){
//komt overeen, dus nog geen nieuwe regel aanmaken alleen kleur invullen
echo ' '.$row['kleur'];
}
else{
//nieuw team, dus nieuwe regel
echo '<br />'.$row['team'].':';
}
}
?>
Ja, maar in mijn echte database kan mijn team meerdere kleuren, sponsors en rijders hebben :|
Dat is imho bijna niet te doen met if-jes.
Mijn oplossing tot nu toe is voor elke variabele een
<?php
while($row=mysql_fetch_assoc($result))
?>
draaien en dan de array elke keer resetten. Maar dit is niet echt een elegante oplossing...