Gå til innhold

Mange-til-mange-relasjon og loop inne i en annen loop


Anbefalte innlegg

Her er det kun brukt 1 spørring med flere joins, satt sammen med php.

 

<?php
//henter db connection
include_once('config.php');

$query = "SELECT linkfilmspraak.linkfilmspraakid ,linkfilmsjangere.linkfilmsjangereid, filmer.fiid, filmer.filmtittel, sjangere.sjanger, spraak.spraak FROM filmer LEFT JOIN linkfilmspraak ON linkfilmspraak.linkfilmspraak_fiid = filmer.fiid LEFT JOIN linkfilmsjangere ON linkfilmsjangere_fiid = filmer.fiid LEFT OUTER JOIN sjangere ON linkfilmsjangere_sjid = sjangere.sjid LEFT OUTER JOIN spraak ON spraak.spid = linkfilmspraak_spid ORDER BY filmer.filmtittel ASC, sjangere.sjanger ASC, spraak.spraak ASC";
$q = mysql_query($query) or die(mysql_error());

$array = array();
while($res = mysql_fetch_object($q))
{
//create results array
if(array_key_exists($res->fiid, $array) == FALSE)
{
	$array[$res->fiid]['tittel'] = $res->filmtittel;
	$array[$res->fiid]['sjanger'][$res->linkfilmsjangereid] = $res->sjanger;
	$array[$res->fiid]['spraak'][$res->linkfilmspraakid] = $res->spraak;
}
else
{
	$array[$res->fiid]['sjanger'][$res->linkfilmsjangereid] = $res->sjanger;
	$array[$res->fiid]['spraak'][$res->linkfilmspraakid] = $res->spraak;
}
}

echo '<table>
<tr>
<td id="filmtittel">Tittel</td>
<td id="sjanger">Sjangere</td>
<td id="spraak">Språk</td>
</tr>'."\r\n";

foreach($array AS $key => $res)
{
echo '<tr>'."\r\n";
echo '<td>'.$res["tittel"].'</td>';

echo '<td>';

$count = 0;
foreach($res["sjanger"] AS $sjanger)
{
	$count++;
	$eyecandy = ($count == count($res["sjanger"])) ? "." : ", ";
	echo $sjanger.$eyecandy;
}
echo '</td>';

echo '<td>';

$count = 0;
foreach($res["spraak"] AS $spraak)
{
	$count++;
	$eyecandy = ($count == count($res["spraak"])) ? "." : ", ";
	echo $spraak.$eyecandy;
}
echo '</td>';

echo '</tr>'."\r\n";
}

echo '</table>'."\r\n";

?>

Lenke til kommentar
  • 5 uker senere...
Videoannonse
Annonse

Dette ser ut til å fungere utmerket! Takker så mye, zandzpider! :)

 

Her er det kun brukt 1 spørring med flere joins, satt sammen med php.

 

<?php
//henter db connection
include_once('config.php');

$query = "SELECT linkfilmspraak.linkfilmspraakid ,linkfilmsjangere.linkfilmsjangereid, filmer.fiid, filmer.filmtittel, sjangere.sjanger, spraak.spraak FROM filmer LEFT JOIN linkfilmspraak ON linkfilmspraak.linkfilmspraak_fiid = filmer.fiid LEFT JOIN linkfilmsjangere ON linkfilmsjangere_fiid = filmer.fiid LEFT OUTER JOIN sjangere ON linkfilmsjangere_sjid = sjangere.sjid LEFT OUTER JOIN spraak ON spraak.spid = linkfilmspraak_spid ORDER BY filmer.filmtittel ASC, sjangere.sjanger ASC, spraak.spraak ASC";
$q = mysql_query($query) or die(mysql_error());

$array = array();
while($res = mysql_fetch_object($q))
{
//create results array
if(array_key_exists($res->fiid, $array) == FALSE)
{
	$array[$res->fiid]['tittel'] = $res->filmtittel;
	$array[$res->fiid]['sjanger'][$res->linkfilmsjangereid] = $res->sjanger;
	$array[$res->fiid]['spraak'][$res->linkfilmspraakid] = $res->spraak;
}
else
{
	$array[$res->fiid]['sjanger'][$res->linkfilmsjangereid] = $res->sjanger;
	$array[$res->fiid]['spraak'][$res->linkfilmspraakid] = $res->spraak;
}
}

echo '<table>
<tr>
<td id="filmtittel">Tittel</td>
<td id="sjanger">Sjangere</td>
<td id="spraak">Språk</td>
</tr>'."\r\n";

foreach($array AS $key => $res)
{
echo '<tr>'."\r\n";
echo '<td>'.$res["tittel"].'</td>';

echo '<td>';

$count = 0;
foreach($res["sjanger"] AS $sjanger)
{
	$count++;
	$eyecandy = ($count == count($res["sjanger"])) ? "." : ", ";
	echo $sjanger.$eyecandy;
}
echo '</td>';

echo '<td>';

$count = 0;
foreach($res["spraak"] AS $spraak)
{
	$count++;
	$eyecandy = ($count == count($res["spraak"])) ? "." : ", ";
	echo $spraak.$eyecandy;
}
echo '</td>';

echo '</tr>'."\r\n";
}

echo '</table>'."\r\n";

?>

Lenke til kommentar

Opprett en konto eller logg inn for å kommentere

Du må være et medlem for å kunne skrive en kommentar

Opprett konto

Det er enkelt å melde seg inn for å starte en ny konto!

Start en konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
×
×
  • Opprett ny...