输入和搜索表单问题

时间:2013-05-19 09:40:57

标签: php html

 <form name="search" method="post" action="<?php $_SERVER['PHP_SELF'];?>">
 Seach for: <input type="text" name="find" /> in 
 <Select NAME="field">
 <Option VALUE="english">english</option>
 <Option VALUE="spanish">spanish</option>
 </Select>
 <input type="hidden" name="searching" value="yes" />
 <input type="submit" name="search" value="Search" />
 </form>

  <?php
$options = array('english'=> array('1' => 'one', '2' => 'two'), 'spanish' =>array('1'=>'uno', '2'=>'dos'));

if (($_POST['find'] == '1')&& ($_POST['field'] == 'english')){
    echo $options['english']['1'];
}
?>

我想要这个功能,当用户输入'1'和seclet'english'时,它会显示一个,当用户输入'1'选择'spanish'时,它会显示uno,依此类推。

问题:

  1. 有没有什么好方法可以替换这条线?
  2.  if (($_POST['find'] == '1')&& ($_POST['field'] == 'english')){
          echo $options['english']['1'];
        }
    

    想象一下如果我有1到100的数字,我就不可能重复这些代码(== 1&amp;&amp; == english,== 2&amp;&amp; == english ...)。 / p>

    2如果您运行此脚本,则会显示

      

    注意:未定义的索引:find ...

    这个探针是什么以及如何修复它?

3 个答案:

答案 0 :(得分:0)

即使在初始页面加载时,您也会检查发布的值。尝试包装底部的PHP代码,如下所示:

<?php
    if(!empty($_POST)) {
        $options = array('english'=> array('1' => 'one', '2' => 'two'), 'spanish' =>array('1'=>'uno', '2'=>'dos'));

        if (($_POST['find'] == '1')&& ($_POST['field'] == 'english')){
            echo $options['english']['1'];
        }
    }
?>

答案 1 :(得分:0)

<?php

$html =<<<'HTML'

<form name="search" method="post" action="<?php $_SERVER['PHP_SELF'];?>">
 Seach for: <input type="text" name="find" /> in 
 <Select NAME="field">
 <Option VALUE="english">english</option>
 <Option VALUE="spanish">spanish</option>
 </Select>
 <input type="hidden" name="searching" value="yes" />
 <input type="submit" name="search" value="Search" />
 </form>
HTML;

echo $html;

$options = array('english'=> array('1' => 'one', '2' => 'two'), 'spanish' =>array('1'=>'uno', '2'=>'dos'));

if ((isset($_POST['find']) == '1')&& (isset($_POST['field']) == 'english')){
    echo $options['english']['1'];
}
?>

答案 2 :(得分:0)

第一点:

<form name="search" method="post" action="<?php $_SERVER['PHP_SELF'];?>">

<?php $_SERVER['PHP_SELF'];?>什么都不做。你必须在这里使用 echo 。然而,错误没有显示,因为当没有设置action属性时,表单在$ _SERVER ['PHP_SELF']调用脚本是默认行为。

另外:

<input type="hidden" name="searching" value="yes" />

似乎毫无用处。

第二点:

当然,您不希望以静态方式解析每个可能的选择。您将使用抽象和动态行为。

按语言有一个数组索引,每个子数组给出每个数字使用的单词。因此,您有自己的规则,计算结果如下:

<?php
$input = trim($_POST['find']);
$language = $_POST['field'];
$output = $options[$language][$input];
echo $output;
?>

这是最小的代码。请不要“按原样”使用它。您至少要检查密钥是否存在并提供足够的错误消息。