problème avec le temps, de 24 heures en 2 heures

invision
problème avec le temps, de 24 heures en 2 heures

Bonjour

Voila, je voudrais savoir si je peut modifier le temps de vote, les votes sont programmées A 24 heures (dons sa fais que je peut voter qu'une seule foi par jour), je souhaiterais les mettre à 2 heures,
mon petit souci c'est que je vote qu'une Seul foi par jour, je voudrais savoir si je peut le remettre toutes les 2 heures, (les votes me servent pour des classements sur des site d'annuaire) code ci-joint des en php .

<?php
function change_db($db)
{
	global $array_db;
	$mysql_link = mysql_connect($array_db['host'], $array_db['user'], $array_db['pass']) or die ("Connexion impossible !");
	mysql_select_db($db, $mysql_link) or die (mysql_error());
}
function create_vote_lists($id,$db)
{
	change_db($db);
	$check_exist = "SELECT * FROM `voting_points` WHERE `id` LIKE '$id'";
	$check = mysql_query($check_exist) or die (mysql_error());
	if(!mysql_num_rows($check))
	{
		$create_list = "INSERT INTO `voting_points` (`id`) VALUES ('$id')";
		$create = mysql_query($create_list) or die (mysql_error());
	}
	$user_ip = getenv("REMOTE_ADDR");
	$check_exist = "SELECT * FROM `voting` WHERE `user_ip` LIKE '$user_ip'";
	$check = mysql_query($check_exist) or die (mysql_error());
	$row = mysql_fetch_array($check);
	$today = time();
	if(!mysql_num_rows($check))
	{
		$create_list = "INSERT INTO `voting` (`user_ip`) VALUES ('$user_ip')";
		$create = mysql_query($create_list) or die (mysql_error());
	}
	else 
		if(($today - $row['time']) > 7200)
		{
			$create_list = "UPDATE `voting` SET `sites` = 0 WHERE `user_ip` LIKE '$user_ip'";
			$create = mysql_query($create_list) or die (mysql_error());
		}
}

function show_points($id,$db)
{
	change_db($db);
	$sql = "SELECT `points` FROM `voting_points` WHERE `id` LIKE '$id'";
	$result = mysql_query($sql) or die (mysql_error());
	$row = mysql_fetch_array($result);
	$acc_points = $row['points'];
	return $acc_points;
}
$points = show_points($_SESSION['id'],$array_db['db_realmd']);

function show_passed_time($db)
{
	change_db($db);
	$user_ip = getenv("REMOTE_ADDR");
	$sql = "SELECT * FROM `voting` WHERE `user_ip` LIKE '$user_ip'";
	$result = mysql_query($sql) or die (mysql_error());
	$row = mysql_fetch_array($result);
	$user_time = $row['time'];
	if ($user_time == 0)
		return 0;
	else
	{
		$today = time();
		$passed = $today - $user_time;
		$passed_seconds = $passed %60;
		$passed_minutes_in_seconds = ($passed - $passed_seconds)%3200;
		$passed_minutes = $passed_minutes_in_seconds/60;
		$passed_hours = ($passed - ($passed_seconds + $passed_minutes_in_seconds))/2;
		$user_passed_time = $passed_hours."h ".$passed_minutes."m et ".$passed_seconds."s";
		return $user_passed_time;
	}
}
function return_voted_sites($db)
{
	change_db($db);
	$user_ip = getenv("REMOTE_ADDR");
	$sql = "SELECT `sites` FROM `voting` WHERE `user_ip` LIKE '$user_ip'";
	$result = mysql_query($sql) or die (mysql_error());
	$row = mysql_fetch_array($result);
	$sites = $row['sites'];
	return $sites;
}
function vote($site,$id,$db)
{
	global $tab_sites;
	if(array_key_exists($site, $tab_sites))
	{
		if(!($site & return_voted_sites($db)))
		{
			$user_ip = getenv("REMOTE_ADDR");
			echo "<script language='javascript'>setTimeout(window.open(\"".$tab_sites[$site][1]."\", \"_self\", \"\"),0);</script>";
			$today = time();
			change_db($db);
			$vote_user = "UPDATE `voting` SET `sites`=(`sites` + $site), `time`='$today' WHERE `user_ip` LIKE '$user_ip'";
			$results = mysql_query($vote_user) or die(mysql_error());
			$vote_acc = "UPDATE `voting_points` SET `points`=(`points` + 1), `date_points`=(`date_points` + 1) WHERE `id` = '$id'";
			$results = mysql_query($vote_acc) or die(mysql_error());
		}
	}
}
function count_tab_sites()
{
	global $tab_sites;
	$counter = 0;
	foreach($tab_sites as $key => $value)
		$counter+=$key;
	return $counter;
}
function show_sites_menu($db)
{
	global $tab_sites;
	$user_ip = getenv("REMOTE_ADDR");
	change_db($db);
	foreach($tab_sites as $key => $value)
	{
		$sql = "SELECT `sites` FROM `voting` WHERE `user_ip` LIKE '$user_ip'";
		$result = mysql_query($sql) or die(mysql_error());
		$row = mysql_fetch_array($result);
		$sites = $row['sites'];
		if (!($sites & $key))
			echo "<option value='".$key."'>".$value[0]."</option>";
	}
}
function show_time_to_vote($db)
{
	change_db($db);
	$user_ip = getenv("REMOTE_ADDR");
	$sql = "SELECT * FROM `voting` WHERE `user_ip` LIKE '$user_ip'";
	$result = mysql_query($sql) or die (mysql_error());
	$row = mysql_fetch_array($result);
	$user_time = $row['time'];
	
	$today = time();
	$remaining = 7200 -($today - $user_time);
	$remaining_seconds = $remaining%60;
	$remaining_minutes_in_seconds = ($remaining - $remaining_seconds)%3600;
	$remaining_minutes = $remaining_minutes_in_seconds/60;
	$remaining_hours = ($remaining - ($remaining_seconds + $remaining_minutes_in_seconds))/3600;
	$user_remaining_time = $remaining_hours."h ".$remaining_minutes."m et ".$remaining_seconds."s";
	return $user_remaining_time;
}
function check_date_points($id,$db)
{
	global $tab_sites;
	change_db($db);
	$sql = "SELECT * FROM `voting_points` WHERE `id` = $id";
	$result = mysql_query($sql) or die (mysql_error());
	$row = mysql_fetch_array($result);
	$date = $row['date'];
	$date_points = $row['date_points'];
	$today = date("Ymd");
	if($date <> $today)
	{
		$reset_date_and_datepoints = "UPDATE `voting_points` SET `date`='$today', `date_points`='0' WHERE `id` = $id";
		$reset = mysql_query($reset_date_and_datepoints) or die (mysql_error());
		return 1;
	}
	else
		if($date_points >= sizeof($tab_sites))
			return 0;
		else
			return 1;
}
?>

Cordialement

invision
Re: problème avec le temps, de 24 heures en 2 heures

Bonjour

Je n'ai toujours pas trouvé réponse a mon problème, pourriez-vous m'aider svp

Cordialement

fredericmazue
Re: problème avec le temps, de 24 heures en 2 heures

C'est un devoir d'école que tu voudrais qu'on le fasse à ta place ? :wink:
Avec un petit peut de courage, je pense que tu n'auras aucune difficulté à modifier le bloc else de la fonction show_passed_time :)

invision
Re: problème avec le temps, de 24 heures en 2 heures

Bonjour

Merci de votre réponse, je débute en php, donc le problème viens de moi::

Quote:
else
{
$today = time();
$passed = $today - $user_time;
$passed_seconds = $passed %60;
$passed_minutes_in_seconds = ($passed - $passed_seconds)%3200;
$passed_minutes = $passed_minutes_in_seconds/60;
$passed_hours = ($passed - ($passed_seconds + $passed_minutes_in_seconds))/2;
$user_passed_time = $passed_hours."h ".$passed_minutes."m et ".$passed_seconds."s";
return $user_passed_time;
}

$passed_minutes_in_seconds = ($passed - $passed_seconds)%3200;

l'erreur viens peut être de la, sa devrais être 60 en non pas 3200, je me trompe peut être. ?

fredericmazue
Re: problème avec le temps, de 24 heures en 2 heures

Bon. En fait j'ai plus regardé le code. La fonction que j'ai désigné ne fait que montrer le temps passé. C'est dans check_date_points que ça se passe il me semble. Il y a le test:

if($date <> $today)

Ce qui veut dire qu'on teste si on est le même jour. Si oui on ne peut pas voter. Et le code ne fonctionne pas comme tu le dis. Ce n'est pas toutes les 24 heures qu'on peu voter, mais tous les jours. Ca veut dire que si quelqu'un vote à 23h59, il peut voter une minute plus tard, à 0h00. C'est ce test qu'il faut modifier. Enfin, il me semble. j'ai regardé rapidement j'avoue.

invision
Re: problème avec le temps, de 24 heures en 2 heures

Bonsoir

Je vous remercie, il est vrais que je débute,
et si je remplace ce code:

else
{
$today = time();
$passed = $today - $user_time;
$passed_seconds = $passed %60;
$passed_minutes_in_seconds = ($passed - $passed_seconds)%3200;
$passed_minutes = $passed_minutes_in_seconds/60;
$passed_hours = ($passed - ($passed_seconds + $passed_minutes_in_seconds))/2;
$user_passed_time = $passed_hours."h ".$passed_minutes."m et ".$passed_seconds."s";
return $user_passed_time;
}

Par celui-ci?

...
$user_passed_time = $passed_hours."h ".$passed_minutes."m et ".$passed_seconds."s";
if ($passed_hours < 2) {
return $user_passed_time;
} else {
return 0;
}

Je nage complètement, non pas la paresse que j'ai, mais je n'arrive pas

fredericmazue
Re: problème avec le temps, de 24 heures en 2 heures

C'est la fonction check_date_points et non la fonction show_passed_time que tu dois modifier, à mon humble et comme dit dans mon message précédent. show_passed_time ne fait que te montrer le temps écoulé depuis un vote. C'est dans check_date_points que le temps passé est testé (mal d'ailleurs) et si le test n'est pas vrai, le vote est refusé. Donc tu dois changer le test. En clair mettre autre chose que $date <> $today dans if($date <> $today)
Du moins c'est ce qu'il me semble comprendre en lisant le code.