Autor | Zpráva | ||
---|---|---|---|
martia Profil * |
Ahoj,
chtěla bych vytvořit něco jako kroniku, kde by se po kliknutí na jednotlivé měsíce, roky zobrazil příslušný text z databáze. Zatím jsem se setkala jen s formuláři a galerií, ale zajímalo by mne, zda se od toho mohu odpíchnout, nebo se na to musí jít jinak, příp. jak? Díky :) <?php $akce=$_GET['akce']; $query="SELECT * FROM fotky WHERE akce='$akce' ORDER BY cesta;"; $result=MYSQL_QUERY($query); $rows=MYSQL_NUM_ROWS($result); $i=0; while($zaznam= MYSQL_FETCH_OBJECT($result)){ PRINT " <a class='fotoak' href=\"javascript:;\" onclick=\"window.open ('galerie_detail.php?akce=$akce&poradi=$i&celkem=$rows', 'detail','menubar=no, scrollbars=yes, width=860, height=750, resizable=no, top=0px, left=80px');\"> <img id=\"fotoam\" src=\"foto/$zaznam->rok/$akce/nah/$zaznam->cesta.jpg\" alt=\"$zaznam->popis\" /> </a>"; $i++; } PRINT "<p> Z akce je $rows fotek</p>"; MYSQL_CLOSE(); ?> ___ <?php $akce = $_GET['akce']; $poradi = $_GET['poradi']; $celkem = $_GET['celkem']; if($poradi > 0){ $predchozi = $poradi-1;} if($poradi < ($celkem- 1)){ $nasledujici = $poradi+1;} $query="SELECT * FROM fotky WHERE akce='$akce' ORDER BY cesta LIMIT $poradi,1;"; $result=MYSQL_QUERY($query); $rows=MYSQL_NUM_ROWS($result); $fotka = MYSQL_FETCH_OBJECT($result); PRINT "<div> <div style=\"position:absolute;width:15px;right:25px;top:12px;border: 1px white solid;padding:2px;font-weight:bold\"> <a class=\"posuv\" href=\"javascript:;\" onclick=\"window.close();\">x</a></div>"; if($predchozi >= 0 and isset($predchozi)){ PRINT "<a class=\"posuv\" href=\"galerie_detail.php?akce=$akce&poradi=$predchozi&celkem=$celkem\"> << předchozí </a> ";} if($nasledujici){ PRINT "<a> </a><a class=\"posuv\" href=\"galerie_detail.php?akce=$akce&poradi=$nasledujici&celkem=$celkem\">následující >></a>";} PRINT "</div>"; PRINT "<p>$fotka->popis</p>"; PRINT "<p><img id=\"fotoa\" onclick=\"window.close();\" src=\"foto/$fotka->rok/$fotka->akce/$fotka->cesta.jpg\" alt=\"kliknutim se fotka zavře\" /></p>"; MYSQL_CLOSE(); ?> Moderátor panther: Vkládej prosím kódy mezi značky [>pre] a [>/pre] (stačí kliknout na ).
|
||
panther Profil |
#2 · Zasláno: 15. 2. 2011, 10:14:49
martia:
nechci zkoumat celý kód, ale nikde v SQL dotazu nevidím podmínku na datum. Ten budeš přenášet pravděpodobně v $_GET .
|
||
martia Profil * |
#3 · Zasláno: 15. 2. 2011, 10:31:58
panther:
asi tak? :) akce budou tří druhů.. <?php $query="SELECT * FROM akce WHERE rok='2004' ORDER BY mesic;"; ?> |
||
panther Profil |
#4 · Zasláno: 15. 2. 2011, 10:37:30 · Upravil/a: panther
martia:
než ukládat jednotlivé části data zvlášť (rok, měsíc, den, [hodinu, minutu?]), ukládal bych datum (a čas) a porovnával pomocí funkce date_format(), kterou z uloženého data vycucneš to, co potřebuješ. |
||
martia Profil * |
#5 · Zasláno: 15. 2. 2011, 11:28:07
panther:
takže když mám tabulku v db: id, mesic, rok, akce, nadpis, text tak mám sloučit mesic a rok? a jak ta funkce pozná z kterého sloupce generovat? |
||
panther Profil |
#6 · Zasláno: 15. 2. 2011, 11:33:04
martia:
udělej si tabulku (id, akce, nadpis, text, datum), kde datum bude date nebo datetime. Např. … WHERE date_format(datum, '%Y') = '2011' vybere věci z letošního roku (snad tam není chyba :-) ).
|
||
martia Profil * |
#7 · Zasláno: 15. 2. 2011, 13:29:15
|
||
panther Profil |
#8 · Zasláno: 15. 2. 2011, 14:36:06 · Upravil/a: panther
martia:
samozřejmě, proč ne :-) Roky filtrují (na základě té URL) pravděpodobně pomocí where datum between '$_GET['updated_min']' and '$_GET['updated_max']' , jednotlivé měsíce podobně where date_format (datum, '%Y_%m_%d') .
Všechno se dá udělat, chce to jen pohrát si s datem, podle kterého filtruješ. Datum, příp. časové rozmezí musíš někde přenášet, nejsnáze právě v URL - a na jejím základě pak selektuješ údaje z DB. |
||
Časová prodleva: 13 let
|
0