Autor | Zpráva | ||
---|---|---|---|
alan113 Profil * |
#1 · Zasláno: 1. 7. 2012, 20:21:04 · Upravil/a: alan113
Zdravím,chtěl bych vás poprosit o radu..
lze nějak definici zakázat nebo povolit? myslím tím,že budu mít třeba soubor,kde budu mít např auto motorka letadlo myslel jsem,že definice,jak je na konci true/false,tak že to slouží k tomu,jenže jsem se spletl.. nevím jestli jsem to vyjádřil dobře uvedu příklad.. budu mít např proměnný nebo define v souboru povol.php auto - False motorka - True letadlo - False vidět jen Motorka jelikož má nastavený True.. napadá mě že by se to dalo udělat jen přes podmínku,že bych udělal define těch věcí,a pak jen přes echa do indexu.. jenže to se mě zas zdá takový,ošklivý a zbytečně dlouhý... a ještě jeden dotaz... jak zapsat čas do db,s třeba 20min napřed? jelikož kontroluju uživatele jestli je online,no,a když se neohlásí,a jen prsotě vypne prohlížeč,tak se mě to v db nezmění,a zůstane pořád online... PS: ted mě tak napadlo,ten script se neudělá že? jelikož ho musí někdo aktivovat aby se ten script spustil.. jde to nějak udělat aby se mě nějakej soubor reloadovaval(aby kontroloval čas všech uživatelu) aniž bych tam nemusel bejt já? |
||
LaMMa Profil |
#2 · Zasláno: 1. 7. 2012, 21:15:48
Mozes si to skusit definovat takto, ale tazko radit, ked neviem presne na co to ma sluzit:
$arr = array(); $arr[] = array("auto",0); $arr[] = array("motorka",1); $arr[] = array("letadlo",0); A vypis: foreach ($arr as $val) { if ($val[1]==1) echo $val[0]; } "jde to nějak udělat aby se mě nějakej soubor reloadovaval(aby kontroloval čas všech uživatelu) aniž bych tam nemusel bejt já? " ide, nastav si na hostingu cron s adresou, ktoru chces v pravidelnych intervaloch volat. |
||
Seith Profil |
#3 · Zasláno: 1. 7. 2012, 21:20:07
alan113:
Pro co používáš informaci o tom, kteří uživatelé jsou přihlášeni? Cpát to do CRONu mi přijde zbytečné. |
||
alan113 Profil * |
#4 · Zasláno: 1. 7. 2012, 21:23:09
LaMMa:
ok díky moc.. ještě se chci zeptat..už jsem na php.net našel,jak udělat třeba s +20min předstihem ten datum... jenže,jak udělat podmínku nebo mysql_query tak,že pokud to bude stejný čas tak to odešle do db? jako tohle vím,ale nejde mě do hlavy,jak udělat,že vlastně pokud to na hostingu udělám třeba interval 10min,tak když ten čas bude v mínusu,tak jak to odeslat?..pff blbě se mě to vysvětluje..prostě jak bude čas==časDb tak by to mělo odeslat,jenže jak to udělat,aby se to odeslalo ai kdyby ten čas šel do mínusu,jelikož ten cron je na intervaly třeba po 10min... Seith: mám jakoby profilovou stránku,kde si kámoši můžem psát mezi sebou,a aby nepsaly zbytečně,tak jsem tam dal jestli je online/offline... |
||
Seith Profil |
#5 · Zasláno: 1. 7. 2012, 21:27:45
alan113:
A co zjišťovat, kdo je zrovna online až, když to bude nutné? Tj. někdo zobrazí stránku s chatem? Stačí pouze spočítat rozdíl poslední aktivity uživatele (budeš ukládat do DB) a aktuálního času, pokud bude tento rozdíl větší než, např. 20 minut, uživatel je offline (neodhlásil se) a pokud se odhlásí, nastavit aktivitu např. na nulu? |
||
alan113 Profil * |
#6 · Zasláno: 1. 7. 2012, 21:38:48
no,já bych to potřeboval právě zjištovat pořád,jelikož tu aktivitu nemám jen v chatu,ale prostě jakoby na celým webu...
mám menu,a tam mám 10 aktivních lidí zařených podle ID... pak to mám vlastně i jakoby u komentářů apod.. mám to udělaný na funkci,a tu funkci volám do loaderu kterej volá vlastně celej web, momentálně ta funkce vypadá takto: když uživatek jde na nějakou stránku,zavolá se takhle funkce která aktualizuje db o +1hod čas $datum = StrFTime("%Y-%m-%d %H:%M:%S", Time()+ (1 * 60 * 60)); mysql_query("UPDATE uzivatele SET posledni_aktivita = '{$datum}' WHERE login = '".$_SESSION["login"]."' LIMIT 1"); } a tady kontroluju jestli se ten čas rovná,tak to pošle vlastně ten update aktivní na 0 $controlUserOnlineDb = mysql_query("SELECT posledni_aktivita FROM uzivatele WHERE id='{$_SESSION['id']}'")or die(mysql_error()); while($controlUserOnline=mysql_fetch_array($controlUserOnlineDb)){ $datum = StrFTime("%Y-%m-%d %H:%M:%S", Time()); if($datum == $controlUserOnline['posledni_aktivita']){ mysql_query("UPDATE uzivatele SET aktivni = 0 WHERE login = '".$_SESSION["login"]."' LIMIT 1")or die(mysql_error()); } } }[pre] ted zní ta otázka,jak udělat,aby se aktualizoval db i kdyby ten čas šel do mínusu... |
||
Seith Profil |
#7 · Zasláno: 1. 7. 2012, 21:53:49
A není tohle jednodušší?
/* zaktualizovani udaje o aktivite uzivatele */ mysql_query("UPDATE uzivatele SET posledni_aktivita = NOW() WHERE login ='".$_SESSION["login"]."' LIMIT 1"); /* vypis aktivnich uzivatelu */ $result = mysql_query("SELECT login FROM uzivatele WHERE posledni_aktivita + INTERVAL 20 MINUTE > NOW()"); while ($row = mysql_fetch_array($result)) { echo $row["login"].'<br>'; } |
||
alan113 Profil * |
#8 · Zasláno: 1. 7. 2012, 22:05:23
Seith:
no,to právě moc ne,jelikož bych to musel celý předělávat.. já bych to potřeboval právě takhle jak jsem to psal.. |
||
LaMMa Profil |
to prve sprav ako pisal seith a toto: ted zní ta otázka,jak udělat,aby se aktualizoval db i kdyby ten čas šel do mínusu...... zhruba takto:
function controlUserOnline(){ $controlUserOnlineDb = mysql_query("SELECT posledni_aktivita FROM uzivatele WHERE id='{$_SESSION['id']}'")or die(mysql_error()); $datum = date("Y-m-d H:i:s",strtotime("-30 min")); while($controlUserOnline=mysql_fetch_array($controlUserOnlineDb)){ if($datum >= $controlUserOnline['posledni_aktivita']){ mysql_query("UPDATE uzivatele SET aktivni = 0 WHERE login = '".$_SESSION["login"]."' LIMIT 1")or die(mysql_error()); } } } |
||
Seith Profil |
#10 · Zasláno: 1. 7. 2012, 22:09:48
Aneb proč dělat věci jednoduše, když to jde složitě :-) Občas se vyplatí nejdřív si to trošku promyslet a až poté začít psát program, ušetří to čas.
|
||
alan113 Profil * |
#11 · Zasláno: 2. 7. 2012, 11:53:15
tak ty uživatele jsem už vyřešil..ještě bych potřeboval to první jestli někdo neví...
alan113: > lze nějak definici zakázat nebo povolit? > myslím tím,že budu mít třeba soubor,kde budu mít např > > > > auto > motorka > letadlo > > a ke každýmu přiřadím jestli to chci aby to bylo vidět nebo ne.. > myslel jsem,že definice,jak je na konci true/false,tak že to slouží k tomu,jenže jsem se spletl.. > nevím jestli jsem to vyjádřil dobře > uvedu příklad.. > budu mít např proměnný nebo define v souboru povol.php > > > > auto - False > motorka - True > letadlo - False > > pak si to includnu třeba do indexu,a tam bude > vidět jen Motorka jelikož má nastavený True.. > napadá mě že by se to dalo udělat jen přes podmínku,že bych udělal define těch věcí,a pak jen přes echa do indexu.. > jenže to se mě zas zdá takový,ošklivý a zbytečně dlouhý... |
||
Seith Profil |
#12 · Zasláno: 2. 7. 2012, 13:06:20
alan113:
„tak ty uživatele jsem už vyřešil..ještě bych potřeboval to první jestli někdo neví...“ Soubor definice.txt: Auto - true Motorka - true Letadlo - false Skript pro zobrazení: <?php $soubor = fopen("definice.txt", "r"); while ($radek = fgets($soubor)) { list($nazev, $hodnota) = explode('-', $radek); $hodnota = strtolower(trim($hodnota)); if ($hodnota == 'true') { echo trim($nazev)."<br>"; } } ?> |
||
Časová prodleva: 12 let
|
0