Kirjautuminen

Haku

Tehtävät

Keskustelu: Nettisivujen teko: Kuvagallerian teko

Sivun loppuun

dartvaneri [01.08.2011 09:29:27]

#

Hei!
Olen miettinyt sellaista galleriaa, jossa olisi rivi pikku kuvia, vaikka viis kappaletta, ja sitten niiden päällä olisi yksi iso kuva. Viidestä pikku kuvasta keskimmäinen olisi sama kuin se yläpuolella oleva isokuva. Ja aina kun vaihtaa kuvaa niin se menee keskimmäiseksi, ja kaks seuraavaa tulee siihen vierelle. Toteutus kielenä ajattelin lähinnä php:tä. Toivottavasti tajusitte mitä ajan takaa.

Ps. Tarkoitus on hakea ideaa toteuttamiseen, jota mun pää nyt ei ole oikein järkevästi saanut kasaan. Eli en tarvi valmista galleria koodia.

The Alchemist [01.08.2011 09:35:04]

#

Suomeksi: haluat valmista koodia. Ihan vain väärinkäsitysten välttämiseksi. Valmiiksi koodiksi kutsutaan myös niitä erillään toimivia palasia, joita liimailemalla toisiinsa saat kokonaisen gallerian kasaan.

P.S. Mikäli et osaa PHP:llä ohjelmoida mutta haluaisit niin tehdä, niin opettele PHP:tä. Täällä Putkassa on ihan hyvä opas sitä varten.

Macro [01.08.2011 09:50:29]

#

Goolaa vaikka javascript image gallery tai flash image gallery. Löysin heti vaikka kuinka monta ilmaista ladattavaa ohjelmaa.

dartvaneri [01.08.2011 10:02:58]

#

Macro teen mielummin sen php:llä.
The Alchemist: Nyt tuli sulla juurikin sellainen väärinkäsitys.

Pystyykö kansiossa olevia kuvia jotenkin tietämään koodilla että missä järjestyksessä ne on? siis että jos mulla on image.png niin voiko tietää mikä tulee seuraavaksi?

Hei muuten vois kokeilla sellaista, jos se onnistuis, että kun etin kansiosta kuvia koodilla, niin laitan ne taulukkoon, siis kuvan nimet ja sieltä vaan sitten hajen kuvan nimen sieltä ja tulostan.

Lebe80 [01.08.2011 10:20:07]

#

dartvaneri:
Kansion tiedostoja pystyy haistelemaan esim. glob -funktiolla.

Kyseinen funktio palauttaa tulokset array-muuttujaan, josta pystyt taas selvittämään tiedostojen järjestyksen. Tietenkin pystyt järjestämään listan itsekin.

dartvaneri [01.08.2011 10:21:34]

#

okei :)
Vois katsella tuota muuttujaa.

dartvaneri [02.08.2011 00:28:26]

#

Nyt tuli pikku ongelma, johon kaipaan apua. Nimittäin yritän saada laskettua tiedostojen määrää hakemistossa, jotta saisin tietää milloin mulla loppuu tiedostot, sitä varten, että se ei tulosta niitä tyhjiä pikkukuvia sinne loppuun loputtomasti, jos ei ole kuvia saatavilla. Koodia oon yrittänyt väsätä, mutta jokin on vialla, kun ei toimi, voisko joku vähän helppiä? Koodi:

$hakemisto .= "./kuvat/*.jpg";
$tiedostojen_maara = glob($hakemisto);
echo count($tiedostojen_maara);

Edit. lisäsin ton .jpg:n tonne jotta se ei kaikkia tiedostoja hyväksy :)

Edit. no nyt toi ongelma on pois, mutta mitenköhän sais tohon useampia päätteitä: jpg,JPG,png,PNG,gif,GIF ? Yritin arraylla, mutta en saanut toimiin.

Othnos [02.08.2011 01:00:40]

#

dartvaneri kirjoitti:

