Autor | Zpráva | ||
---|---|---|---|
DarkMeni Profil |
#1 · Zasláno: 9. 12. 2011, 16:25:26
Zdravím, je v php něco, co by umělo zjistit datum vytvoření souboru jak se to dá zjistit u obrázků kdy byl třeba vyfocený nebo nakreslený, nebo u textových souborů kdy byl vytvořený?
Nebo se ten atribut, který je snad někde v tom souboru, po uploadu přepíše? A abych nevytvářel zbytečně další téma, tak mě nenapadá žádné jednoduché řešení pro zjištění řádku, třeba když dělám fotogalerii a u zvětšené fotky chci dát možnost přepnout na další fotku bez toho, aby si z ní uživatel musel vyjet a najít si ji mezi ostatními, tak potřebuju vědět id předchozí a další fotky, ale jde to zjistit nějakým snadným způsobem (kde by jsem nemusel procházet celou tabulku), když vim jen id zobrazené fotky? A poslední věc, kterou jsem sice vyřešil, ale myslím si, že je na to udělanej specialní datový typ sloupce, a to pro ukládání výsledku z mktime, jsou to jen čísla ale můžou mít různou délku, tak jsem na to dal varchar, přemýšlel jsem i nad nějakým int (medium nebo long) a taky jsem zkusil timestamp, ale v něm se mi to asi špatně ukládalo (protože po vytáhnutí a zjištění třeba dne.měsíce.roku pomocí date() mi vyšlo nějak 1.1.1970). Jaký by jsem měl pro to teda použít typ sloupce? |
||
Darker Profil |
#2 · Zasláno: 9. 12. 2011, 17:33:05
DarkMeni:
„datum vytvoření souboru“ Ano datum vytvoření souboru se zjistit dá a ano, jde to najít na google. Ale na to že se zasílá se souborem bych nesázel. Já datum vytvoření na svém upload serveru používám jako datum nahrátí souboru, takže asi ne. „tak potřebuju vědět id předchozí a další fotky, ale jde to zjistit nějakým snadným způsobem (kde by jsem nemusel procházet celou tabulku), když vim jen id zobrazené fotky?“ Záleží na koncepci tabulky. Pokud je fotka v buňce takto: <td><img id="f"></td> var td= document.getElementById("f").parentNode; „Jaký by jsem měl pro to teda použít typ sloupce?“ Vsadil bych se že existuje spešl sloupec pro datum. Někdo mi tuhle cpal že ho mám použít místo UNIX značky. |
||
DarkMeni Profil |
#3 · Zasláno: 9. 12. 2011, 17:55:33
Když se to dá najít na googlu tak jsem asi špatně hledal, tak dík.
A tabulku jsem myslel jako tabulku v databázi, napadlo mě třeba toto: //$id mam z $_GET jako id fotky (ošetřeno před tím SQL útokem) $dotaz = mysql_query('SELECT * FROM `photogallery`'); if(mysql_num_rows($dotaz) > 0){ $predchoziid = ''; $dalsiid = ''; $nalezeno = false; while($obrazek = mysql_fetch_assoc($dotaz)){ if($nalezeno){ $dalsiid = $obrazek['id']; break; } if($obrazek['id'] == $id){ $nalezeno = true; $informace = $obrazek; continue; }else{ $predchoziid = $obrazek['id']; } } //... vykreslení vybraného obrázku //A teď to přepínání echo (!empty($predchoziid)) ? '<a href="?picture='.$predchoziid.'" class="left">Předchozí</a>' : '', (!empty($dalsiid)) ? '<a href="?picture='.$dalsiid.'" class="right">Další</a>' : ''; } |
||
Darker Profil |
#4 · Zasláno: 9. 12. 2011, 17:59:04 · Upravil/a: Darker
No a jdou ta id popořadě? Pokud ano tak po aktuálním ID následuje ID+1.
Pokud ne tak mě leda napadá cyklus podobný tomu cos tu předvedl. |
||
Tori Profil |
#5 · Zasláno: 9. 12. 2011, 18:17:31 · Upravil/a: Tori
DarkMeni:
„potřebuju vědět id předchozí a další fotky, ale jde to zjistit nějakým snadným způsobem (kde by jsem nemusel procházet celou tabulku), když vim jen id zobrazené fotky?“ Koukněte do DB FAQ. Snad by to šlo upravit, abyste zároveň četl dva řádky - aktuální a následující (z nějž použijete jen ID). „specialní datový typ sloupce“ Vyberte si. (Nepíšete, jestli chcete jen datum nebo i čas, jestli stačí rozsah let 1970-2038 nebo větší.) „po vytáhnutí a zjištění třeba dne.měsíce.roku pomocí date()“ Mělo by to být Y-m-d nebo Y-m-d H:i:s
|
||
DarkMeni Profil |
#6 · Zasláno: 9. 12. 2011, 18:18:46 · Upravil/a: DarkMeni
Měly by jít popořadě, ale sem tam se stane že se nějaká fotka odstraní, a smaže se i řádek, pak už by popořadě nebyly.
Myslim si že kdyby těch fotek (nebo obrázků) už bylo přes (když to přeženu) 200, tak by ten cyklus nějakou dobu trval, takže jestli to nejde vyřešit rovnou třeba pomocí WHERE v dotazu. $dotaz = mysql_query("SELECT * FROM `photogallery` WHERE `id` = (SELECT MAX(`id`) FROM `photogallery` WHERE `id` <= ($id - 1)) OR `id` = $id OR `id` = (SELECT MIN(`id`) FROM `photogallery` WHERE `id` >= ($id + 1))"); while($info = mysql_fetch_assoc($dotaz)){ if($info['id'] < $id){ $predchozi = $info['id']; }elseif($info['id'] == $id){ $obrazek = $info; }elseif($info['id'] > $id){ $dalsi = $info['id'] } } Edit: Díky Tori, podívám se na to. |
||
DarkMeni Profil |
#7 · Zasláno: 10. 12. 2011, 15:05:22
Tak to teda na googlu opravdu šlo najít (špatně sem psal do vyhledávání), a ta funkce která to zjistí je: filectime('soubor.koncovka'); Ale když jsem to zkoušel, tak mi po date('j.n.Y', filectime('soubor.php')) vyšlo 8.12.2011, takze se to asi uploadem přepisuje (na PC jsem ho vytvořil asi před týdnem).
Tori: „(Nepíšete, jestli chcete jen datum nebo i čas, jestli stačí rozsah let 1970-2038 nebo větší.)“ To chci nechat na administrátorech, jaký formátování si vyberou, pak to nechám jako třeba: date($dotaz['timeformat'], $dotaz['mktime']); Takže jsem tam původně chtěl ukládat jen výsledek z mktime(), takže počet vteřin snad od 1.1.1970. Co jsem koukal tak ty typy to ukládaj už jako třeba: '10-3-2011' a ne jako třeba 1344543457865, co by se po dosazení k date() mohlo vypsat v tom pořadí, který si vybere admin (DD.MM.RRRR HH:MM:SS nebo třeba jen M.D.YY). Poslední otázku jsem teda vyřešil dvěma dalšíma dotazama k databázi: $prev = mysql_result(mysql_query('SELECT MAX(`id`) FROM `navigation` WHERE `id` < '.$_GET['picture']), 0); $next = mysql_result(mysql_query('SELECT MIN(`id`) FROM `navigation` WHERE `id` > '.$_GET['picture']), 0); |
||
Časová prodleva: 12 let
|
0