Hallo allemaal,

Ik heb een, volgens mij een niet al te moeilijke vraag (oftewel dat hoop ik :P), over hoe ik gegevens uit een database in een rijtje maar wel één voor één kan weergeven. Ik zal het hieronder proberen met een makkelijk voorbeeldje (doe maar is voor de grap automerken :P) weer te geven.
Ik heb een tabel in een database met daarin de volgende automerken (nu nog even zonder gegevens):
Ferrari
Audi
Ferrari
Toyota

Nu roep ik met de mysql functie "SELECT DISTINCT merk FROM `auto` ORDER BY `merk`" alle automerken op, waarbij ze allemaal maar één keer worden weergegeven en netjes worden gesorteerd op alfabet.

Mijn code is dus nu:
<?php $query = "SELECT DISTINCT merk FROM `auto` ORDER BY `merk`";
$result = mysql_query($query);
while($row = mysql_fetch_assoc($result))
{
echo "$row[merk] <br>"; }

?>
Dit geeft dan ook netjes weer:
Audi
Ferrari
Toyota

Maar nu wil ik de code zo aanpassen dat er wel een rijtje gemaakt wordt, maar de resultaten wel één voor één worden weergeven, zodat ik er ook nog tekst tussen de merken kan plaatsen.
De code moet dan zo iets soortgelijks worden:
<?php $query = "SELECT DISTINCT merk FROM `auto` ORDER BY `merk`";
$result = mysql_query($query);
while($row = mysql_fetch_assoc($result))
$resultaat1 = $row[eerste merk in het rijtje] // dus audi
$resultaat2 = $row[tweede merk in het rijtje] // dus ferrari
$resultaat3 = $row[derde merk in het rijtje] // dus toyota
{
echo "$resultaat1 <br>";
echo "extra info over de eerste merk in het rijtje";
echo "$resultaat2 <br>";
echo "extra info over de tweede merk in het rijtje"; }
?>

Kan iemand mij helpen hoe ik dit op moet lossen. Het is me niet gelukt om dit op te lossen dmv een id veld in te voeren in de tabel, aangezien er zeer veel merken in komen te staan en merken er vele keren in voorkomen. Ik hoop dat iemand mij hiermee kan helpen!

Alvast bedankt!

groetjes, Stef
In je eerste voorbeeld doe je het wel goed, maar in je tweede niet?

Waarom al dat $resultaat gedoe?
Gewoon alleen de $row in je while is voldoende.

En die backtics in je query zijn ook van de boze, dus haal ze weg.

oftewel:
<?php $query = "SELECT DISTINCT merk FROM auto ORDER BY merk";
$result = mysql_query($query);
while($row = mysql_fetch_assoc($result))
{
    echo $row['merk'].'<br />'; 
    echo 'extra info over de eerste merk in het rijtje';
}
?>
Je kunt ook alle info in een array plaatsen!


<?php 
  $query = "SELECT DISTINCT merk FROM auto ORDER BY merk";
  if(!($result = mysql_query($query)))
  {
      // Moet je zelf even netjes oplossen!
  }
   
  $aMerken = array();
  while($row = mysql_fetch_assoc($result))
 {
     $aMerken[] = $row['merk'];
 }
 
 /**
   * Hier kan je netjes alles zo maken zoals jij dat wilt!
   * Ik vind dat je op deze manier iets flexibeler bent!
   */ 
?> 
Je gebruikt een fout datamodel. Een merk kan nooit in hetzelfde tabel staan als een product / auto / ander ding.

Voor een merk heb je een aparte tabel nodig die je koppelt aan de tabel met het product / auto / ander ding.

Want wat als er bijvoorbeeld 2 merken met dezelde naam zijn? De een gaat zijn naam veranderen en jij moet dat dan ook doen. Als jij dit doet, gebeurd het meteen bij beide merken, en dan moet je ook met een beejte pech 20.000 rijen updaten. Als jij een aparte tabel hebt, hoef je maar 1 rij te updaten.
Een opzet hoe je het zou kunnen doen.



types
----------------------------
id  		INT PK (FK naar merken.id)
merk_id		INT
type_naam 	VARCHAR


merken
----------------------------
id		INT PK
merknaam	VARCHAR
Ok, heel erg bedankt iedereen!
Ik ben weer heel wat info rijker en ga ff uitvogelen hoe ik t verder allemaal in ga voeren! Ik denk dat k (na wat even werk :P) er iig nu wel uit ga komen. En anders horen jullie t wel ;)!
Heel erg bedankt

Reageren