Zdravim,
Ako by sa dalo urobit nieco ako ze sa bude registrovanym userom pocitat cas a zapisovat sa do db napr vo formate dni? Potom by som do selectol z db a urcil podmienky napr. if (den == 50) { echo "toto je tvoj 50.den"; }
Dakujem
A hlavne aby sa nedal ovplyvnit uzivatelmi, samozrejme :)
nepresny zadani, takze co tohle:
pri registraci uzivatele ulozit do db datum registrace. pri vypisu stranky odecist od aktualniho data datum registrace.
to by slo, ale nebolo by lepsie kazdy den zvysit hodnotu danu hodnotu +1?
bol by v tom lepsi prehlad, a tak isto keby som chcel vypisovat vsetko do statistiky, server by sa pri selecte tak nenadrel
Ten tvuj napad je neefektivni. A jak chces zajistit zvysovani hodnoty o +1 kazdy den? No lze to zajistit, ale tento pripad by prave nejvic zatezoval server.
Tonikuv napad je lepsi a vubec nezatezuje server. Rozdil casu se provadi na urovni skriptu, nikoli sql dotazem. Selectem jen vyberes data, a pak jen obycejnou pocetni opreraci provedes rozdil.
Skutečně je lepší zapsat si do databáze datum registrace (zejména třeba ve formátu datetime). Zaprvé nemusíš provádět u každého uživatele každodenní inkrementaci. Pak bych ale Tomíka doplnil - správným sql dotazem si můžeš zjistit přímo rozdíl v datech - hledej mysql funkci datediff().
Mohli by ste mi pomoct nejakym tutorialom?
Ako mam vlozit cas, kt. by sa nedal ovplyvnit uzivatelom?
Pro mysql tutoriál si projdi http://www.linuxsoft.cz/article_list.php?id_kategory=232
Při registraci uložíš aktuální čas vygenerovaný pomocí mysql funkce now() a při počítání rozdílu zase vyselectuješ datediff(NOW() dany_sloupec)
Až proletíš ten tutoriál, bude se ti to imho zdát jasnější
No tak to si mi teda velmi nepomohol, mam si precitat 68 clankov?
A jak se to chces jinak naucit?Ty clanky jsou nahodou docela zajimave, mohl by to byt bestseller. Jinak trosku nechapu dotaz co se tyce ovlivneni casu (data) uzivatelem. jak by to asi mohl ovlivnit, kdyz aktualni cas je takovy, ktery ma nastaveny server? Pokud jeden (pocatecni) ulozis do databaze a pak ho porovnas s nejakym casem za nekolik dni (v tu chvili ten prvni je nekolik dni stary), stejne porovnavas dva casy, ktere ti prozradi system,ne uzivatel.
tak potom neviem ako ulozit cas
Myslel som to tak, ze user si prestavi sys hodiny, tym padom sa zmeni jeho cas. Uz som si nasiel script na server time, ale urcite je nejaka jednoduhsia cesta
>> Myslel som to tak, ze user si prestavi sys hodiny, tym padom sa zmeni jeho cas.
jiste. ale tezko ma cas na pocitaci uzivatele nejaky vliv na cas na serveru
>> ale urcite je nejaka jednoduhsia cesta
co muze byt jednodussiho nez jedno volani jedne funkce?
je to cely trivialni problem, nechapu, cemu na tom nerozumis... asi se budes muset lip zeptat. ale napred si procti ten tutorial.
Jen tak mimo a nechci te kritizovat. Jako moc znas tematiku tvorbu dynamickych stranek a vubec internetu?
Z tvych reakcich vyctu, ze neumis programovat (logicky myslet), nechapes problematiku klient-server a par dalsich veci. Z tebe vidim jen vecneho zelenace (sakra, jak je profesor nazval, bylo to tak perfekni pojmenovani), co chce vsechno hned, aniz by se to nejdriv naucil. Je to jen muj nazor, tak to neber vazne.
Pri manipulaci s PHP a MySQL se veskere cinnosti provadeji na serveru, kde bezny uzivatel nema vubec zadny vliv. Klidne at si zmeni systemovy cas ve svem pocitaci jak chce, ve skriptu se bere jen cas serveru, ktery je mimo jeho pocitac.
Nevim proc to tu tak komplikujes, kdyz to je takova prkotina.
Proste si vytvor tabulku, kde budes mit krome jmena uzivatele, jeste datum registrace. Pri registraci uzivatele se provede vlozeni noveho zaznamu (novy uzivatel), kde se ulozi jmeno, heslo, atd. plus se do dotazu vlozi aktualni cas serveru "now()". Neco jako "INSERT INTO tabulka (jmeno,heslo,datum_registrace) VALUES ('honza','mojeheslo',NOW())".
No a pokud chces pak zjistit jak dlouho je jiz dany uzivatel registrovan, tak provedes jednoduse dotaz "SELECT datediff(NOW(), datum_registrace) FROM tabulka WHERE jmeno like 'honza'".
Tot vse. Nerucim za chyby. Jen jsem to opsal od kolegu nahore ;)
A uz ted neblabol o nejakem ovlivnovani.
2Tomík
>mno jo no, každý potřebuje trochu času. Přiznej se, jak dlouho jsi studoval, než bys takový dotaz sestrojil? Já jsem zkoušel PHP už v 9, ale vůbec jsem ho nechápal. Teď je mi 14 a umím (dovoluji si říct) PHP. Imho jsem ho začal před 3 měsíci :-D (natvrdo psát scripty atd. - dřív jsem to prostě nechápal). Tak si s tím Cuchi nedělej hlavu ;-) - buď to přijde samo nebo to nepřijde vůbec a najdeš si něco jiného, co tě baví - třeba grafika je dost zajímava ;-)
2Ondra: Vim, ze to potrebuje cas. Ale pravda je, ze nekteri jsou vecni zelenaci. Proste kazdemu to jde jinak. Psal jsem vsak, aby to nebral vazne. Pokud ho to casem chytne, tak mne muze i predbehnout ;) No a pokud jde o mne, tak naucit se PHP mi to trvalo tak 3 mesice. Porozumet zakladum MySQL par tydnu. Programatorske vlohy mam asi od narozeni, tak mi to slo rychle. Nemam problemy se naucit se novy jazyk (krome skutečných) a vubec porozumet libovolnemu jazyku, krom binarnich.
Programovat to umim, ale na druhou stranu nejsem grafik. Takze v tomhle muze byt clovek, ktery neumi programovat, daleko prede mnou.
Proste jsem na vnitrni programovani. Jakykoli interface(design) je zase moji slabou strankou.
konecne som na to prisiel, pohrabal som sa v manualoch atd.
vyzera to dlhe ale vacsinou tam iba ide o overovanie funkcnosti
na miesto $testtime tam neskor pride vypis z db
urobil som to dobre?
// Actual time in format day-month-year
$now = Date("d F Y");
echo "Actual time is $now";
echo "<br>";
// I have to convert time to unix time
$unixtime = strtotime($now);
$testtime = "19 November 2006";
$unixtimedb = strtotime($testtime);
echo "Unix time is $unixtime";
echo "<br>";
echo "Unix time for db is $unixtimedb";
echo "<br>";
// Then I can calculate difference between them
// First date
$first=$unixtimedb;
echo "First date is $first";
echo "<br>";
// Second date
$second=$unixtime;
echo "Second date is $second";
echo "<br>";
// Action
$difference = $first - $second;
echo "Difference between dates is $difference";
echo "<br>";
// Make from unix time real readable time in days
$diffday = $difference/86400;
echo "<br>";
echo "Si tu zaregistrovany $diffday dni.";
echo "<br>";
}