velden met CSV
Ik ben bezig met een vogeldb en heb onderstaande tabellen:
naam
+------------+
id
naam
voedsel_id
...
+------------+
+------------+
voedsel
+------------+
id
voedsel
+------------+
De waarde(s) die in het veld 'voedsel_id' staan (in tabel naam) zijn gescheiden met een comma. (vb 1,3,6,7,...)
en verwijzen naar het 'id' in de tabel voedsel.
Om nu te zoeken wat de geselecteerde vogel eet doe ik hetvolgende;
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
<?php
$dier = $_GET['dier'];
$query = "SELECT naam, eten_ids FROM naam WHERE naam LIKE '%".$dier."%'";
echo '<pre>'.$query.'</pre>';
$result = mysql_query($query);
while($rij = mysql_fetch_assoc($result)){
echo '<hr>';
$naam = $rij['naam'];
$link = '<h2>Fiche voor <a href="vogel.php?dier='.$naam.'">'.strtoupper($naam).'</a></h2>';
echo $link;
echo'<strong>Wat eet ik zoal?</strong><br>';
$voedsel = split(",",$rij['eten_ids']);
for($i = 0;$i<= count($voedsel)-1;$i++){
$result2 = mysql_query('SELECT eten FROM eten WHERE eten_id = '. $voedsel[$i]);
while($rij2 = mysql_fetch_assoc($result2)){
echo '<a href="vogel.php?voedsel='.$rij2['eten'].'">'.$rij2['eten'].'</a>';
}
if ($i<count($voedsel)-2) echo', ';
else if ($i<count($voedsel)-1) echo' en ';
}?>
$dier = $_GET['dier'];
$query = "SELECT naam, eten_ids FROM naam WHERE naam LIKE '%".$dier."%'";
echo '<pre>'.$query.'</pre>';
$result = mysql_query($query);
while($rij = mysql_fetch_assoc($result)){
echo '<hr>';
$naam = $rij['naam'];
$link = '<h2>Fiche voor <a href="vogel.php?dier='.$naam.'">'.strtoupper($naam).'</a></h2>';
echo $link;
echo'<strong>Wat eet ik zoal?</strong><br>';
$voedsel = split(",",$rij['eten_ids']);
for($i = 0;$i<= count($voedsel)-1;$i++){
$result2 = mysql_query('SELECT eten FROM eten WHERE eten_id = '. $voedsel[$i]);
while($rij2 = mysql_fetch_assoc($result2)){
echo '<a href="vogel.php?voedsel='.$rij2['eten'].'">'.$rij2['eten'].'</a>';
}
if ($i<count($voedsel)-2) echo', ';
else if ($i<count($voedsel)-1) echo' en ';
}?>
Het kan misschien via een andere methode, kzou dus graag weten hoe. :)
En dan het 2e probleem.
Ik zou ook willen weten welke vogels ook één bepaald soort voedsel eten.
vb alle vogels die zaden eten.
Maar heb al vanalles geprobeerd, wie zou me hiermee kunnen helpen.
mvg
Luc
Gewijzigd op 01/01/1970 01:00:00 door Luc Zontrop
Tumbler schreef op 24.03.2007 21:48:
De waarde(s) die in het veld 'voedsel_id' staan (in tabel naam) zijn gescheiden met een comma. (vb 1,3,6,7,...)
en verwijzen naar het 'id' in de tabel voedsel.
en verwijzen naar het 'id' in de tabel voedsel.
Dat is een verkeerd datamodel. 1 vogelsoort kan meer dan 1 soort voedsel eten, en 1 soort voedsel kan door meer dan 1 vogelsoort gegeten worden. Dat heet een veel op veel relatie (N:M) en die mogen niet in databases.
De klassieke oplossing is een koppeltabel. Je datamodel ziet er dan zo uit:
tabel: vogels
id
naam
tabel: voedsel
id
naam
tabel: vogels_voedsel
vogel_id
voedsel_id
Stel je hebt een kraai die wormen en mais eet. Dan staat er 1 record in de tabel vogels met 'kraai' er in. 2 records in de tabel voedsel ('wormen', 'mais')
en 2 records in de koppeltabel waarin je het id voor kraai aan het id voor wormen koppelt en het id voor kraai aan het id voor mais.
Gewijzigd op 01/01/1970 01:00:00 door Jan Koehoorn
Zal eens eerst verder zoeken dan, thx Jan