Autor Zpráva
Vojko
Profil
Dobrý deň,

chcel by som Vás požiadať o pomoc.
Potrebujem niečo také, že na stránke bude hore malý mesačný kalendár.
Pod tým kalendárom sa bude nachádzať formulár a jeden input by mal byť akože že: Dátum realizácie.
Tu chcem aby si klient vybral čas.
Chcel by som to spraviť tak, že si kliknem na dátum v tom kalendáriku a vyplní sa mi ten input tým dátumom.
Našiel som niečo podobné, no strašne zložite spravené.
Tu je niečo na taký štýl aký by som chcel, ale bez tých zbytočných funkcií: http://www.frequency-decoder.com/demo/date-picker-v4/
Jedná sa o ten Single Input in-line DatePickers.
Nechcem tam žiadne komplikované veci, proste iba čísielka dní na ktoré sa bude dať klikať a po kliknutí vyplnia input ktorý potrebujem.


Nemáte niekto niečo takého ?

Ďakujem za každú pomoc.
panther
Profil
Vojko:
tak kalendar na aktualni mesic je obycejna tabulka, v cyklu si do ni podle mesice vypis jednotliva data (cisla) a pak pri onclicku vypln nakliknutou hodnotou prazdny input.

Monstra jako jQuery a dalsi pluginy na pouhe plneni inputu nejakym datem nepotrebujes, jde to napsat kompletne vcetne HTML na par radek.
Vojko
Profil
Fúha, tak to nemám šajnu ako spraviť.
Joker
Profil
Vojko:
Nestačilo by obvyklejší řešení, což je normální textové políčko pro datum a když do něj uživatel klikne, otevře se kalendář pro výběr data?
Například nějak takto.
Vojko
Profil
Určite bolo ale potrebujem to tak ako som popisoval vyššie :/
Vojko
Profil
Nemáte aspoň nejaký jednoduchý kód na obyčajný mesačný kalendár ? :)
Rellik
Profil
Vojko:
Máme:
kalendar.php
<!DOCTYPE html>
<head>
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
    <title>Kalendář</title>
</head>
<body>
<?php

// pokud nejsou proměnné zinicializovány, vloží aktuální hodnoty
$month = $_GET['month'];
$year = $_GET['year'];
if(!IsSet($month)) $month = Date("m");
if(!IsSet($year)) $year = Date("Y");

// převod na korektní hodnoty
$year = Date("Y", MkTime(0,0,0, $month, 1, $year));
$month = Date("m", MkTime(0,0,0, $month, 1, $year));

$count_days = Date("t", MkTime(0,0,0, $month, 1, $year)); // počet dnů v měsíci

// ke každému dni přiřadí jeho číslo v týdnu (1 = pondělí, ...)
for($i=1;$i<=$count_days;$i++):
    $date[$i] = Date("w", MkTime(0,0,0,$month,$i,$year));
    if($date[$i]==0) $date[$i] = 7;
endfor;

$first = $date[1];    // číslo prvního dne v měsíci (1 = pondělí, ...)


// vypisuje odkazy pro zobrazení statistiky za dané období
function DateLink($from, $to, $text)
 {
  global $month, $year;
  
  if(MkTime(0,0,0,$month,$from,$year) >= MkTime(0,0,0, Date("m"), Date("d"), Date("Y"))):
      echo '<a href="kalendar.php?month=' . $month . '&year=' . $year . '&from_date=' . $year . '-' . $month . '-' . $from . '&to_date=' . $year . '-' . $month . '-' . $to . '">';
      echo $text;
      echo '</a>';
  else:
      echo $text;
  endif;
 }

?>

<table cellspacing="0" align="center">
<tr><td align="center" colspan="8">

<?php

// předchozí, aktuální a následující měsíc
echo '<a href="kalendar.php?month=' . ($month-1) . '&year=' . $year . '">&lt;&lt;</a>&nbsp;&nbsp;&nbsp;';
DateLink(1, $count_days, $month . " / " . $year);    // odkaz na měsíční statistiku
echo '&nbsp;&nbsp;&nbsp;<a href="kalendar.php?month=' . ($month+1) . '&year=' . $year .  '">&gt;&gt;</a>';

?>

</td></tr>
<tr><td>T</td><td>Po</td><td>Út</td><td>St</td><td>Čt</td><td>Pá</td><td>So</td><td>Ne</td></tr>

