【问题标题】:Spelling Check in PHP [duplicate]PHP中的拼写检查[重复]
【发布时间】:2013-08-09 15:22:51
【问题描述】:
<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. ) 

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

【问题讨论】:

  • 您是在发布表单时收到此错误,还是在加载页面时没有实际发布表单?

标签: php html spelling


【解决方案1】:

你需要检查POST值是否定义:

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

【讨论】:

  • 如果只是拼写你要找的不是语法,我建议你用if (strtolower($_POST["word"]) == "ship" )替换if ($_POST["word"] == "ship" )
  • @YusafKhaliq 你知道我怎样才能从这段代码中弹出一个窗口吗?就像如果用户点击答案按钮,结果会弹出?谢谢!
  • 这可以使用 javascript 来实现,我会编辑大卫的答案来为你做到这一点
  • 我已经回答了你的问题
【解决方案2】:

如果所有这些都在同一个 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>

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

【讨论】:

  • 就像我在 Laurent 对 jQuery 选项的回答中所建议的,将 $(this).val() 替换为 $(this).val().toLowerCase() 以确保检查拼写而不是语法:)
  • 可能是三元运算符在这里做得更好......;)顺便说一句+1
  • 忽略我的编辑是完全错误的
【解决方案3】:

可能是两者之一:

  1. 可能你发错文件了!!

从你的错误来看,它说

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

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

&lt;form action="act_vowel.php" method="post"&gt;

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

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

试试下面的

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

【讨论】:

  • 它看起来更像评论:)
  • 我应该把它移到 cmets 然后@NullPoiиteя 吗?我认为它会太长,但没有问题..你说
  • 如果您添加实际问题会很酷......我正在等待并会在编辑后为您投票
  • 完成@NullPoiиteя :) 。虽然有趣的是编号在第二点上没有变为 2。奇怪!!
  • 感谢您的鼓励……对于您认识的励志演讲者,您不会做坏事:D
【解决方案4】:

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!";
    }
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2010-11-21
    • 2012-05-30
    • 2011-04-10
    • 1970-01-01
    • 1970-01-01
    • 2011-05-31
    • 1970-01-01
    • 2010-11-28
    相关资源
    最近更新 更多