Autor | Zpráva | ||
---|---|---|---|
soucekgns Profil |
#1 · Zasláno: 10. 6. 2011, 13:08:55
Potřeboval bych ze složky vypsat pouze určitý počet souborů (např. 3)
Mám tento script, ale nevím jak ho upravit, zkoušel jsem Odkaz, ale to nefunguje. Díky za rady $slozka = opendir("albums/".$album->thumbs."/"); while ($soubor = readdir($slozka)) { if ($soubor != "." && $soubor != "..") { } } |
||
Michal Benda Profil |
#2 · Zasláno: 10. 6. 2011, 13:35:39
Jako třeba jenom první tři soubory? Moc teda nevím k čemu je to dobré, ale nemohlo by to být takto?
$slozka = opendir("albums/".$album->thumbs."/"); $x=1; while ($soubor = readdir($slozka)) { if ($soubor != "." && $soubor != "..") { echo $soubor."<br />"; $x++; if($x == 3){ break; } } } Nevím jestli chceš vypisovat jenom názvy a nebo obsahy těch souborů, ale postup by byl obdobný... |
||
soucekgns Profil |
#3 · Zasláno: 10. 6. 2011, 13:43:16
Michal Benda:
„nevím k čemu je to dobré“ :-) k vytvoření odkazu na fotogalerii Díky, to postačí |
||
Taps Profil |
#4 · Zasláno: 10. 6. 2011, 13:46:10
soucekgns:
zkus níže uvedené <? $slozka = opendir("albums/".$album->thumbs."/"); while ($soubor = readdir($slozka)) { if ($soubor != "." && $soubor != "..") { $nazev[]=$soubor; } } shuffle($nazev); echo $nazev[0]; echo $nazev[1]; ?> |
||
soucekgns Profil |
#5 · Zasláno: 10. 6. 2011, 13:51:28 · Upravil/a: soucekgns
to funguje.. s menší úpravou :-), diky
shuffle($nazev); for ($i = 0; $i < 10; $i++) { echo $nazev[$i]; } |
||
Rellik Profil |
#6 · Zasláno: 10. 6. 2011, 21:52:42 · Upravil/a: Rellik
EDIT: příspěvek odebrán aby nemátl... Funkční řešení je v dalším mé odpovědi...
|
||
Alphard Profil |
#7 · Zasláno: 11. 6. 2011, 00:11:05 · Upravil/a: Alphard
Rellik:
„$celkove_zaznamu = MySQL_Num_Rows(mysql_query('select * from galerie'));“ Tak tohle snad ani neukazujte... Zbytek nebudu ani číst, ale nestačilo by něco jako tohle? select * from galerie order by rand() limit 10 |
||
Rellik Profil |
#8 · Zasláno: 11. 6. 2011, 07:56:42 · Upravil/a: Rellik
Alphard:
> „$celkove_zaznamu = MySQL_Num_Rows(mysql_query('select * from galerie'));“ > Tak tohle snad ani neukazujte... Jo je možné, že je to prasárna, je to script z dob mých začátků a jelikož to funguje, tak to nějak neřeším... ;-) Jinak ta DB je tam jen na to aby se doplnila složka z fotkama. Fotky to pak náhodně ukazuje z té složky. V podstatě tam ta DB nemusí vůbec být... Nicméně cituji: Funkci mysql_num_rows je vhodné použít pouze v případě, kdy data z tabulky budeme tak jako tak potřebovat... Takže nevidím důvod to tak nepoužít, protože ty data to stejně hned vypisuje. kdyby šlo pouze o vypsání počtu záznamů, tak beru, že by byl vhodnější ten druhý zápis... |
||
Alphard Profil |
#9 · Zasláno: 11. 6. 2011, 12:32:37
Rellik:
„Nicméně cituji: Funkci mysql_num_rows je vhodné použít pouze v případě, kdy data z tabulky budeme tak jako tak potřebovat... Takže nevidím důvod to tak nepoužít“ Naprosto jste to nepochopil. Vy nevypisujete data získaná tím dotazem, po zjištění počtu řádků vše zahodíte. Co to dělá dál jsem se ani nesnažil zjistit, ale vypadá to na šílenost, která by šla zkrátit na pět řádků. Když už sem dáváte staré skripty, aspoň to nechte v editoru přeformátovat, v tomhle se nedá vyznat. soucekgns: „zkoušel jsem Odkaz, ale to nefunguje“ Jak nefunguje, vypisuje se nějaká chyba? |
||
Rellik Profil |
#10 · Zasláno: 11. 6. 2011, 14:27:45 · Upravil/a: Rellik
Alphard:
„, v tomhle se nedá vyznat.“ vyznat se v tom dá. Jen se chce podívat dál.. z té databáze se zjistí počet vytvořených fotogalerií, z toho se pak náhodně jedna vybere a dosadí k otevření složky ze které se načtou všechny vložené fotografie z nichž se opět náhodně jenom jedna zobrazí. A pochybuju že by se to celé vlezlo na 5 řádků kódu.. Jo a ještě sem zapomněl že se zároveň přitom všem generuje minuatura zrovna zobrazené fotky.. Jinak myslím není problém si to ořezat podle potřeby... <?php $id_galerie = './slozka/'; //složka ze které má být náhodný obrázek zobrazen $pocet = 0; if($ra = opendir($id_galerie)) { $vypis_file = array(); while ($soubor_file = readdir ($ra)) { if($soubor_file!="."&&$soubor_file!=".."&&!is_dir($soubor_file)) { $pocet++; $nahodny = rand(1,$pocet); $vypis_file[$nahodny] = $soubor_file; } } } while (list($celkem, $nazev) = each ($vypis_file)) { $vytvor_nahled = "<img src=\"".$id_galerie."/".$nazev."\" alt=\"".$nazev."\" />"; if (($celkem >= 1) and ($celkem < 2)) { echo $vytvor_nahled."\n"; } } echo "<br />Celkový počet fotek je: ".$pocet; closedir($ra); ?> |
||
Tori Profil |
#11 · Zasláno: 11. 6. 2011, 18:59:05
Rellik:
Sice jste nežádal o radu, ale když už to sem dáváte jako řešení, tak mi to nedá: Středník za podmínkou (ř.5) způsobí, že se následující řádek provede i v případě, že je podmínka vyhodnocena jako false. Předpokládám, že jste chtěl napsat : anebo { (a odpovídající ukončení za řádkem 28). Návratovou hodnotu u readdir (první blok while) bych porovnávala pomocí ===, vysvětlení vizte v manuálu v části o návratových hodnotách. while (($soubor_file = readdir($ra)) !== false) Na ř.10 stačí ověření pomocí !is_dir() - "." a ".." jsou přeci také složky. Ještě by šlo zabránit chybovým hláškám v případě špatně zadané cesty: if (is_dir($id_galerie)) { $ra = opendir($id_galerie); |
||
Alphard Profil |
#12 · Zasláno: 11. 6. 2011, 19:08:20 · Upravil/a: Alphard
Rellik:
„vyznat se v tom dá. Jen se chce podívat dál..“ Řečnický obrat, musíte uznat, že v podobě [#10] je to mnohem přehlednější. Smazal jste mi původní kód, takže na to nelze snadno reagovat, pokusím se ale odhadnout situaci. Máte fotogalerii postavenou tak, že jednotlivé galerie jsou v samostatných adresářích a chcete vybrat jednu náhodnou fotku. $dirs = glob('img/*', GLOB_ONLYDIR); shuffle($dirs); // doplňuji, rychlejší by bylo použít array_rand() $images = glob("$dirs[0]/*.jpg"); shuffle($images); echo "<img src=\"$images[0]\"><br>\nCelkový počet: ".count($images); |
||
Rellik Profil |
#13 · Zasláno: 11. 6. 2011, 19:55:08 · Upravil/a: Rellik
Tori:
„Středník za podmínkou (ř.5) způsobí, že se následující řádek provede i v případě, že je podmínka vyhodnocena jako false“ Jj díky za upozornění. Já tam měl původně chybovou hlášku když galerie neexistovala. Chybka se vloudila - kód sem opravil.. Je plně funkční. Alphard: Předchozí řešení nebudem dál řešit. ono je to trochu složitější... část popisu jak mi to funguje sem psal v minulém příspěvku. Ale pro pořádek zopakuju: 1/ v DB mám uložené názvy vytvořených složek galerie (ty se vytváří v administraci při vytvoření nové galerie) 2/ script, který sem smazal má několik úkolů: A - z databáze náhodně vybrat jednu složku galerie B - zjistit jestli galerie obsahuje už nějaké fotky C - pokud ano tak ze složka vybrat náhodně jeden obrázek D - zjistit, jestli už je pro daný obrázek vygenerována miniatura a podle toho ji zobrazit a nebo vytvořit jako odkaz na patřičnou galerii na webu E - vypsat počet fotek a název galerie Teď snad uznáte, že to na těch 5 řádků opravdu nejde... A dál to neřešme... :-) |
||
Časová prodleva: 14 let
|
0