Aktivní checkbox pouze v určité době – HTML / XHTML – Fórum – Programujte.com
 x   TIP: Přetáhni ikonu na hlavní panel pro připnutí webu

Aktivní checkbox pouze v určité době – HTML / XHTML – Fórum – Programujte.comAktivní checkbox pouze v určité době – HTML / XHTML – Fórum – Programujte.com

 

Lukáš Šašek
~ Anonymní uživatel
1 příspěvek
28. 8. 2015   #1
-
0
-

Dobrý den, potřeboval bych udělat formulář seznam položek na každý den jedna - dvě (například jídel), u každé položky checkbox. Checkbox by šel vybrat pouze pokuď by nebyl již zastaralý (tudiž položka 27.8.2015 Humr na másle by dnes nešel vybrat ve formuláři. 

Děkuji za jakékoliv rady a nápady.

S pozdravem

Nahlásit jako SPAM
IP: 217.75.223.–
Kit+15
Guru
28. 8. 2015   #2
-
0
-
Nahlásit jako SPAM
IP: 2a00:1028:83a0:37a6:207:e...–
Komentáře označují místa, kde programátor udělal chybu nebo něco nedodělal.
ondrej39+1
Věrný člen
28. 8. 2015   #3
-
+1
-
Zajímavé
Kit +

#1 Lukáš Šašek
Na tohle ti samotné HTML stačit nebude. Budeš to potřebovat udělat buď pomocí JavaScriptu nebo PHP, kdy si zjistíš aktuální den, porovnáš den položky u níž je checkbox a na základě srovnání položku buď zablokuješ, nebo ne.

Nahlásit jako SPAM
IP: 79.141.243.–
Inject all the dependencies!
peter
~ Anonymní uživatel
3981 příspěvků
31. 8. 2015   #4
-
0
-

ondrej390 - "buď pomocí JavaScriptu nebo PHP" - Nemel by spoledat na JS: new Date(), ale na datum serveru PHP: date('...',time()). Vypis pak samozrejme muze resit uz pres JS.

Lukáš Šašek - priklad do skoly?

<script>

function x(date)
{
//date = '31.8.2015 9:04';
//today = new Date(2015, 7, 31, 9, 4, 0);	//m-1
var today;
date  = (date+' 0 0 0').replace(/\D+/g,' ').split(' '); // pridat 3 nuly a mezery, kdyby nebyl zadan cas
today = new Date(date[2]*1, date[1]*1-1, date[0]*1, date[3]*1, date[4]*1, date[5]*1);
/*
alert([
today.getFullYear(),
today.getMonth(),
today.getDate(),
today.getHours(),
today.getMinutes(),
today.getSeconds()
]);
*/
return today;
}


var date1str, date1, date2, data, i,str,row;
date1str = '31.8.2015 9:04';
data = '\
11.6.2015 9:04;AAA\n\
11.7.2015 9:04;BBB\n\
31.8.2015 9:04;CCC\n\
11.9.2015 9:04;DDD\n\
11.10.2015 9:04;EEE\
'.split("\n");
date1 = x(date1str);
str = '';
for (i=0;i<data.length;++i)
{
row = data[i].split(';');
date2 = x(row[0]);
if (date2<date1)
	{str+=row[0]+' - '+row[1];}
else
	{str+='<label><input type="checkbox" name="ch'+i+'" value="'+row[0]+'">'+row[0]+' - '+row[1]+'<\/label>';}
str+='<br>';
}
document.write(str);
</script>
Nahlásit jako SPAM
IP: 2001:718:2601:1f7:1157:e4...–
Kit+15
Guru
31. 8. 2015   #5
-
0
-

#4 peter
Ani na datum PHP serveru se nedá spolehnout. Používám datum SQL serveru - nemusím se přitom vůbec o nic starat, zapíše si ho sám. Stačí jen v INSERTu zavolat funkci NOW() nebo jen zadat typ sloupce TIMESTAMP.

Nahlásit jako SPAM
IP: 2a00:1028:83a0:37a6:207:e...–
Komentáře označují místa, kde programátor udělal chybu nebo něco nedodělal.
peter
~ Anonymní uživatel
3981 příspěvků
31. 8. 2015   #6
-
0
-

Uzivatelovo datum v pc je nejiste, to pouziva js. To je jasne, uzivatel muze mit datum chybne.
Datum PHP se ti nelibi proc?
Datum SQL je lepsi pouze v pripade, ze SQL a PHP jsou odlisne servery a pro sql prikazy pouzivas pro ukladani NOW() a ne php date(...,time()). Pokud jsou php a sql na jednom serveru, tak ten datum bude stejny.

Nebo by to chtelo vzit vsechny datumy a vybrat ten nejvhodnejsi pomoci randomu :)