<?php

$day = 0;
for($x=0;$x<=5;$x++):
    echo '<tr><td align="center"><b>';

    // poslední den v týdnu
    
    if($x==0)    // první týden
        $end = 7-$first+1;
    elseif($day+7>=$count_days)    // poslední týden
        $end = $count_days;
    else    // zbylé týdny
        $end = $day+7;

    // odkaz na týdenní statistiku
    DateLink($day+1, $end, $x+1);

    echo '</td>';
    
    for($i=1;$i<=7;$i++):
        echo '<td align="center">';
        $day = $x*7+$i-$first+1; // na základě obou cyklů postupně počítá den
        
        if($date[$day] == $i)
            DateLink($day, $day, $day); // odkaz na denní statistiku
        else
            echo "&nbsp;";    

        echo '</td>';
    endfor;
    echo '</tr>';

    if(!CheckDate($month, $day+1, $year)) break; // pokud neexistuje následující datum, ukončí cyklus
endfor;
?>

</table>
</body>
</html>
Jak si ho už upravíš je na tobě... ;)
Vojko
Profil
Ďakujem veľmi pekne :)
Vojko
Profil
No skúšal som to nejak spraviť na ten input, ale bez úspechu :/
Nemáte niekto odkaz na tutoriál alebo na niečo podobné ?

Ďakujem :)
Rellik
Profil
Když k tomu výpisu kalendáře přidáš trochu javascriptu, tak ti zvolený datum vloží do inputu..
Tady je malá nápověda http://manual.top365.cz/index.php?akce=zobrazit&id=24
Vojko
Profil
Ďakujem veľmi pekne, funguje :)


Mohol by som ťa ešte poprosiť ?
Mám to napísané takto, funguje ale ani za toho boha tam neviem dať medzi dňom, mesiacom a rokom bodku.

Kód:
echo '<a href="#" onclick="document.Objednavka.date.value=' . $from . $month . $year . '">';

Skúšal som to, no buď totálna chyba alebo to nevpisovalo do inputu :D
Rellik
Profil
Zkus tak:
echo '<a href="#" onclick="document.Objednavka.date.value=' . $from .'.'.$month .'.'. $year . '">';
Vojko
Profil
Po kliknutí na dátum to nezapíše do inputu :/
Rellik
Profil
Tak tam zkus místo teček dát třeba - nebo / Případně něco jiného, co pak při výpisu pomocí funkce str_replace převedeš na co budeš chtít ;)
Vojko
Profil
Keď tam dám -, tak to vypíše iba do inputu -1994 :D
jenikkozak
Profil
Vojko:
To datum je řetězec, takže patří do uvozovek. Dá se to spáchat třeba pomocí escapování takto: (možností zápisu je víc, jistě je znáš, použij ten, co ti nejvíc vyhovuje)
echo '<a href="#" onclick="document.Objednavka.date.value=\"' . $from .'.'.$month .'.'. $year . '\"">'; //Edit: tohle je špatně
Vojko
Profil
Nejde :/ Nič do inputu nenapíše po kliknutí :/
jenikkozak
Profil
Vojko:
Á, promiň, udělal jsem začátečnickou chybu. :) V řetězci uvnitř apostrofů se zpětná lomítka nevyhodnocují.
echo "<a href='#' onclick='document.Objednavka.date.value=\"" . $from .".".$month .".". $year . "\"'>
Nebo se dá využít toho, že v řetězci uvnitř apostrofů se místo názvu proměnné dosazuje její hodnota:
echo "<a href='#' onclick='document.Objednavka.date.value=\"$from.$month.$year\"'>
Vojko
Profil
To už nejde vôbec :/
Ako keby to nebolo uzavreté, píše to chybu v tom riadku.
jenikkozak
Profil
Vojko:
Bude takový problém na konec doplnit uvozovky a středník? Předpokládal jsem, že za to budeš chtít přidat text odkazu.
Vojko
Profil
Pardón :)

Ďakujem veľmi pekne, funguje :)

Vaše odpověď

Mohlo by se hodit

Neumíte-li správně určit příčinu chyby, vkládejte odkazy na živé ukázky.
Užíváte-li nějakou cizí knihovnu, ukažte odpovídajícím, kde jste ji vzali.

Užitečné odkazy:

Prosím používejte diakritiku a interpunkci.

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