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\">&nbsp; &lt;&lt; předchozí </a>
  ";}
if($nasledujici){
  PRINT "<a>&nbsp; &nbsp; &nbsp; </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
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 *
panther:
asi tak? :) akce budou tří druhů..

<?php
$query="SELECT * FROM akce WHERE rok='2004' ORDER BY mesic;";
?>
panther
Profil
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 *
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
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 *
panther:
a docílím tohoto

Odkaz - "Archiv blogu"
?
panther
Profil
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.

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: