2014-05-21 106 views
1

我有我的數據庫中的表包含了語言我的網站被翻譯成..讓我們說我有EN,AR,和KU

形式是象下面這樣:

<form id="addTags"> 
    <label>Friendly Name</label><br /> 
    <input type="text" name="FriendlyName" id="FriendlyName" /><br /> 
    <span style="font-size:9pt;color:#555;"><i>This is used to mark the Category</i></span><br /> 
    <label>URL ShortCode</label><br /> 
    <input type="text" name="ShortName" id="ShortName" /><br /> 
    <h3> 
    Translate for multilingual use <span style="font-size:9pt;color:red;"><i>*Required</i></span> 
    </h3><label>عربي</label><br /> 
    <input type="text" name="AR" id="AR" /><br /> 
    <label>English</label><br /> 
    <input type="text" name="EN" id="EN" /><br /> 
    <label>Kurdish</label><br /> 
    <input type="text" name="KU" id="KU" /><br /> 
    <input type="submit" value="Add Cat" class="button" align="center" /> 
</form> 

根據我提到的表中的語言,動態添加最後三個文本輸入。 我的問題是..如果我添加第四種語言,我如何在我的PHP腳本中動態捕獲$ _POST參數?我正在考慮從同一張桌子上獲得Langs並將它們分配爲變量。但有可能做這樣的事情嗎?

<? 
while($lang =$result->fetch_array()){ 
$langID=$lang['langid']; 
$input_$langID=$_POST['$langID']; 
} 
?> 

QUICL編輯 做了類似的事情..這裏的速效性

$get_lang_id = $link->query("SELECT * FROM `tjcgLangs`"); 
$where = ""; 
$FriendlyName=mysqli_real_escape_string($link,$_POST['FriendlyName']); 
$ShortName=mysqli_real_escape_string($link,$_POST['ShortName']); 
$art_lang=$link->query("INSERT INTO table1 (tagFriendlyName,tagShortName) VALUES ('$FriendlyName','$ShortName');"); 
$insert_id=$link->insert_id; 
while($get_lang=$get_lang_id->fetch_array(MYSQLI_ASSOC)){ 
    $language = $get_lang['langISOCode']; 
    $where .= "($insert_id,'".$_POST[$language]."',".$get_lang['langID']."),"; 
} 
$where = rtrim($where, ","); 
$art_lang_m=$link->query("INSERT INTO Table2 (tagMRootID,tagMDispName,tagMLang) values $where"); 
$get_lang_id->free(); 
$link->close(); 
echo "DONE"; 
+0

你應該[瞭解如何使用標籤元素正確](http://www.456bereastreet.com/archive/200711/use_the_label_element_to_make_your_html_forms_accessible/)。如果沒有for屬性或者表單控件,標籤就沒用了。 – Quentin

回答

0

作出這樣

$ARR_LANGUAGES = ("AR", "EN", "KU"); 

您存儲的語言的數組現在檢查isset語言

foreach($ARR_LANGUAGE as $language) 
{ 
    if(isset($_POST[$language])) 
    { 
     echo $language." is Set through post !! <br/>" 
    } 
    else 
    { 
     echo $language." is Not Set !! <br/>" 
    } 
} 
0

使用的命名慣例,如:

name="language[EN]" 

然後,在PHP中,你可以遍歷的關聯數組$_POST['language'](假設您將method="post"添加到您的表單中)。

foreach ($_POST['language'] as $lang => $user_input) { 
    do_something_with($lang, $user_input); 
} 
+0

其實我使用jquery發佈數據。 –

+0

@TarekSawah檢查我的答案 –

+0

@TarekSawah - 假設你只是在表單上使用'$()。serialize()',這沒有什麼區別。如果你不是,那麼解決方案仍然使用這個命名約定,你只需要在你手動構建你發送的數據時在JavaScript中執行。 – Quentin

0

或者你可以通過你的所有的表單數據循環,excluse領域你不需要(如提交按鈕),這樣你就可以創建一個完全動態的查詢。下面是一個簡單的例子:

$exclude = array('submit'); 
foreach ($_POST as $key => $value) { 
    if (!in_array($key, $exclude)) { 
     $query .= $key . "=". $value; 
    } 
}