我正在创建一个小小的比赛来赢取奖品。
我有4个奖项,我希望每10天就有一次胜利。
我有两个问题:
当我点击图片.panneau
(试图获胜)时,它总是会附上您未赢的消息
我不知道如何随机获取表明胜利的变量
这是我目前的代码:
$(".panneau").click(function(){
if($(".panneau.uncover").length == 0){
$(this).addClass("uncover");
$("#intro").hide();
$.ajax({
url:'index.php',
type:'POST',
success:function(data){
var nomDuLot ="";
$('#registration input[type=hidden]').remove();
$('#registration').append('<input type="hidden" name="myprize" id="myprize" value="'+data.prize+'"/><input type="hidden" value="'+data.id+'" id="id" name="id"/>'+data.nonces);
if(data.prize=="1"){
nomDuLot = "price1";
}else if (data.prize=="2"){
nomDuLot = "price2";
}else if (data.prize=="3"){
nomDuLot = "price3";
}else if (data.prize=="4"){
nomDuLot = "price4";
}
setTimeout(function(){
if(data.prize=="1" || data.prize=="2" || data.prize=="3" || data.prize=="4"){
if(data.prize=="1"){
$(".panneau.uncover").append("<p class='long'>Bravo! Vous avez gagné<br><span class='lot'>"+nomDuLot+"</span></p>");
}
$("#inscription_auto_tirage_au_sort").html("Vous devez vous inscrire pour valider votre gain.<br>En plus, vous participerez automatiquement au tirage au sort pour tenter de gagner 1 set de pneus hiver d’une valeur de 500 €.");
$("#etape3 > h2.gagnant").addClass("active");
}else{
$(".panneau.uncover").append("<p>Vous n'avez<br> pas gagné...</p>");
$("#inscription_auto_tirage_au_sort").html("Mais tout n’est pas perdu. Inscrivez-vous pour tenter de gagner blablabla.");
$("#etape3 > h2.perdant").addClass("active");
// je force le gain à 0
$("#myprize").val("0");
}
$("#etape2").show();
}, 100);
}
});
}
});
答案 0 :(得分:1)
index.php
必须在响应的prize
键中返回随机获胜。你总是收到失败的消息,因为没有任何胜利条件得到满足(根据你原来的文字&#34; ajax变量随机[...]我不知道该怎么做&#34;)
if(data.prize=="1" || data.prize=="2" || data.prize=="3" || data.prize=="4"){
如果来自index.php
的回复是其中一个字符串,则仅显示获胜。
如果您希望每10天才能获胜,则需要在某个地方存储日期。它可以很容易地作为写入磁盘的文本文件或数据库中的一行。但在某个地方,你需要在最后的胜利时存储。然后,每次向index.php
发出请求时,请根据当前日期检查该日期。如果差异是10天,则随机产生一个胜利。
您还可以获得已经赢得奖品的列表,或者只是动态计算可用的奖品(搜索目录/prizes
获取文件列表,获奖时删除该文件)。对此没有100%正确或错误的答案,但您可能想要考虑使用数据库来使问题更易于维护和报告(&#34;我想知道哪些奖品还剩下什么?&#34;,例如,可以查询数据库而不是搜索文件。)
你的&#34;每10天&#34;逻辑可能是这样的:
if( $today >= $lastWin + '10 days' ){
$random = mt_rand( 0, 100000000 );
if( $random === 569351 ){
$prize = getRandomAvailablePrize();
}
}
因此,百万次尝试中的一个人(统计上,可能是或多或少)会击中数字&#34; 569351&#34;如果最后一次胜利是10天前或更长时间,将赢得奖品。
当然,这都是伪代码,所以实际的实现会更深入一些,但这是为了给你一个想法。 不要忘记在POST后返回JSON响应
{ "prize": "[number]" }
其中[number]
为1
,2
,3
,4
,或者为空而为空。