Hoe kan ik van een een bepaalde unieke id vanuit een database opnieuw rangschikken in een array zodat ik altijd 1,2,3,4,5 etc krijg?
Dus dat bijvoorbeeld unieke_id = 5 uiteindelijk nummer 2 is in een array.
lau - 05/09/2008 18:22 (laatste wijziging 05/09/2008 18:23)
HTML interesse
nee... ik bedoelde niet ordenen op id, dat kan ik wel.
Maar ik wil van de foto's met unieke_id uit album 2 opnieuw rangschikken met oplopende nummers.
Dat ik uiteindelijk niet met de unieke_id's werk, maar met de nieuwe oplopende nummers
Je geeft totaal geen informatie over hoe je database in elkaar zit, of hoe je script in elkaar zit. Mijn glazen bol heb ik weggebracht ter reparatie, dus ik stel voor dat je zelf even komt met die info.
<?php
$objA = mysql_fetch_object(mysql_query("SELECT id FROM fotos WHERE album = ".$_GET['album'])." ORDER BY id ASC");
$nummer = array($objA->id);
echo $nummer;
?>
Als ik het dus goed begrijp haal je foto's uit een album. Bij die foto's wil je een nummer laten zien, maar niet het id gebruiken omdat die niet oplopend is per album.
Gaat het dan om een overzicht per album, of wil je als je een specifieke foto bekijkt het nummer ook terugvinden?
Het eerste is natuurlijk makkelijk te realiseren door zelf een variabele bij te houden. Zoiets:
Wil je het ook bij een specifieke foto weergeven, dan zul je het op een andere manier moeten doen. Dan zou ik per foto een extra veld maken waarin je de plek opslaat, en deze updaten als je foto's binnen een album wilt verplaatsen. Je kunt dan gewoon het nummer printen wat in de database staat.
Het is eigenlijk zo.
Ik haal nu alle id's op van dat album en geeft ze dan weer in een overzicht (9 per pagina). Als ik een groot formaat wil, klik ik erop. Nu doe ik dat nog aan de hand van de id's. Maar dat geeft conflicten met een volgende/vorige systeem.
Stel dat ik nu alle foto's orden, dan kan ik simpel -1 of +1 gebruiken voor een vorige of volgende foto. Ik moet uiteindelijk wel terugvinden welk unieke id hoort bij welk nummer.
Het is eigenlijk zo.
Ik haal nu alle id's op van dat album en geeft ze dan weer in een overzicht (9 per pagina). Als ik een groot formaat wil, klik ik erop. Nu doe ik dat nog aan de hand van de id's. Maar dat geeft conflicten met een volgende/vorige systeem.
Stel dat ik nu alle foto's orden, dan kan ik simpel -1 of +1 gebruiken voor een vorige of volgende foto. Ik moet uiteindelijk wel terugvinden welk unieke id hoort bij welk nummer.
Gewoon een extra veld met daarin een nummer, dan kun je aan de hand van albumid/fotonummer gewoon de goede foto selecteren. Ga daar eens mee aan de slag, en kom terug als dat niet lukt.
Jah.. dat kan ik wel, maar dat wou ik nou precies vermijden. Ik dacht dat het ook zo zou kunnen. Want nu moet ik weer een volgorde reeks gaan aanbrengen wat dus ook weer wat aanpassen moet in mijn code. Afijn.
Het kan ook zonder, maar het is een erg makkelijke oplossing. Zeker als je later bijvoorbeeld besluit om een mogelijkheid toe te voegen om binnen een album foto's te verplaatsen. Dan moet je het wel op deze manier doen.
Ah jah, maar ik heb zowieso geen optie ingevoegd om foto's te rangschikken. Het moet eigenlijk juist willekeurig zijn, maar het is wel zo fijn om even orde te hebben bij het weergeven van de grote foto.
Maar goed, ik verzin wel iets.
function PreviousNext($iId, $sDirection)
{
Switch($sDirection)
{
Case 'previous':
Mysql_Query("SELECT unieke_id FROM fotos WHERE unieke_id<".$iId." AND album=".Mysql_Real_Escape_String($_GET['album'])." ORDER BY unieke_id DESC LIMIT 0,1");
Break;
Case 'next':
Mysql_Query("SELECT unieke_id FROM fotos WHERE unieke_id>".$iId." AND album=".Mysql_Real_Escape_String($_GET['album'])." ORDER BY unieke_id ASC LIMIT 0,1");
Break;
}
}
function PreviousNext($iId,$sDirection)
{
Switch($sDirection)
{
Case'previous':
Mysql_Query("SELECT unieke_id FROM fotos WHERE unieke_id<".$iId." AND album=".Mysql_Real_Escape_String($_GET['album'])." ORDER BY unieke_id DESC LIMIT 0,1");
Break;
Case'next':
Mysql_Query("SELECT unieke_id FROM fotos WHERE unieke_id>".$iId." AND album=".Mysql_Real_Escape_String($_GET['album'])." ORDER BY unieke_id ASC LIMIT 0,1");
Jah, dat heb ik ook al geprobeerd en bovendien gebruik ik nu zo'n format in plaats van dat andere (array dus). Maar het probleem hiervan is natuurlijk dat je vorige en volgende knoppen altijd zichtbaar zijn, ook als je een eerste of laatste foto hebt. Maar dat heb ik ondertussen via een workaround weggewerkt.