-1
<table align = "left">


<?php

if ($_POST["word"] == "ship" )
{
echo "Your answer is correct.";
}
else
{
echo "Sorry, you typed the wrong answer. Try Again!";
}


?>

<tr>
<td> <span id="dummy" onclick="playSound(this,'vowels/ship.mp3');">
<img src="pics/i.jpg" onmouseover="this.src='pics/vowel/ship.jpg';this.width=200;this.height=250" onmouseout="this.src='pics/i.jpg';this.width=100;this.height=150"/>

 <form action="act_vowel.php" method="post">
 <h2> <font color = "black">  Type the word: <input type="text" name="word"> </h2> </font>
  <input type="submit" name="check" value="Answer">
  </form>

当我运行这段代码时。我总是收到这样的错误:

  (Notice: Undefined index: word in C:\xampp\htdocs\dyslexia\sample.php on line 15
  Sorry, you typed the wrong answer. ) 

当用户输入答案时,我如何设计结果?我想让它更生动。谢谢!

4

4 回答 4

4

您需要检查 POST 值是否已定义:

if (isset($_POST["word"])) {
    if ($_POST["word"] == "ship" )
    {
        echo "Your answer is correct.";
    }
    else
    {
        echo "Sorry, you typed the wrong answer. Try Again!";
    }
}
于 2013-08-08T02:51:25.683 回答
1

它可能是两者之一:

  1. 也许您发布到错误的文件!

从你的错误来看,它说

(注意:未定义索引:第 15 行 C:\xampp\htdocs\dyslexia\sample.php 中的单词对不起,您输入了错误的答案。)

而您的表单发布到页面act_vowel.php"

<form action="act_vowel.php" method="post">

您确定要发布到正确的页面吗?这也可能是错误的根源(不是说是,而是有可能)

  1. $_POST["word"]在比较变量的值之前,您没有检查您的变量是否已设置。

尝试以下

if(isset($_POST["word"]) && $_POST["word"]=="ship"){
    echo "你的答案是正确的。";
}别的{
    echo "对不起,您输入了错误的答案(或者可能没有输入:P)。再试一次!";
}
于 2013-08-08T02:56:15.913 回答
1

如果所有这些都在同一个 PHP 页面上,那么发生的情况是您在第一次加载页面时检查该值,而不是在您将值发布到它之后。在尝试回复之前,您需要检查是否存在表单帖子:

if (isset($_POST["check"]))
{
    if ($_POST["word"] == "ship" )
    {
        echo "Your answer is correct.";
    }
    else
    {
        echo "Sorry, you typed the wrong answer. Try Again!";
    }
}

至于你最后的评论:

当用户输入答案时,我如何设计结果?我想让它更生动。

您可以做的一件事是检查 JavaScript 而不是 PHP 中的拼写,这样就不需要表单发布。如果您希望它在用户键入时发生,您可以响应该keypress事件。以 jQuery 为例:

$('input[name=Word]').keypress(function () {
    if ($(this).val() == 'ship') {
        $('#result').text('Your answer is correct.');
    } else {
        $('#result').text('Sorry, you typed the wrong answer. Try Again!');
    }
});

这将使用响应更新 id "result" 的元素(您将其放在页面上的某个位置):

<span id="result"></span>

但是,在用户键入时响应的用户体验可能有点尴尬。在输入单词时,他们会一直被告知这是错误的,直到他们完成为止,这在输入正确答案时是一种否定。

于 2013-08-08T02:57:29.867 回答
0

http://jsfiddle.net/bCpLm/1/

也改变HTML,你的无效!

向表单添加一个 id,以便您可以使用 JavaScript 更轻松地操作它

<form action="act_vowel.php" method="post" id="form">
     <h2> <font color = "black">  Type the word: </font> </h2> 
    <input type="text" name="word" />
    <input type="submit" name="check" value="Answer" />
</form>

以下内容仅在用户启用了 javascript 时才有效,但您不太可能遇到禁用它的人,但您应该始终适应每个人!

var form = document.getElementById("form");
form.onsubmit = function () {
    if (document.getElementsByName("word")[0].value.toLowerCase() == 'ship') {
        alert('Your answer is correct.');
    } else {
        alert('Sorry, you typed the wrong answer. Try Again!');
        return false;
    }
}

为了适应 javascript 禁用用户,请将以下内容添加到 act_vowel.php 文件

if (isset($_POST["word"])) {
    if (strtolower($_POST["word"]) == "ship" )
    {
        echo "Your answer is correct.";
    }
    else
    {
        echo "Sorry, you typed the wrong answer. Try Again!";
    }
}
于 2013-08-08T04:15:35.040 回答