Kirjautuminen

Haku

Tehtävät

Keskustelu: Nettisivujen teko: Päivän kuva?

Sivun loppuun

desharosh [24.10.2008 15:17:42]

#

Pitäis saada sellanen scripti joka valitsee kuvan tietystä kansiosta ja vaihtaa kuvaa 24h välein. Sellanen pitäs vielä olla ettei näytä samaa kuvaa 2 kertaa.

Ottaako joku haasteen vastaan? :)

kayttaja-2791 [24.10.2008 15:35:11]

#

desharosh kirjoitti:

Ottaako joku haasteen vastaan? :)

Tarkoittaako tämä että tekeekö joku sulle ko. skriptin "avaimet kouraan" -periaatteella? Vastaus siihen on melkoisen varmasti "ei".

Grez [24.10.2008 15:39:11]

#

Ei tuossa ole mitään haastetta, pelkkää suoraviivaista työtä.

Kuka tahansa PHP:tä kunnolla osaava pystyy tekemään tuollaisen alle tunnin työllä.

Vähän sama kuin sanoisi: "Pitäis saada oja kaivettua. Ottaako joku haasteen vastaan?"

Lebe80 [24.10.2008 15:47:40]

#

Grez: "I'll do it!"

desharosh: ei muuta kuin vähän harjottelemaan esim. php:n käyttöä.

desharosh [25.10.2008 01:17:44]

#

Pakko kai se sitten on. winkswinks

temu92 [25.10.2008 01:31:43]

#

No vinkkinä sanon että jos on mahdollisuus käyttää MySQL:ää niin tämän teko helpottuu vaikka kuinka paljon. On vähän kokemusta omista "järkevistä" tiedostotietokannosta. Niin epäselviä kuin vaan pystyy olemaan :D

Vinkkinä annan että yksinkertainen tietokanta voisi olla:

Kuvatietokanta - taulu galleriakuvat
id       | tiedostonimi      | paivankuvana   | (kaytetty)
------------------------------------------------------------
1        | moporikki.jpg     | 1224887786     | 1
2        | lolcat.jpg        | 0              | 0
------------------------------------------------------------

Tuo viimeinen suluissa oleva sarake on vaihtoehtoinen koska sen onko kuva jo ollut käytössä voi tarkistaa myös paivankuvana aikaleimasta, koska niillä jotka eivät ole vielä olleet kuvana on aikaleima tietysti aina 0. Vaihtumisen voi toteuttaa helposti ottamalla taulusta sql lauseella (php:n funktio mysql_query) SELECT * FROM `galleriakuvat` WHERE `paivankuvana` = 0 ORDER BY `id` DESC LIMIT 1 (haku ilman kaytetty saraketta) ja sitten käyttämällä php:n funktiota mysql_return ottamaan kuvan tiedot ja sitten UPDATE lauseella päivitetään kuvan tietoja. Tiedä sitten miten sql gurut tekisi mutta ainakin itse tekisin noin.

Jos käytetään taas tiedostotietokantaa homma muuttuu hieman mutkikkammaaksi, mutta toimii silti ihan samalla periaatteella.

tsuriga [25.10.2008 13:28:05]

#

Ehdotuksia yllä olevaan: SELECT * FROM ==> SELECT `id`, `tiedostonimi`, `paivankuvana`, `kaytetty` FROM ja mysql_query ==> MySQLi->query.

Metabolix [26.10.2008 00:42:17]

#

Pakkohan sitäkin oli kokeilla. Koodi on melkoisen selkeää, jos vain ymmärrät, mitä mikäkin funktio tekee. Jos et, lue PHP:n manuaalista, esim. https://www.php.net/array_diff.

<?php
function paivan_kuva($kuvahakemisto = "kuvat", $naytetyt_f = "naytetyt.txt", $aikaformaatti = "Y-m-d") {
	if (!file_exists($naytetyt_f)) touch($naytetyt_f);
	$naytetyt = array_map("trim", file($naytetyt_f));
	$nayttamatta = array_diff(glob("$kuvahakemisto/*"), $naytetyt);
	if (empty($nayttamatta)) return paivan_kuva_hukassa($naytetyt_f);
	$paiva = date($aikaformaatti, filemtime($naytetyt_f));
	if ($paiva != date($aikaformaatti)) { # Uusi päivä, merkitään vanha kuva näytetyksi
		$i = paivan_kuva_hae_indeksi($nayttamatta, $paiva);
		$naytetyt[] = $nayttamatta[$i];
		file_put_contents($naytetyt_f, implode("\n", $naytetyt));
		unset($nayttamatta[$i]);
		if (empty($nayttamatta)) return paivan_kuva_hukassa($naytetyt_f);
		$paiva = date($aikaformaatti);
	}
	return $nayttamatta[paivan_kuva_hae_indeksi($nayttamatta, $paiva)];
}
function paivan_kuva_hukassa($naytetyt_f) {
	touch($naytetyt_f);
	return "hukassa.jpg";
}
function paivan_kuva_hae_indeksi(&$taulu, $arpa) {
	sscanf(md5($arpa), "%7x", $i);
	$a = array_keys($taulu);
	return $a[$i % count($a)];
}
echo paivan_kuva("etusivukuvat", "etusivukuvat_naytetty.txt", "Y-m-d");

Sivun alkuun

Vastaus

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

Tietoa sivustosta