Autor Zpráva
DarkMeni
Profil
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
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>
Pak lze zjistit element buňky:
var td= document.getElementById("f").parentNode;
A další buňka pak bude něco jako nextElementChild nebo podobně. Případně také můžeš zjistit index buňky v řádku a použít ten.

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
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>' : '';
}
Tak jednodušší způsob by nebyl? Třeba hned v dotaze mu říct že chci 3 řádky s tím že 1 by byl předchozí toho vybraného a 3 by byl hned ten další po vybraném, ale zase kdyby ten vybraný byl první, tak aby ten první řádek byl prázdný nebo aby jsem poznal který je který.
Darker
Profil
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
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
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']
  }
}
Na tomto příkladě to samozřejmně bude k SQL syntaxi špatně, ale někde jsem viděl select v selectu.

Edit: Díky Tori, podívám se na to.
DarkMeni
Profil
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);
Takže díky Darker, Tori.

Vaše odpověď

Mohlo by se hodit


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm:

0