webForumDet fria alternativet

Vill ha ut rätt post

Databaser & SQL

5 svar · 517 visningar · startad av Helmertz

Medlem sedan maj 2005353 inlägg
Frågan#1

Jag har ett bildgalleri som är uppbyggt av två tabeller, photo och album. Photoid är primärnyckel och albumid refererar till primärnyckeln i album. Jag visar mitt foto men vill också ange vilket kort det är i ordningen jämfört med det totala antalet bilder i albumet. Behövs mer info? :)

Medlem sedan maj 2005353 inlägg
#2

Totala antalet bilder var enkelt:

SELECT COUNT(*) AS images FROM photo WHERE albumid = '$albumid' GROUP BY albumid

Hur får man fram vilken bild i ordningen en bild är?

Tabellen photo, essentiella entiteter:
photoid
albumid

Det gäller MySQL 4.0.21 med PHP som scriptspråk.

Medlem sedan feb. 200622 inlägg
#3

Du kan ju alltid lägga in alla bildID´n från bilderna i just det galleriet i en array, i ordning. Sedan kollar du i arrayen vilken nyckel bilden har som visas och presenterar den.

Medlem sedan dec. 19996 721 inlägg
Medlem sedan maj 2005353 inlägg
#5

joleno skrev:

Du kan ju alltid lägga in alla bildID´n från bilderna i just det galleriet i en array, i ordning. Sedan kollar du i arrayen vilken nyckel bilden har som visas och presenterar den.

Hur skulle det se ut i PHP?

emission skrev:

http://www.webforum.nu/showthread.php?t=152060

Antar att du syftar på det accepterade svaret, kan du hjälpa mig omformulera det med mina entiteter? Är inte riktigt hemma på hur man skriver ut svaret där heller.

Medlem sedan feb. 200622 inlägg
#6

Helmertz skrev:

Hur skulle det se ut i PHP?

Nåt i den här stilen kanske:

<?php

//den bild som nu visas för besökaren
$picture_now = 8;

//skapar en array
$picture_array = array();

$sql = "SELECT id FROM pictures WHERE gallery = '5' ORDER BY id ASC";
$result = mysql_query($sql);
//loopar igenom databasen och fyller arrayen med de bilder som hör till galleriet
while ($row = mysql_fetch_assoc($result)) {

	array_push($picture_array, $row['id']);

}

//loopar igenom arrayen med bilder från galleriet
while ($this = current($picture_array)) {

	//när den bild som visas för besökaren hittas i arrayen tas nyckeln fram som blir ordningsnummret för bilden...
	if ($picture_now == current($picture_array)) {
		echo key($picture_array);
	}

	next($picture_array);

}

?>
262 ms totalt · 4 externa anrop · v20260731065814-full.6fe65c25
128 ms — deklarationer (db)
0 ms — hämta statistik (cache)
128 ms — hämta tråd, inlägg och bilagor (db)
131 ms — ändringar (db)