2013-05-19 87 views
-4
<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'英語'時,它會顯示一個,當用戶輸入'1'選擇'西班牙語'時,它會顯示uno , 等等。輸入和搜索表單問題

問題:

  1. 是否有替換該行沒有什麼好的辦法?
if (($_POST['find'] == '1')&& ($_POST['field'] == 'english')){ 
     echo $options['english']['1']; 
    } 

想象,如果我有從1到100,它是不可能的,我repete這些代碼(== 1 & & ==英語,== 2 & & ==英語...)。

2如果u運行此腳本,它顯示

注意:未定義指數:找到...

這是什麼probem以及如何解決它?

+0

您是否考慮過這個問題:http://code.google.com/p/google-translate-php-wrapper/ - 雖然我不知道細節! – NoChance

回答

0

第一點:

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

<?php $_SERVER['PHP_SELF'];?>不會做任何事情。你必須在這裏使用echo。但是,該錯誤並未顯示,因爲當操作屬性未設置時,它是表單在$ _SERVER ['PHP_SELF']處調用腳本的默認行爲。

另外:

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

好像沒用。

觀點二:

當然,你不想來分析每個可能的選擇以靜態的方式。您將使用抽象和動態行爲。

你有一個數組索引的語言,每個子數組給出每個數字使用的單詞。因此,你有你的規則和你的計算看起來像:

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

這是最小的代碼。請不要'按原樣'使用它。您至少要檢查密鑰是否存在並提供一些足夠的錯誤消息。

+0

永遠不要命名'$ _SERVER ['PHP_SELF']'不放置大的安全隱患警告標誌。 OP顯然接管了更加棘手的PHP示例中的垃圾代碼。 – hakre

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']; 
     } 
    } 
?> 
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']; 
} 
?>