Nyt tuli pikku ongelma, johon kaipaan apua. Nimittäin yritän saada laskettua tiedostojen määrää hakemistossa, jotta saisin tietää milloin mulla loppuu tiedostot, sitä varten, että se ei tulosta niitä tyhjiä pikkukuvia sinne loppuun loputtomasti, jos ei ole kuvia saatavilla.

Kyllä ainakin minulla kyseinen koodisi toimii? Voisitko selvittää miten sen pitäisi toimia?

edit:

dartvaneri kirjoitti:

Edit. no nyt toi ongelma on pois, mutta mitenköhän sais tohon useampia päätteitä: jpg,JPG,png,PNG,gif,GIF ? Yritin arraylla, mutta en saanut toimiin.

Ainakin seuraavalla tavalla

// Halutut päätteet kaarisulkuihin pilkulla erotettuina ilman välilyöntejä.
$hakemisto .= "./kuvat/{*.jpg,*.JPG,*.png,*.PNG,*.gif,*.GIF}";
// Itse glob-funktiolle annetaan lisäksi flag GLOB_BRACE
$tiedostojen_maara = glob($hakemisto, GLOB_BRACE);

dartvaneri [02.08.2011 01:02:05]

#

Joo no mulla oli sielä joku "näkymätön" viiva, jota en omalla editorillani nähnyt, mutta serkku sitten näki sen omalla editorilla, ja ongelma korjautu.

dartvaneri [02.08.2011 21:11:58]

#

jostain syystä tämä koodi ilmoittaa nolla, siis toki lisäsin sinne

$maara = count($tiedostojen_maara);
echo $maara;

Grez [02.08.2011 21:14:12]

#

Onko hakemistossa ./kuvat/ tiedostoja?

dartvaneri [02.08.2011 21:15:41]

#

on

Tällä koodilla se löytää kuusi.jpg päätteistä, eli kaikki, mutta jos tähän lisätään esimerkin mukaan noi päätteet niin nolla pyörähtää..

if (glob("./kuvat/*.jpg") != false)
{
 $tiedostojen_maara = count(glob("./kuvat/*.jpg"));
 echo $tiedostojen_maara;
}
else
{
 echo "0";
}

Metabolix [02.08.2011 21:20:34]

#

Miksi koodissa on .= eikä pelkkä = sijoituksessa?

Dokumentaation mukaan GLOB_BRACE ei toimi kaikissa järjestelmissä, tosin jää epäselväksi, missä ja miksi. Linuxissa pitäisi kyllä toimia.

Jos hakemistossa ei ole muuta kuin kuvia, voit laittaa yksinkertaisesti "kuvat/*.*". Muutenkin voit käyttää tuota ja filtteröidä tiedostonimet jälkikäteen:

$tiedostot = preg_grep('`\\.(jpg|gif|png)$`i', (array) glob("kuvat/*.*"));

Grez [02.08.2011 21:21:43]

#

Jännää sinänsä, että mulla tuo ilmoittaa 1, vaikka hakemistossa ei olisi yhtään kuvaa... Jos on 1 tai useampi, niin ilmoittaa oikean määrän.

Mutta onko sulla warningit ja noticet päällä?

Metabolix [02.08.2011 21:22:40]

#

Grez, count(false) on 1. Näppärää? :) En edelleenkään ymmärrä, miksi glob edes palauttaa Windowsissa tyhjästä hakemistosta falsen eikä tyhjää taulukkoa. Vaikka käytössä olisi jokin käyttöjärjestelmän glob-rajapinta, ei varmaan olisi iso vaiva PHP:n puolella muuttaa toimintaa yhtenäiseksi.

dartvaneri [02.08.2011 21:23:03]

#

Se on kai tullut vahingossa. Meidän palvelimessä on opensuse, eiks se oo linuxin käyttöjärjestelmä? Kuvia ja yks kansio.

Jeps toi koodi toimii, kiitos :)

Grez [02.08.2011 21:24:27]

#

