Probleme avec curtime()
nico590
Messages postés
9
Statut
Membre
-
nico590 Messages postés 9 Statut Membre -
nico590 Messages postés 9 Statut Membre -
Bonjour,
Depuis plusieur jour j'essaye ajouter 2 heure a l'heure courante :
c'est a dire dans ma bd j'ai une table id membre fnum ftime et fdate elle enregistre le clic d'une banniere heure et date.e
Je voudrais que cette banniere disparaise et reapparait toutes les 2 heures.
J'ai trouver pour toutes les 24 heure avec :
Ce que je comprend pas c'est pourquoi avec ce code sa marche pour 24 h :
$chk=mysql_query("SELECT * FROM tasks_vote$fcode WHERE fid=$id AND fdate=CURDATE() ");
mais avec :
$chk=mysql_query("SELECT * FROM tasks_vote$fcode WHERE fid=$id AND ftime=CURTIME() ");
ou avec :
$chk=mysql_query("SELECT * FROM tasks_vote$fcode WHERE fid=$id AND ftime+7200 > ".time());
sa ne veux pas disparaitre pendant 2h
sinon je viens de tester avec :
$chk=mysql_query("SELECT * FROM tasks_vote$fcode WHERE fid=$id AND ftime=CURTIME()< ftime+7200 ");
elle disparaisse vote limité ensuite --> vous avez deja voté ce site
mais pour que la banniere reapparaisse il faut que je supprime les derniere donner concernant id du membre de n'importe quelle date et heure
avec :
$chk=mysql_query("SELECT * FROM tasks_vote$fcode WHERE fid=$id AND ftime+7200 > ".time());
Elle disparaisse pas mais vote illimiter avec créditage des points --> votre vote a ete pris en compte
Merci d'avance de votre aide
Nico
Depuis plusieur jour j'essaye ajouter 2 heure a l'heure courante :
c'est a dire dans ma bd j'ai une table id membre fnum ftime et fdate elle enregistre le clic d'une banniere heure et date.e
Je voudrais que cette banniere disparaise et reapparait toutes les 2 heures.
J'ai trouver pour toutes les 24 heure avec :
<?php
ob_start();
session_start();
?>
<center><?php
include('dbconnect.php');
?>
<html>
<head>
<title>stomypayecash</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
</head>
<body bgcolor="#009933" text="#ffffff">
<?php
$t=intval($_POST['t']);
$id=intval($_POST['id']);
$sqs=mysql_query("SELECT * FROM tasks_vote WHERE fn=$t") or die(mysql_error());
$arr=mysql_fetch_array($sqs);
extract($arr);
$chk=mysql_query("SELECT * FROM tasks_vote$fcode WHERE fid=$id AND ftime=CURTIME() ");
if(mysql_num_rows($sq)!=0)
{
echo"<font face=verdana color=ffffff><img src=images/non-valide.gif width=40 height=40>vous avez déjà voter sur ce site aujourd'hui , revenez demain .</font><br><br>
<a href='http://stomy-payecash.com/index.php?page=user&st=pointvote' target='_parent'><b><font size=4 color=black>Retour au site</font></b></a><br><br>
";
exit;
}
if($fpaytype=='points')
{
$sql=mysql_query("SELECT ftotalvote FROM users WHERE fid=$id") or die(mysql_error());
$arr=mysql_fetch_array($sql);
extract($arr);
$tot=$ftotalvote + $prise;
$sq=mysql_query("UPDATE users SET ftotalvote=$tot WHERE fid=$id") or die(mysql_error());
}
else if($fpaytype=='usd')
{
$sql=mysql_query("SELECT ftmvote FROM users WHERE fid=$id") or die(mysql_error());
$arr=mysql_fetch_array($sql);
extract($arr);
$tot=$ftmvote + $prise;
$sq=mysql_query("UPDATE users SET ftmvote=$tot WHERE fid=$id") or die(mysql_error());
}
if(mysql_affected_rows())
{
echo"<font face=verdana color=ffffff><img src=images/valide.gif width=40 height=40>Votre compte a été crédité <br>Merci d'avoir voté sur ce site.<br><a href='http://stomy-payecash.com/index.php?page=user&st=pointvote' target='_parent'><b><font size=4 color=black>Retour au site</font></b></a><br><br>
</font>";
$newvisit=$fvisits+1;
mysql_query("UPDATE tasks_vote SET fvisits=$newvisit WHERE fn=$t");
mysql_query("INSERT INTO tasks_vote$fcode (fip, fdate, ftime, fid) VALUES('$REMOTE_ADDR', CURDATE(), CURTIME(), $id)") or die(mysql_error());
mysql_query("INSERT INTO activity(fid, fdate, ftasks) VALUES ($id, now(), 'vote')");
}
else echo"error";
@mysql_free_result($sql);
?>
</body>
</html></center>
<?php
ob_end_flush();
?>
Ce que je comprend pas c'est pourquoi avec ce code sa marche pour 24 h :
$chk=mysql_query("SELECT * FROM tasks_vote$fcode WHERE fid=$id AND fdate=CURDATE() ");
mais avec :
$chk=mysql_query("SELECT * FROM tasks_vote$fcode WHERE fid=$id AND ftime=CURTIME() ");
ou avec :
$chk=mysql_query("SELECT * FROM tasks_vote$fcode WHERE fid=$id AND ftime+7200 > ".time());
sa ne veux pas disparaitre pendant 2h
sinon je viens de tester avec :
$chk=mysql_query("SELECT * FROM tasks_vote$fcode WHERE fid=$id AND ftime=CURTIME()< ftime+7200 ");
elle disparaisse vote limité ensuite --> vous avez deja voté ce site
mais pour que la banniere reapparaisse il faut que je supprime les derniere donner concernant id du membre de n'importe quelle date et heure
avec :
$chk=mysql_query("SELECT * FROM tasks_vote$fcode WHERE fid=$id AND ftime+7200 > ".time());
Elle disparaisse pas mais vote illimiter avec créditage des points --> votre vote a ete pris en compte
Merci d'avance de votre aide
Nico
3 réponses
Bonjour
Personne aurait une idee?
derniere modification de la ligne 21:
$chk=mysql_query("SELECT * FROM tasks_vote$fcode WHERE fid=$id AND DATE_SUB(CURTIME(),INTERVAL 2 HOUR) <= ftime");
Mais sa donne toujour rien.
Merci d'avance de votre aide
Personne aurait une idee?
derniere modification de la ligne 21:
$chk=mysql_query("SELECT * FROM tasks_vote$fcode WHERE fid=$id AND DATE_SUB(CURTIME(),INTERVAL 2 HOUR) <= ftime");
Mais sa donne toujour rien.
Merci d'avance de votre aide
Le fait de séparer date et heure dans deux champs distincts ne me parait pas judicieux et est en plus la source de ton problème, puisque tu ne peux pas utiliser date_sub() ou date_add() sur une expression qui ne contient pas de date.
Le fait d'avoir une table propre à chaque "fcode" ne me parait pas judicieux non plus, mais ça n'a par contre cette fois aucune incidence sur ton problème.
Déjà : "Ce que je comprend pas c'est pourquoi avec ce code sa marche pour 24 h :
$chk=mysql_query("SELECT * FROM tasks_vote$fcode WHERE fid=$id AND fdate=CURDATE() ");
"
Cette affirmation est fausse : ça ne fonctionnera pas pour 24h mais pour une date donnée. Par exemple si un utilisateur effectue l'opération à 23h59 et la retente à 00h01, il ne rencontrera aucun problème, car la date du jour ne sera plus la même. Pourtant seulement deux minutes se seront écoulées.
Cette parenthèse étant fermée, voici la solution que je te propose :
- Revoir la structure des tables "tasks_vote" : remplacer les champs fdate et ftime par un champ unique (par exemple "fts") qui sera de type "timestamp". Bonus, tu peux automatiquement définir la valeur par défaut de ce champ sur "current_timestamp". La date et l'heure courantes seront donc automatiquement ajoutées à chaque insertion en laissant ce champ vide.
- Remplacer par conséquent la requête d'insertion pour : INSERT INTO tasks_vote$fcode (fip, fid) VALUES('$REMOTE_ADDR', $id)
- Remplacer le select par le suivant : SELECT * FROM tasks_vote$fcode WHERE fid=$id AND DATE_SUB(NOW(), INTERVAL 2 HOUR) >= ftime
Ça devrait fonctionner...
Le fait d'avoir une table propre à chaque "fcode" ne me parait pas judicieux non plus, mais ça n'a par contre cette fois aucune incidence sur ton problème.
Déjà : "Ce que je comprend pas c'est pourquoi avec ce code sa marche pour 24 h :
$chk=mysql_query("SELECT * FROM tasks_vote$fcode WHERE fid=$id AND fdate=CURDATE() ");
"
Cette affirmation est fausse : ça ne fonctionnera pas pour 24h mais pour une date donnée. Par exemple si un utilisateur effectue l'opération à 23h59 et la retente à 00h01, il ne rencontrera aucun problème, car la date du jour ne sera plus la même. Pourtant seulement deux minutes se seront écoulées.
Cette parenthèse étant fermée, voici la solution que je te propose :
- Revoir la structure des tables "tasks_vote" : remplacer les champs fdate et ftime par un champ unique (par exemple "fts") qui sera de type "timestamp". Bonus, tu peux automatiquement définir la valeur par défaut de ce champ sur "current_timestamp". La date et l'heure courantes seront donc automatiquement ajoutées à chaque insertion en laissant ce champ vide.
- Remplacer par conséquent la requête d'insertion pour : INSERT INTO tasks_vote$fcode (fip, fid) VALUES('$REMOTE_ADDR', $id)
- Remplacer le select par le suivant : SELECT * FROM tasks_vote$fcode WHERE fid=$id AND DATE_SUB(NOW(), INTERVAL 2 HOUR) >= ftime
Ça devrait fonctionner...