Ik ben bezig met het maken van een website. Programmeren dat lukt me wel maar nu zit ik vast met een berekening. Het is een beetje lastig voor mij te omschrijven maar ik zal mijn best doen.
Ik heb een pagina nummering probleempje. Op mijn pagina is wel al een gewone paginanummering aanwezig maar ik ben nu bezig met een paginanummering voor mijn fotos, een fotonummering.
Wanneer je op de site op een foto klikt dan zie je de foto in het groot, daaronder wil ik de nummering in de vorm van:
foto 1, foto2, huidige foto, foto 4, foto 5
Nu doet zich het volgende probleem voor:
bekijk ik:
foto nr 1 dan zie ik: foto 2, foto 3, foto 4, foto 5 //goed
foto nr 2 dan zie ik: foto 1, foto 3, foto 4, foto 5 //goed
foto nr 3 dan zie ik: foto 2, foto 4, foto 5, foto 6 //fout
foto nr 4 dan zie ik: foto 2, foto 3, foto 5, foto 6 //goed
bij foto 3 wil ik zien: foto 1, foto2, foto 4, foto 5
Er is iets fout met de manier waarop ik mijn offset bereken. Ik kan wel een andere manier bedenken waarop het misschien zou kunnen werken (dmv een while loop en een teller) maar dat is minder mooi. Weet iemand misschien hoe ik de offset goed zou kunnen berekenen? Of misschien een andere manier om dit goed op te lossen?
Als het niet duidelijk is ofzo dan hoor ik het wel, alvast heel erg bedankt.
probleem!
Het enige probleem wat ik nu heb is het probleem met de offset op de 3e pagina.
als ik 4 paginanummers wil (2 volgende en 2 vorige wanneer je in het midden van een gallery zit of 1 volgende en 3 vorige als je op de voor laatste foto zit) dan ziet het er als volgt uit:
Code: Selecteer alles
paginanr, array_size, offset
1 4 0
2 5 0
3 6 0
4 7 1
5 8 2
De offset is hoever ik moet inspringen als ik bijvoorbeeld op pagina 5 zit dan is de offset twee om de volgende reden. Kijk ik naar wat er in de reeks zit dan zie je:
1, 2, 3, 4, 6, 7, 8, 9
Hiervan wil ik alleen laten zien: 3,4,6,7 de offset is dus 2 omdat ik begin bij 3.
Zit ik op pagina 3 dan is de reeks
1, 2, 4, 5, 6, 7
Hiervan wil ik laten zien 1,2,4,5. De offset is 0.
Voor de geinteresseerden is hier de PHP code:
Code: Selecteer alles
function getFotoNummering($id, $bestandsnaam, $gallery_id, $aantal_nummers)
{
$sql = "SELECT id, bestandsnaam FROM fotos WHERE id < '" . $id . "' AND gallery_id = '" . $gallery_id . "' ORDER BY fotos.id DESC LIMIT 0, " . $aantal_nummers;
$rs_ouder = mysql_query($sql) or die(mysql_error());
$sql = "SELECT id, bestandsnaam FROM fotos WHERE id > '" . $id . "' AND gallery_id = '" . $gallery_id . "' LIMIT 0, " . $aantal_nummers;
$rs_nieuwer = mysql_query($sql);
while($data = mysql_fetch_array($rs_ouder))
{
$arr_nummering[$data["id"]]["bestandsnaam"] = $data["bestandsnaam"];
$arr_nummering[$data["id"]]["id"] = $data["id"];
}
$arr_nummering[$id]["bestandsnaam"] = $bestandsnaam;
$arr_nummering[$id]["id"] = $id;
while($data = mysql_fetch_array($rs_nieuwer))
{
$arr_nummering[$data["id"]]["bestandsnaam"] = $data["bestandsnaam"];
$arr_nummering[$data["id"]]["id"] = $data["id"];
}
//sorteren
ksort($arr_nummering);
//bereken de offset
$aantal = mysql_num_rows($rs_ouder) + mysql_num_rows($rs_nieuwer);
$offset = ( ($aantal) - $aantal_nummers);
$offset = / $offset
//doet zich voor aan het eind van de gallery, omdraaien
if(mysql_num_rows($rs_ouder) > mysql_num_rows($rs_nieuwer))
{
$arr_nummering = array_reverse($arr_nummering);
}
$arr_nummering = array_slice($arr_nummering,$offset,$aantal_nummers + 1);
//doet zich voor aan het eind van de gallery, terugdraaien
if(mysql_num_rows($rs_ouder) > mysql_num_rows($rs_nieuwer))
{
$arr_nummering = array_reverse($arr_nummering);
}
$foto_nummering .= "aantalnr:" . $aantal_nummers . " arr_gr:" . count($arr_nummering) . " offset: " . $offset . "<br>";
//zet ze in de nummering
foreach ($arr_nummering as $key => $value)
{
if($id == $value["id"])
$foto_nummering .= "<img src='uploads/thumb_" . $value["bestandsnaam"] . "' style='width: 50px; height: 50px; Filter: Gray; Alpha(Opacity=50);'>";
else
$foto_nummering .= " <a href='" . $_SERVER['PHP_SELF'] . "?pagina=gallery&actie=bekijk_foto&gallery_id=" . $gallery_id . "&id=" . $value["id"] . "'><img style='width: 50px; height: 50px;' src='uploads/thumb_" . $value["bestandsnaam"] . "'></a> ";
}
//nu nog ding in het midden zetten
return $foto_nummering;
}