Kjapp og trygg hosting for Wordpress

Hvordan kode dette sammen? [php, mysql]

Mr Vest

Sjefen over alle sjefer!
Jeg var ikke helt sikker på tittel i denne tråden. Må gjerne endres til noe mer passede om noen har en bedre tittel.

Ok, jeg skal forsøke å forklare kjapt og greit.

Jeg viser en artikkel som er hentet fra "artikler" (tabell1) i min database.

Inne i denne artikkelen henter jeg ut data fra "games" (tabell 2). For å hente ut riktige rader fra "games" i artikkelen bruker jeg et felt i begge to tabellene som har samme verdi.

Problemet mitt er at jeg ikke er sikker på hvordan jeg kan kode det hele sammen slik at alt blir akkurat slik jeg vil ha det. Jeg vil nemlig ha det slik (la oss si at det er 9 rader som hentes ut fra tabell2 (games) i dette tilfellet):

<ul>
<li>Rad fra database</li>
<li>Rad fra database</li>
<li>Rad fra database</li>
</ul>
<ul>
<li>Rad fra database</li>
<li>Rad fra database</li>
<li>Rad fra database</li>
</ul>
<ul>
<li>Rad fra database</li>
<li>Rad fra database</li>
<li>Rad fra database</li>
</ul>

Dvs, jeg vil altså ha en <ul> før hver tredje rad som hentes ut fra "games," og jeg vil ha en </ul> etter de tre, før den igjen starter med de neste tre radene også i <ul> og </ul> og slik skal det altså fortsette til alt er kommet ut.

Jeg undrer meg egentlig bare litt på hvordan dette burde være kodet for at det skal bli så bra som mulig. Trenger ikke noen svære kodeforklaringer altså, men hvertfall et par linjer som gjerne sier liksom rett ut hvordan man gjør det.

Hehe, takk på forhånd. Og forresten. Tannleger er skummelt. :)
 
Dersom $result er resultatet av en mysql_query() som henter ut radene i games og feltet du skal vise heter "spilltittel":

PHP:
// Sjekk om rader eksisterer
if (mysql_num_rows($result)) {

	// La oss bruke variabelen $i som counter
	$i = 0;

	// Start første punktliste
	echo '<ul>'."\n";

	// For hver rad ...
	while ($spillarray = mysql_fetch_array($result, MYSQL_ASSOC)) {

		// Dersom counteren viser at vi har vist tre rader siden sist en punktliste startet...
		if ($i == 3) {

			// Avslutt denne punktlisten, start en ny punktliste...
			echo '</ul>'."\n".'<ul>'."\n";

			// ... og nullstill counteren
			$i = 0;
		}

		// Vis en rad ...
		echo '<li>'.$spillarray['spilltittel'].'</li>'."\n";

		// ... og øk counteren med 1
		$i++;
	}

	// Avslutt siste punktliste
	echo '</ul>';
}

Alternativt (gir nøyaktig samme output, så du velger selv hva du foretrekker):

PHP:
// Sjekk om rader eksisterer
if (mysql_num_rows($result)) {

	// La oss bruke variabelen $i som counter
	$i = 0;

	// For hver rad ...
	while ($spillarray = mysql_fetch_array($result, MYSQL_ASSOC)) {

		// Dersom counteren viser at vi foreløpig ikke er inne i en punktliste ...
		if ($i == 0) {

			// Start en ny punktliste
			echo '<ul>'."\n";
		}

		// Vis en rad ...
		echo '<li>'.$spillarray['spilltittel'].'</li>'."\n";

		// ... og øk counteren med 1
		$i++;

		// Dersom counteren viser at dette er tredje rad i inneværende punktliste ...
		if ($i == 3) {

			// Avslutt punktlisten...
			echo '</ul>'."\n";

			// ... og nullstill counteren
			$i = 0;
		}
	}
}
 
Sist redigert:
Topp