velden met CSV

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Luc Zontrop

Luc Zontrop

24/03/2007 21:48:00
Quote Anchor link
Hoi,

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)
PHP script in nieuw venster Selecteer het PHP script
1
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 ';
  }
?>


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
 
PHP hulp

PHP hulp

20/11/2024 14:18:49
 
Jan Koehoorn

Jan Koehoorn

24/03/2007 21:53:00
Quote Anchor link
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.

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
 
Luc Zontrop

Luc Zontrop

24/03/2007 21:56:00
Quote Anchor link
Oei, verkeerd bezig blijkbaar :)

Zal eens eerst verder zoeken dan, thx Jan
 



Overzicht Reageren

 
 

Om de gebruiksvriendelijkheid van onze website en diensten te optimaliseren maken wij gebruik van cookies. Deze cookies gebruiken wij voor functionaliteiten, analytische gegevens en marketing doeleinden. U vindt meer informatie in onze privacy statement.