#############################################################
###
### Y! Messenger online status - durata in zile/ore/min - p3 (php)
### http://scripts.ddumi.com/2007-11-29/php-code/18.html
### http://blog.ddumi.com/tutoriale/2006/04/29/y-messenger-online-status-durata-in-zileoremin.html
###
#############################################################

<?php
// conectarea la db
$db = mysql_connect("localhost", "db_user", "db_pass") or die("Could not connect.");
if(!$db) die("no db");
if(!mysql_select_db("db_name",$db)) die("No database selected.");

// cateva setari de baza..
$data = date("j.m.Y");
$stare = "01";

// inregistrari astazi
$interogare = mysql_query("SELECT * FROM y_mess_time WHERE data='$data' AND stare='$stare'", $db);
$rezultat = mysql_num_rows($interogare);

// impartim numarul de inregistrari la 60 (transf din minute in ore)
$timp = $rezultat / 60;

// functie pentru a modela cat de cat numarul rezultat pana acum
function approx($num){
$numar = explode(".", $num);
return $numar[0].'.'.substr($numar[1], 0, 2);
}
$ore = approx($timp);

// setari default asta in cazul in care nu este nici o inregistrare sa nu apara campurile goale..
$y_ore_on = "00";
$y_min_on = "00";

// cateva if-uri si veirifciari pentru a aproxima numarul de ore si min
$y_ore = explode(".", $ore);
if ($y_ore[1] > 60) {
$y_ore_on = $y_ore[0] + 1;
$y_min_on = $y_ore[1] - 60;
} else {
$y_ore_on = $y_ore[0];
$y_min_on = $y_ore[1];
}
$y_ore_count = strlen($y_ore_on);
$y_min_count = strlen($y_min_on);
if ($y_ore_count == 1){
$y_ore_on = "0".$y_ore_on;
}
if ($y_min_count == 1){
$y_min_on = "0".$y_min_on;
}

// inregistrari total
$interogare2 = mysql_query("SELECT * FROM y_mess_time WHERE stare='$stare'", $db);
$rezultat2 = mysql_num_rows($interogare2);

// impartim numarul de inregistrari la 60 (transf din minute in ore)
$timp2 = $rezultat2 / 60;

// functie pentru a modela cat de cat numarul rezultat pana acum
function approx2($num2){
$numar2 = explode(".", $num2);
return $numar2[0].'.'.substr($numar2[1], 0, 2);
}
$ore2 = approx2($timp2);

// setari default asta in cazul in care nu este nici o inregistrare sa nu apa campurile goale..
$y_ore_on2 = "00";
$y_min_on2 = "00";
$y_zile_on = "000";

// cateva if-uri si veirifciari pentru a aproxima numarul de ore si min
$y_ore2 = explode(".", $ore2);
if ($y_ore2[1] > 60) {
$y_ore_on2 = $y_ore2[0] + 1;
$y_min_on2 = $y_ore2[1] - 60;
} else {
$y_ore_on2 = $y_ore2[0];
$y_min_on2 = $y_ore2[1];
}

// impartim numarul de ore la 24 (transf din ore in zile)
$zile = $y_ore_on2 / 24;
$y_zile = explode(".", $zile);
$y_zile_c = strlen($y_zile[0]);
if ($y_zile_c == 1) {
$numar_zile = substr($zile, 0, 1);
}
if ($y_zile_c == 2) {
$numar_zile = substr($zile, 0, 2);
}
if ($y_zile_c == 3) {
$numar_zile = substr($zile, 0, 3);
}

while ($y_ore_on2 > 24) {
$y_ore_on2 = $y_ore_on2 - 24;
}

$y_ore_count2 = strlen($y_ore_on2);
$y_min_count2 = strlen($y_min_on2);
$y_zile_count = strlen($numar_zile);
if ($y_ore_count2 == 1){
$y_ore_on2 = "0".$y_ore_on2;
}
if ($y_min_count2 == 1){
$y_min_on2 = "0".$y_min_on2;
}
if ($y_zile_count == 1){
$y_zile_on = "00".$numar_zile;
}
if ($y_zile_count == 2){
$y_zile_on = "0".$numar_zile;
}

echo "Astazi: <b>".$y_ore_on."</b> ore si <b>".$y_min_on."</b> minute <br>";
echo "Total: <b>".$y_zile_on."</b> zile <b>".$y_ore_on2."</b> ore si <b>".$y_min_on2."</b> min din data 29 Ian 2006";

?>