【问题标题】:PHP MySQLi Check if user voted if so other users can vote alsoPHP MySQLi 检查用户是否投票,如果是,其他用户也可以投票
【发布时间】:2018-07-28 20:57:50
【问题描述】:

只要有 1 票,我就可以正常工作(我是一个相对较新的编码员)。如何让其他用户投票?代码如下:。

SELECT 
    b.id,
    b.image_1_file,
    b.your_name,
    b.your_votes,
    b.image_2_file,
    b.battling_with_name,
    b.battling_with_votes
FROM
    battles b left outer join
    votes v 
    on 
        b.id = v.battle_id 
where
    v.battle_id is null
order by 
    rand()
limit 1

我试过了:

SELECT 
    b.id,
    b.image_1_file,
    b.your_name,
    b.your_votes,
    b.image_2_file,
    b.battling_with_name,
    b.battling_with_votes
FROM 
    battles b
WHERE 
    b.id NOT IN (
        SELECT 
            v.battle_id
        FROM 
            votes v 
        WHERE
            v.voters_id != '$myid'
    ) 
order by
    rand()

当然后者只会寻找b.id

其他用户有一个 id 变量:$my_id 我不希望会员在投票后再次看到该图像。

非常感谢您的帮助,祝您有美好的一天!

我的表结构是:

我的图片(投票)表:

id                  int(10) unsigned    NO  PRI     auto_increment  
image_1_file            varchar(40) NO              
image_2_file            varchar(40) NO              
your_name           varchar(50) NO              
your_votes          int(10) NO      0   
battlingwithname    varchar(15) NO              
battlingwithvotes   int(10) NO      0   

我的投票(投票已存储)表:

id                  int(10) unsigned    NO  PRI     auto_increment  
battle_id           int(10) unsigned    NO              
vote_type           tinyint(1) unsigned NO              
voters_id           varchar(30)  

【问题讨论】:

  • 问题出在哪里?你试过什么?你的表结构是什么?
  • 嘿,Progman,你好吗?问题是只能投1票,我需要所有成员都能投票。如果您在我的网站上,您可以为该图像投票,而其他人则不能。我已经为此奋斗了一个多星期。
  • 能否请您展示一下您的表格结构,以便我对此有更好的了解。
  • 我将表格结构添加到我的问题中......谢谢

标签: php mysql


【解决方案1】:

只要使用not in操作符,你不能忽略那些已经被投票的投影中的id,所以你必须使用not in来选择那些投票的id并从投影中删除注意:另一个操作符也可以存在使用过,但我没有在我的查询中使用过

SELECT 
    b.id,
    b.image_1_file,
    b.your_name,
    b.your_votes,
    b.image_2_file,
    b.battling_with_name,
    b.battling_with_votes
FROM
    battles b 
where b.id not in( select v.battle_id from votes v)

【讨论】:

  • @Shelly 有帮助吗?
  • 不,它没有帮助。我以前试过这个。它确实投票,但问题是没有其他用户可以投票,因为图像已经投票。我需要所有成员都能够投票......非常感谢您的帮助。还有什么建议吗?
  • 我找到了解决方案:SELECT b.id, b.image_1_file, b.image_2_file, b.your_id, b.your_votes, b.your_name, b.battlingwithid, b.battlingwithname, b.battlingwithvotes, b.total_votes FROM 战斗 b WHERE b.battle_status ='Active' && b.id NOT IN (SELECT v.battle_id FROM votes v where v.voters_id = '$myid' ) order by rand() limit 1 @Zaynul Abadin Tuhin 谢谢为您提供帮助。
  • @Shelley 好的,那么我的解决方案几乎就像没有样本数据一样难以解决问题,但是根据您的描述,我尝试过,如果您认为它有帮助,那么您可以放弃投票
猜你喜欢
  • 2013-01-06
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-10-18
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-02-19
相关资源
最近更新 更多