Hej, Jeg er igang med at lave et billedgalleri, hvor jeg selvuploader billederne til ftpp i foldere med indhold. I den forbindelse skal jeg så have lavet noget listning af folderne og deres indhold.
Så det jeg gerne vil, er at kunne fremvise en liste over folderne som er uploadet, hvor mange billeder der er i folderen og så datoen på folderen.
Har rettet koden til dette nu: foreach (glob($image_dir, GLOB_ONLYDIR) as $folder){ $folder = explode("/", $folder); echo "<a href='".$_SERVER['PHP_SELF']."?action=createalbum&albumname=$folder[2]'>$folder[2]</a><br>"; }
I princippet kan du med lige præcis denne kode godt bruge $folder begge steder, men du skal ikke rette særlig meget i den, før scriptet 'vælter'. Ved at bruge samme variabelnavn til de to vidt forskellige ting, sætter du vand over til øretæver.
Prøv altid at forebygge fejl og misforståelser i forbindelse med evt. senere ændringer/udbygninger. Det er to forskellige ting, du hælder ned i din variabel med samme navn. Det ville derfor være mere hensigtsmæssigt at vælge to forskellige navne ;o)
Okay, nu et andet problem... Har redigeret lidt i koden, for at sætte et stykke sql ind, inden den printer folderne ud:
foreach (glob($image_dir, GLOB_ONLYDIR) as $folder){ // ..og exploder på / for at finde foldernavn $folder_complete = explode("/", $folder);
$sql = "SELECT COUNT(*) FROM gallery WHERE folder = '".$folder_complete[2]."'"; $query = mysql_db_query($dbName, $sql);
if (mysql_num_rows($query) == 0) { // ..for dernæst at lave datoen om til normal dato $date = date("d.m.Y", mktime(0, 0, 0, substr($folder_complete[2], 4, 2), substr($folder_complete[2], 6, 2), substr($folder_complete[2], 0, 4))); // ..og printer linket ud til sidst echo $date." - <a href='".$_SERVER['PHP_SELF']."?action=createalbum&albumname=$folder_complete[2]'>".substr($folder_complete[2], 9)."</a><br>"; } }
Ideen i det hele er, at når jeg klikker på et album, som bliver printet ud, så opretter jeg det album i databasen med diverse indhold.
Og når albummet er oprettet i databasen, så skal det selvfølgelig ikke vises i listen mere, og det var hvad jeg prøvede at lave med det sql kald inden den printer folderne ud. Men der ud til at mysql_num_rows($query) hele tiden er 1, selvom jeg kun har oprettet det første album i databasen "Opel Vectra".
F.eks. sådan: $sql = "SELECT noget FROM gallery WHERE folder = '".$folder_complete[2]."'"; $query = mysql_db_query($dbName, $sql); $antal = mysql_num_rows($query);
jakobdo: jamen, er det ikke det samme som jeg har allerede? Hvor jeg får resultat 1 på alle 3 foldere, selvom det kun er den første folder der er oprettet i databasen?
Jeg har rettet det til, så det nu er sådan her: $sql = "SELECT folder FROM gallery WHERE folder = '".$folder_complete[2]."'"; $query = mysql_db_query($dbName, $sql);
if (mysql_num_rows($query) == 0) { // ..for dernæst at lave datoen om til normal dato $date = date("d.m.Y", mktime(0, 0, 0, substr($folder_complete[2], 4, 2), substr($folder_complete[2], 6, 2), substr($folder_complete[2], 0, 4))); // ..og printer folderen ud til sidst echo $date." - <a href='".$_SERVER['PHP_SELF']."?action=createalbum&albumname=$folder_complete[2]'>".substr($folder_complete[2], 9)."</a><br>"; }
COUNT(*) er lidt hurtigere, generelt, fordi COUNT(folder) kun tæller felter der ikke er NULL - hvilket så skal checkes, derfor lidt dyrere. Måske optimeres checket væk for felter, der ikke kan være NULL - det ved jeg så ikke.
Nu er jeg kommet så langt i det hele, at jeg skal have hevet første billede ud af de mapper der bliver gennemgået ved dette: foreach (glob($image_dir, GLOB_ONLYDIR) as $folder){
}
Denne printer bare mappernes navn ud, men kan jeg i samme ombæring - på en eller anden måde - få fat i første billede i den mappe den printer ud?
Hvordan definere du "første billede"? Men ja, du kan lave en "glob" mere inde i løkken med dit $folder-navn, og så en "/*" bagefter. Og så tage hvad du nu synes er det første filnavn...
Hmm...tror jeg ikke lige jeg forstår, hvordan jeg skal gøre :-) Jeg printer jo mapperne ud, og ved hver mappe vil jeg gerne have vist det første billede som thumb til hvert galleri...
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.