Nahlásit jako SPAM
IP: 2001:718:2601:1f7:1157:e4...–
peter
~ Anonymní uživatel
3981 příspěvků
31. 8. 2015   #7
-
0
-

Jenze, pro zobrazovani (SELECT) jidelnicku te NOW vubec nezajima, tam je omezeni na konkretni  den a hodinu, kdy uz nejsou schopni objednat dost surovin. Na maticni.cz (pro Opavu) to byva tusim do 8:00 rano.

Nahlásit jako SPAM
IP: 2001:718:2601:1f7:1157:e4...–
Kit+15
Guru
31. 8. 2015   #8
-
0
-

#6 peter
Když budeš škálovat aplikaci, můžeš mít klidně 20 totožných serverů s Apache+PHP a k tomu jeden server s MySQL. Na vstupu dáš jeden balancer, který bude požadavky rozhazovat na těch 20 serverů. Jako celek to bude fungovat a ta databáze to také zvládne. Je dobré mít jen jeden zdroj času a ten databázový se k tomu hodí prostě nejlépe.

Při insertu prostě dáš now() a nemusíš nikde lovit nějaký nespolehlivý date() v PHP. Je to skoro zadarmo a nemusíš to té DB předávat přes parametr. Je to tedy i rychlejší.

Při selectu si vyhodnotíš, jestli to datum je starší či novější než now() - 8 hodin a v daném sloupečku pošleš aplikaci příznak active/inactive. PHP tuto informaci pouze převede do podoby checkboxu v HTML. Opět skoro zadarmo - spíš nějaký ten výkon ušetříš.

Může se stát, že si klient zobrazí stránku v 7:59 a klikne na objednání oběda až v 8:00:01. Tohle se dá velmi snadno ošetřit přímo v insertu. U lepších DB strojů se to dá nadefinovat přímo ve sloupci tabulky jako integritní omezení. PHP pak nemusí dělat vůbec nic, pouze ošetří případnou výjimku - to ostatně dělá vždy. U MySQL se dá téhož docílit obyčejným triggerem.

Nahlásit jako SPAM
IP: 2a00:1028:83a0:37a6:207:e...–
Komentáře označují místa, kde programátor udělal chybu nebo něco nedodělal.
Zjistit počet nových příspěvků

Přidej příspěvek

Toto téma je starší jak čtvrt roku – přidej svůj příspěvek jen tehdy, máš-li k tématu opravdu co říct!

Ano, opravdu chci reagovat → zobrazí formulář pro přidání příspěvku

×Vložení zdrojáku

×Vložení obrázku

Vložit URL obrázku Vybrat obrázek na disku
Vlož URL adresu obrázku:
Klikni a vyber obrázek z počítače:

×Vložení videa

Aktuálně jsou podporována videa ze serverů YouTube, Vimeo a Dailymotion.
×
 
Podporujeme Gravatara.
Zadej URL adresu Avatara (40 x 40 px) nebo emailovou adresu pro použití Gravatara.
Email nikam neukládáme, po získání Gravatara je zahozen.
-
Pravidla pro psaní příspěvků, používej diakritiku. ENTER pro nový odstavec, SHIFT + ENTER pro nový řádek.
Sledovat nové příspěvky (pouze pro přihlášené)
Sleduj vlákno a v případě přidání nového příspěvku o tom budeš vědět mezi prvními.
Reaguješ na příspěvek:

Uživatelé prohlížející si toto vlákno

Uživatelé on-line: 0 registrovaných, 5 hostů

Podobná vlákna

Assembler v dnesni dobe — založil fredy

Určitě víte, ale já ne — založil crash969

Rolování určité oblasti — založil minarth

Deserializace určité třídy — založil Mutagen

 

Hostujeme u Českého hostingu       ISSN 1801-1586       ⇡ Nahoru Webtea.cz logo © 20032024 Programujte.com
Zasadilo a pěstuje Webtea.cz, šéfredaktor Lukáš Churý