Autor Zpráva
alan113
Profil *
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
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ý...


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
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
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 *
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
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 *
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
function reloadTimeUser(){
$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
function controlUserOnline(){
$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
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 *
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
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 *
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
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>";
    }
}

?>

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:

0