0

我正在尝试使用多个提交按钮进行测验。我想要一张带有十个按钮的图片。每次考生按下按钮时,我都希望发布值并更改图片。到目前为止,我已经尝试了三种方法:-

1.使用 onclick 和 javascript 我可以完成所有动画,但没有发布值。从谷歌我得到的印象是我必须使用更多的 javascript 来提交值?

2.在php中使用变量,第一张图片会显示,第一个值会发布,但什么都没有发生,添加一个循环意味着所有图片都出现在另一个之上,而无需等待任何按钮被点击......

3.我尝试为每张图片做单独的html页面,然后将值发布到一个php文件中,该文件执行$score++;并转到下一个 html 文件,但 $score 不正确。因为它是一个局部变量?这是否意味着我必须保留 MySQL 中的价值才能获得它?此外,这似乎是对整个事物进行编程的一种非常浪费的方式......

这是没有的代码。2:

<?php
include 'header.php';

if ($round==1) {$ans='Banana';}
if ($round==2) {$ans='Book';}
if ($round==3) {$ans='Pencil';}
...and so on

if ($_POST['submit']==$ans) {$score++; echo "Right!"; $round++; }
else
{$round++;}
?>

<html>
<form action="index.php" method="post">

<input type="submit" class="button1"  name="submit" value="Banana">
<input type="submit" class="button2" name="submit" value="Balloon">
<input type="submit" class="button3" name="submit" value="Dog">
<input type="submit" class="button4" name="submit" value="Mouse">
<input type="submit" class="button5" name="submit" value="Chair">
<input type="submit" class="button6" name="submit" value="Twelve">
<input type="submit" class="button7" name="submit" value="Pen">
<input type="submit" class="button8" name="submit" value="Book">
<input type="submit" class="button9" name="submit" value="Ball">
<input type="submit" class="button10" name="submit" value="Elephant">
</form>
</html>

<?php

if($ans=="Banana")
{   
echo '<img src="Banana.png" id="picture" class="picture" height="600" width="600" alt="script.aculo.us" />';
}
if($ans=="Pencil")
{   
echo '<img src="Pencil.png" id="picture" class="picture" height="600" width="600" alt="script.aculo.us" />';
}
{   
echo '<img src="Book.png" id="picture" class="picture" height="500" width="500" alt="script.aculo.us" />';
}
...and so on

include 'footer.php';

?>

任何帮助将不胜感激 :)

4

3 回答 3

0

我会让每个按钮将其值提交给一个函数(onclick="answered('pencil')")

然后,我将有一个正确答案顺序的数组,以及用户所在回合的计数器整数。在已回答的函数中,我会将提交的值与“round”位置的答案数组中的项目进行比较(可能会根据您想要的计数方式减一),并且可能会增加猜测计数(如果这是您的评分)

当两个值匹配时,递增计数器,并更改图像的 src 属性。如果不是,则显示一些“再次猜测”消息

最后一轮完成后,您可以将猜测计数发布到服务器进行存储(如果这是您的意图)

这是一些示例代码:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Untitled Document</title>
</head>

<body>
<div id="buttons">
<button onclick="answered('banana')">Banana</button>
<button onclick="answered('balloon')">Balloon</button>
<button onclick="answered('dog')">Dog</button>
<button onclick="answered('mouse')">Mouse</button>
<button onclick="answered('chair')">Chair</button>
<button onclick="answered('twelve')">Twelve</button>
<button onclick="answered('pen')">Pen</button>
<button onclick="answered('book')">Book</button>
<button onclick="answered('ball')">Ball</button>
<button onclick="answered('elephant')">Elephant</button>
</div>
<div id="msg"></div>
<img id="photo" />

</body>
<script type="text/javascript">
var turn=0;
var guess=0;
//this is the order of correct answers
var answers = ['banana','book','elephant','dog','pen','balloon','mouse','ball','chair','twelve'];
//these are the image urls (yours would be more like 'Pen.png'
var images= ['http://caloriesinbanana.net/wp-content/uploads/2012/01/Calories-in-Banana.jpeg','http://www.instructables.com/image/FZJO197FB11U3O8/Write-a-good-book.jpg','http://images.nationalgeographic.com/wpf/media-live/photos/000/004/cache/african-elephant_435_600x450.jpg','http://1.bp.blogspot.com/-pKym47-kmsk/Trj8aES5iRI/AAAAAAAADII/5tUPH7YZUnw/s1600/Dog.jpg','http://tacticalpens.net/wp-content/uploads/2011/05/surefire-tactical-pen.jpg','http://1.bp.blogspot.com/-zLp3E7kSKm4/TV6W5FNY44I/AAAAAAAAAy8/lvievPXdh68/s1600/red+balloon.jpg','http://kids.mdbc.gov.au/__data/page/735/Pilliga_Mouse.JPG','http://thelatesthiss.org/wp-content/uploads/2012/03/soccer-ball1.png','http://remodelista.com/img/sub/uimg//02-2011/ikea-olle-chair-red.jpg','http://ctmls.ctreal.com/wp-content/uploads/2011/12/twelvekillerblogposts.jpg'];

document.getElementById('photo').setAttribute('src',images[turn]);
function answered(a){
    guess++;
    if(a==answers[turn]){
        turn++;
        if(turn!=answers.length){
            document.getElementById('msg').innerHTML='<span style="color:#FFF;background-color:#0F0;">Great Job!!</span>';
            setTimeout(clr,1000);
            document.getElementById('photo').setAttribute('src',images[turn]);
        }
        else{
            alert('You finished the quiz. You were right '+answers.length+'/'+guess+' times for a score of '+Math.round(100*answers.length/guess)+'%');
        }
    }
    else{
        document.getElementById('msg').innerHTML='<span style="color:#FFF;background-color:#F00;">Guess Again</span>';
        setTimeout(clr,2000);
    }
}

function clr(){
    document.getElementById('msg').innerHTML='';
}

</script>
</html>
于 2012-05-01T00:07:51.147 回答
0

在您的情况下,优雅的解决方案是使用 javascript(带有 onClick)和 AJAX(一个支持 AJAX 查询的库,如 jQuery - http://api.jquery.com/category/ajax/ )。每次用户单击选择一个按钮时,您应该更新 javascript 中的分数值并请求新图像的 url 及其正确答案。当用户单击最后一个按钮发送时,您应该发送最终分数。您可以在这里找到有关 AJAX 的更多详细信息:http: //www.w3schools.com/ajax/default.asp 希望对您有所帮助

于 2012-04-26T12:18:11.870 回答
0

在这些方法中,第三种方法优于其他方法。通常在 MCQ 页面上,问题被保留或单独的页面。如果您使用会话,您可以解决局部变量的问题

$_SESSSION['score'] += $score
echo $_SESSION['score'];
于 2012-04-30T23:57:45.293 回答