Ik haal op de volgende manier mijn items op:


$query = "SELECT *
FROM `nieuws` "; 
$result = mysql_query($query, $link_id);
$row = @mysql_fetch_array($result);

$titel = ucfirst(htmlentities($row['titel']));

En dan echo ik gewoon $titel, maar er staan natuurlijk meerdere nieuws items in. Dus voor elk item moet er een div aangemaakt worden waar dan de titel en datum in woorden gegeven.

Hoe maak ik dit?, ik heb wel eens van lussen gehoord maar heb geen flauw idee hoe ze werken.
<?php
while ( $row = mysql_fetch_array ( $query, MYSQL_ASSOC ) ) {
// Maak hier je div aan
}
?>
Hier heb je een where lus nodig.

Om te beginnen moet je de ` (bakcticks) uit je query halen.
En dan moet je fetch_array in een while zetten, overigens is fetch_assoc net iets snellen daar zal ik dan ook een voorbeeld mee geven:

<?php

// backticks weg:
$query = "SELECT * FROM nieuws;";

// @ weg, die onderdrukt alleen als er iets fout gaat:
$result = mysql_query($query, $link_id) or trigger_error(mysql_error());

// een while:
while($row = mysql_fetch_assoc($result)){
//Iedere titel op een nieuwe regel:
echo ucfirst(htmlentities($row['titel'])).'<br>';
}

?>
Krijg er nog steeds maar 1 uit?


<?php
while($row = mysql_fetch_assoc($result)){
    //Iedere titel op een nieuwe regel:
    echo "<TD>".$merk."</TD>";
}
?>
je moet $merk waarschijnlijk vervangen door $row['merk'].

Daarnaast moet je jezelf er ook van verzekeren dat je meerdere records in je tabel hebt staan die je selecteert met je query.

Voor de rest klopt je code wel gewoon.
Dit snap ik niet:
Daarnaast moet je jezelf er ook van verzekeren dat je meerdere records in je tabel hebt staan die je selecteert met je query.

En $merk = $merk = ucfirst(htmlentities($row['merk']));
ucfirst maakt van de eerste letter een hoofdletter
html entities zorgt ervoor dat de html die in de db niet geparsed wordt om het zo ff te noemen

Met dat andere bedoelt hij dat je moet kijken of er wel echt meerdere rijen uit de query komen
Je moet dus meerdere rijen in je database hebben.

En vervang $merk eens door $row['merk']; waarom 2 variabelen met dezelfde inhoud!?
Op $merk worden gelijk de hoofletterenz toegepast, schilder veel werk als je het meer moet gaan gebruiken.

Er staan 300% 2 items in (zie ze staan in phpmyadmin)
Ok, het is misschien handig dit later te hebben, maar heb je de toewijzing dan wel binnen de while lust? dat zag ik namelijk niet in het stukje code wat je gaf?

[edit]Bovendien is het dan nog overbodig 2 variabelen te hebben als je de eerste niet meer gebruikt doe dan:
$row['iets'] = functie($row['iets']);
[/edit]
Mijn hele code:


<?php
include ('db.php');

$query = "SELECT * FROM autos;"; 
$result = mysql_query($query, $link_id) or trigger_error(mysql_error());
$row = mysql_fetch_array($result);

$merk = ucfirst(htmlentities($row['merk']));
$model = ucfirst(htmlentities($row['model']));
$prijs = ucfirst(htmlentities($row['prijs']));
$kleur = ucfirst(htmlentities($row['kleur']));
$bouwjaar = ucfirst(htmlentities($row['bouwjaar']));
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<title>Untitled Document</title>
</head>

<body>
<TABLE BORDER="1" ALIGN="left">
<TR>
<TD>Foto:</TD>
<TD WIDTH="250" >Merk:</TD>
<TD WIDTH="250">Model</TD>
<TD WIDTH="250">Kleur:</TD>
<TD WIDTH="250">Prijs:</TD>
</TR>
<TR>
<?php
while($row = mysql_fetch_assoc($result)){
$merk = ucfirst(htmlentities($row['merk']));
    //Iedere titel op een nieuwe regel:
	echo "<TD>fotp</TD>";
    echo "<TD>". $row['merk'] ."</TD>";
}
?>
</TR>
</body>
</html>

Reageren