我遇到了这个问题,我真的很纠结,理论上它应该很简单,但我没能正确地实现它。也许我的逻辑在处理这个问题时是错误的...?
挑战
我有一个简单的网络应用程序,用户可以投票决定谁将在锦标赛中赢得体育赛事,每一轮都有很多场比赛,最多 8 场。
一些用户投票的例子:
等等
:
我想做什么
我想在一个简单的 css 条形图中显示每支球队在每场比赛中的票数
像这样:
我的实现
我有 2 个表 1 用于事件,称为 events另一张表用于记录名为multiple_picks的选票
考虑以下查询
(注pickNr 指一个团队获得的票数)
SELECT multiple_picks.pick, multiple_picks.round_game_nr, COUNT(multiple_picks.round_game_nr) as pickNr ,events.event_id, events.team1, events.team2, events.round, events.tournament
From multiple_picks
JOIN events
ON multiple_picks.event_id = events.event_id
WHERE multiple_picks.round = '$round' AND multiple_picks.tournament ='$tour'
GROUP BY pick
ORDER BY round_game_nr
查询产生以下结果
1.从表格中可以看出每隔2行就是一个新游戏!
2.同样有15名选手进入投票池,所以每场比赛相当于15票
我的逻辑
Highlanders = (9/15)*100 = 60%)div 中显示每个匹配百分比- div团队 1 <div style="width:'.$t1Votes.'; height:25px; float:left"> DIV对于团队 2 <div style="width:'.$t2Votes.'; height:25px; float:right">
我的执行
$sql = "SELECT multiple_picks.pick, multiple_picks.round_game_nr, COUNT(multiple_picks.round_game_nr) as pickNr ,events.event_id, events.team1, events.team2, events.round, events.tournament
From multiple_picks
JOIN events
ON multiple_picks.event_id = events.event_id
WHERE multiple_picks.round = '4' AND multiple_picks.tournament ='Super Rugby'
GROUP BY pick
ORDER BY round_game_nr";
$result=mysql_query($sql);
while($row = mysql_fetch_array($result)){
//get vars
$rgm = $row['round_game_nr']; //not important for example
$t1 = $row['team1']; //team 1
$t2 = $row['team2']; //team 2
$pick =$row['pick']; //selected team
$pickCount = $row['pickNr']; //number votes
$t1 = $pick;
if($pick == "Draw"){
//skip draws for now
}
else if($t1 =$pick ){
echo'<div id="container">';//opem container
$percentage1 = ($pickCount / 15) * 100;
echo'<div class="t1" style=" float:left; height:25px; background-color:red; width:'.$percentage1.'%">'.$pick.'</div>';
}//else if
else if($t1 != $pick){
$percentage2 = ($pickCount / 15) * 100;
echo'<div class="t2" background-color:green; style=" float:right; height:25px; width:'.$percentage2.'%">'.$pick.'</div>';
echo'</div>';//container
echo'<div style="clear:">';
}//else if
}//while
我的问题
这是最终结果的一部分,有点正确,但它永远不会到达第二个 if statement else if($t1 != $pick) ,因此,container div永远不会关闭...所以我一定有逻辑错误!
非常感谢您花时间阅读,感谢您的帮助。
旁注:请不要因为使用折旧 mysql_query() 而仔细检查我声明,我是这样开始“程序”的,所以我还不如这样结束它,然后从头开始改变它
最佳答案
出现了一些问题,但大多数情况下您都遇到了。百分比只需要计算一次,因为每个循环都是一个新条目。您正在分配 $t1 = $pick,这意味着永远不会到达最后一个 else if。此外,您在样式括号外还有 background-color: green,因此它不会呈现背景颜色。
while($row = mysql_fetch_array($result)){
//get vars
$rgm = $row['round_game_nr']; //not important for example
$t1 = $row['team1']; //team 1
$t2 = $row['team2']; //team 2
$pick = $row['pick']; //selected team
$pickCount = $row['pickNr']; //number votes
// Since it's looping for each entry you only need to calculate the total percentage once
$percentage = ($pickCount / 15) * 100;
if($pick == "Draw") {
//skip draws for now
continue;
}
else if($t1 == $pick ) {
echo'<div id="container">';//opem container
echo'<div class="t1" style=" float:left; height:25px; background-color:red; width:'.$percentage.'%">'.$pick.'</div>';
}//else if
else if($t1 != $pick) {
echo'<div class="t2" style="background-color:green; float:right; height:25px; width:'.$percentage.'%">'.$pick.'</div>';
echo'</div>';//container
echo'<div style="clear:">';
}//else if
}//while
关于php - 从 css 和 php 创建简单的条形图,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36001499/
出于纯粹的兴趣,我很好奇如何按顺序创建PI,而不是在过程结果之后生成数字,而是让数字在过程本身生成时显示。如果是这种情况,那么数字可以自行产生,我可以对以前看到的数字实现垃圾收集,从而创建一个无限系列。结果只是在Pi系列之后每秒生成一个数字。这是我通过互联网筛选的结果:这是流行的计算机友好算法,类机器算法:defarccot(x,unity)xpow=unity/xn=1sign=1sum=0loopdoterm=xpow/nbreakifterm==0sum+=sign*(xpow/n)xpow/=x*xn+=2sign=-signendsumenddefcalc_pi(digits
关闭。这个问题是opinion-based.它目前不接受答案。想要改进这个问题?更新问题,以便editingthispost可以用事实和引用来回答它.关闭4年前。Improvethisquestion我想在固定时间创建一系列低音和高音调的哔哔声。例如:在150毫秒时发出高音调的蜂鸣声在151毫秒时发出低音调的蜂鸣声200毫秒时发出低音调的蜂鸣声250毫秒的高音调蜂鸣声有没有办法在Ruby或Python中做到这一点?我真的不在乎输出编码是什么(.wav、.mp3、.ogg等等),但我确实想创建一个输出文件。
使用带有Rails插件的vim,您可以创建一个迁移文件,然后一次性打开该文件吗?textmate也可以这样吗? 最佳答案 你可以使用rails.vim然后做类似的事情::Rgeneratemigratonadd_foo_to_bar插件将打开迁移生成的文件,这正是您想要的。我不能代表textmate。 关于ruby-使用VimRails,您可以创建一个新的迁移文件并一次性打开它吗?,我们在StackOverflow上找到一个类似的问题: https://sta
我在MiniTest::Spec和Capybara中使用以下规范:find_field('Email').must_have_css('[autofocus]')检查名为“电子邮件”的字段是否具有autofocus属性。doc说如下:has_css?(path,options={})ChecksifagivenCSSselectorisonthepageorcurrentnode.据我了解,字段“Email”是一个节点,因此调用must_have_css绝对有效!我做错了什么? 最佳答案 通过JonasNicklas得到了答案:No
我对最新版本的Rails有疑问。我创建了一个新应用程序(railsnewMyProject),但我没有脚本/生成,只有脚本/rails,当我输入ruby./script/railsgeneratepluginmy_plugin"Couldnotfindgeneratorplugin.".你知道如何生成插件模板吗?没有这个命令可以创建插件吗?PS:我正在使用Rails3.2.1和ruby1.8.7[universal-darwin11.0] 最佳答案 随着Rails3.2.0的发布,插件生成器已经被移除。查看变更日志here.现在
如何使用RSpec::Core::RakeTask初始化RSpecRake任务?require'rspec/core/rake_task'RSpec::Core::RakeTask.newdo|t|#whatdoIputinhere?endInitialize函数记录在http://rubydoc.info/github/rspec/rspec-core/RSpec/Core/RakeTask#initialize-instance_method没有很好的记录;它只是说:-(RakeTask)initialize(*args,&task_block)AnewinstanceofRake
关闭。这个问题需要detailsorclarity.它目前不接受答案。想改进这个问题吗?通过editingthispost添加细节并澄清问题.关闭8年前。Improvethisquestion为什么SecureRandom.uuid创建一个唯一的字符串?SecureRandom.uuid#=>"35cb4e30-54e1-49f9-b5ce-4134799eb2c0"SecureRandom.uuid方法创建的字符串从不重复?
有没有办法在这个简单的get方法中添加超时选项?我正在使用法拉第3.3。Faraday.get(url)四处寻找,我只能先发起连接后应用超时选项,然后应用超时选项。或者有什么简单的方法?这就是我现在正在做的:conn=Faraday.newresponse=conn.getdo|req|req.urlurlreq.options.timeout=2#2secondsend 最佳答案 试试这个:conn=Faraday.newdo|conn|conn.options.timeout=20endresponse=conn.get(url
我正在阅读SandiMetz的POODR,并且遇到了一个我不太了解的编码原则。这是代码:classBicycleattr_reader:size,:chain,:tire_sizedefinitialize(args={})@size=args[:size]||1@chain=args[:chain]||2@tire_size=args[:tire_size]||3post_initialize(args)endendclassMountainBike此代码将为其各自的属性输出1,2,3,4,5。我不明白的是查找方法。当一辆山地自行车被实例化时,因为它没有自己的initialize方法
我想在Ruby中创建一个用于开发目的的极其简单的Web服务器(不,不想使用现成的解决方案)。代码如下:#!/usr/bin/rubyrequire'socket'server=TCPServer.new('127.0.0.1',8080)whileconnection=server.acceptheaders=[]length=0whileline=connection.getsheaders想法是从命令行运行这个脚本,提供另一个脚本,它将在其标准输入上获取请求,并在其标准输出上返回完整的响应。到目前为止一切顺利,但事实证明这真的很脆弱,因为它在第二个请求上中断并出现错误:/usr/b