<?php
include("dbase.php");
if($query = mysql_query("SELECT recordid, title, introtekst FROM artikelen ORDER BY recordid DESC"))
{
while($artikel = mysql_fetch_assoc($query))
{
echo '<h6>'.$artikel["title"].'</h6>';
echo '<p>'.$artikel["introtekst"].'</p>';

}
}
else
{
echo mysql_error();
}
?>
M.b.v. bovenstaande code worden de titel en de introtekst van alle artikelen in aflopende volgorde in een tabel op mijn idex.php geplaatst.
Op die index.php heb ik 9 tabellen gemaakt(3x3) en ik wil graag de "title" en "introtekst" van de 9 hoogste "recordid's" aflopend en afzonderlijk in deze 9 tabellen plaatsen. Ik kom er gewoonweg niet uit, hoop dat iemand mij wil helpen,
Eddie
@ Robert:

hmmm, het gekke is ook aan het script, dat we eerst het aantal tabelcellen berekenen en dan pas kijken hoeveel records er zijn.

Een betere strategie zou zijn om eerst de query uit te voeren, kijken hoeveel records je hebt en daarna uit te rekenen of er lege cellen zullen zijn. Dan heb je dus geen LIMIT meer in je query.
Das idd een beter plan denk ik Jan... Ik was nog wel aan het kijken bij de LIMIT. Zoals voor deze topic was aangegeven wou hij alleen maar de 1e 9 elke keer hebben... (maar het hoeft dus niet zo te zijn dat er ook echt 9 records of meer zijn) Dan moet de limit er maar script-afhankelijk in worden geplaatst.
EDIT: probeer deze eens, zonder limit dus?

<?php
$db = mysql_connect("localhost","root") or die ( "Het maken van de verbinding met de database is mislukt");
mysql_select_db("test",$db);

// aantal rijen uit tabel halen
$sql = "SELECT * FROM artikelen";
$query = mysql_query ($sql) or die (mysql_error ());

// aantal records berekenen
$aantal_rec = mysql_num_rows ($query);
$cellen_per_rij = 3; // of vul elke andere waarde in
$kolombreedte = 100 / $cellen_per_rij;

// tabel maken, zet eventueel een breedte van de tabel neer
// of een percentage met de width tag..
echo '<table width="760">';

// gegevens ophalen
while ($artikel = mysql_fetch_assoc($query))
{
// nieuwe rij maken
if ( ($i % $cellen_per_rij) == 0) {
echo '<tr>';
}

// gegevens weergeven
echo '<td width="' . $kolombreedte . '">';
echo '<h4>' . $artikel['title'] . '</h6>';
echo $artikel['introtekst'];
echo '</td>';

// rij afsluiten
if ( ($i % $cellen_per_rij) == ($cellen_per_rij - 1)) {
echo '</tr>';
}

$i++;
}

// berekenen hoeveel lege cellen er zullen zijn:
$rest = $aantal_rec % $cellen_per_rij;

if ($rest != 0) {
for ($j = 0; $j = $rest; $j++){
echo '<td>&nbsp;</td>';
}
echo '</tr>';
}

echo '<table>';
?>
@ Robert:
Als ik de code zoals ik hem nu heb bekijk, zou je die LIMIT er nu gewoon bij kunnen plaatsen als hij nodig is.
Als dat werkt, is het misschien wel een idee om er een functie van te maken en hem bij de scripts te plaatsen. De vraag: "Hoe krijg ik om de zoveel cellen een nieuwe rij?" Heb ik ik hier al vaak voorbij zien komen.

edit:
Die functie zou dan een array mee moeten krijgen met de veldnamen die je wilt zien, want dat aantal staat niet van te voren vast natuurlijk. Ik moet zo op pad, maar daar ga ik vanavond eens op studeren.
Wanneer ik een 3-voud aan records in mijn db heb gaat het (bijna) goed. Voeg ik 1 toe of verwijder ik er 1 dan loopt index.php vast in mijn browser. Als ik 12 records heb laat ie ze allemaal zien in asc volgorde. Ik wil graag maximaal 9 en dan in desc volgorde.
Ook krijg ik in de browser de melding dat variabele i niet is gedefinieerd. Ik doe mijn best het te begrijpen, maar ik ben de draad op dit moment even helemaal kwijt.

Eddie
Eddie,

die $i moet ergens geinitialiseerd worden voor de while lus. Ik ga vanavond even aan de gang met een test-tabel voor mezelf. Het komt goed ;-)
Fantastisch al die hulp.
Ik ben het even helemaal kwijt en ga maar eens proberen om de logica in jullie scripts te begrijpen. Als het werkt wil ik het ook begrijpen. Bedankt,

Eddie
@Jan

Ik ben nu met jouw script aan het testen, maar hij loopt telkens vast.. Ik kan zo niet vinden waar dat in zit.. Ik had dat ook met het eerdere script (met de LIMIT), die liep vast zo gauw ik de LIMIT ging weghalen. :S

Ik kan aan de code wel zien hoe je het bedoelt enzo.. en volgens mij zou het moeten werken.. ik wou eigenlijk met dit script gaan proberen met een for lus en een variabele die de gebruiker kan wijzigen (gewoon in het script zelf) een for lus te gaan gebruiken, waarin die dan bijvoorbeeld negen records naar je scherm "tovert" en met de rest van de records wordt dan niets gedaan..

EDIT:

Ik ben ff aan het proberen geweest, het script loopt bij mij niet vast wanneer ik er een limit van 9 bij zet, maar zonder limit wil die niet werken :S
Hoi Eddie en Robert,

ik kon een uurtje niet op phphulp.nl komen, lag er even uit. Maar ik ben met het script aan de gang gegaan.

Link: voorbeeldpagina
Nee klopt. Maar noem je dat een uurtje? Dat leek wel 2 1/2 uur!

Reageren