Tarkoitin siis, että mitenköhän dartvaneri saa 0, kun ...

Ja mulla se palauttaa FreeBSD:ssä sen falsen tyhjästä hakemistosta, en oo kokeillut Windowsissa.

Ehkä se dartvanerilla palautti jotain muuta jos ei tykännyt bracesta tms.

Onneksi en koodaa PHP:llä ;D

Metabolix [02.08.2011 21:26:00]

#

Niin, dartvaneri saa nollan, kun dartvanerilla on parempi käyttis, joka ymmärtää palauttaa tyhjän arrayn. ;) Dokumentaation mukaan "an empty array if no file matched or FALSE on error". Minulla on aina Linuxissa tullut tyhjä array tyhjästä hakemistosta, jännää.

Mutta jos on ongelmia globin kanssa, kannattaa ehkä siirtyä suosiolla listaamaan kaikki ja poimimaan toivotut preg_grepillä.

dartvaneri [02.08.2011 21:26:35]

#

öö, ilmeisesti toi "." oli vikana siinä koodissa, koska ilman tota toimii.

Grez [02.08.2011 21:28:33]

#

Metabolix kirjoitti:

Niin, dartvaneri saa nollan, kun dartvanerilla on parempi käyttis, joka ymmärtää palauttaa tyhjän arrayn.

OpenSuse on parempi kuin FreeBSD? No joo, voihan se olla, mutta itse en nyt laittaisi käyttiksiä paremmuusjärjestykseen ainakaan pelkästään yhden PHP-funktion perusteella..

dartvaneri [02.08.2011 21:29:21]

#

Kyllä mulla palautti 0 tyhjässä kansiossa, ku testasin.

Grez [02.08.2011 21:31:40]

#

Joo no ei se oo olennaista, ellei sun koodin tarvi toimia eri ympäristöissä. Ilmeisesti PHP ei osaa FreeBSD:ssä erottaa tyhjää hakemistoa virhetilanteesta. En taas tajunnut tuota kun ihmettelin tätä ongelmaa. Niinkuin Metabolix sanoi, niin ei luulis olevan mahdotonta tehdä sitä toimimaan samalla tavalla eri ympäristöissä.

dartvaneri [02.08.2011 22:10:57]

#

Pystyykö taulukosta hakemaa indeksi arvoa? Siis että kun on taulukko:

$autot = array('audi','volvo','lada');

niin $auto[1] on volvo, mutta voinko hakea sanalla volovo, että saan tulokseksi 1?

Metabolix [02.08.2011 22:20:49]

#

https://www.php.net/array_search
Ja tuossa ajassa olisit jo koodannut itse sen haun yhdellä foreach-silmukalla.

Grez [02.08.2011 22:21:40]

#

dartvaneri kirjoitti:

Pystyykö taulukosta hakemaa indeksi arvoa? Siis että kun on taulukko:

$autot = array('audi','volvo','lada');

niin $auto[1] on volvo, mutta voinko hakea sanalla volovo, että saan tulokseksi 1?

$autot = array('audi','volvo','lada');
echo $autot[1]; //Tulostaa volvo
echo $array_search('volvo', $autot); //tulostaa 1
//Vaihtoehtoja
$avaimet = $array_flip($autot);
echo $avaimet['volovo']; //tulostaa tyhjän ja antaa noticen koska taulukossa ei ole volovo
echo $avaimet['volvo']; //Tulostaa 1

dartvaneri [02.08.2011 22:29:28]

#

Kiitos ! :)

Edit. Nyt se on jo pitkällä, ehkä vielä teen kuvatekstitki.. http://ekuvat.dy.fi/galleria/galleria.php

qeijo [03.08.2011 12:14:50]

#

$autot = array("audi" => "1", "volvo" => "2", "lada" => "3");
print $autot["volvo"]; //Tulostaa 2..

Sivun alkuun

Vastaus

Aihe on jo aika vanha, joten et voi enää vastata siihen.

Tietoa sivustosta