【问题标题】:Use Mysql results to assign $_POST variables使用 Mysql 结果分配 $_POST 变量
【发布时间】:2014-05-21 08:22:20
【问题描述】:

我的数据库中有一个表,其中包含我的网站翻译成的语言 .. 假设我有 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'];
}
?>

快速编辑 做了类似的事情..这是快速结果

$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";

【问题讨论】:

标签: php mysql forms http-post


【解决方案1】:

像这样制作一个存储语言的数组

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

现在检查设置语言

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

【讨论】:

    【解决方案2】:

    使用如下命名约定:

    name="language[EN]"
    

    然后,在 PHP 中,您可以遍历关联数组 $_POST['language'](假设您将 method="post" 添加到表单中)。

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

    【讨论】:

    • 其实我是用jquery来发布数据的。
    • @TarekSawah 检查我的答案
    • @TarekSawah — 假设您只是在表单上使用 $().serialize(),这并没有什么不同。如果你不是,那么解决方案仍然是使用这个命名约定,你只需在你的 JavaScript 中手动构建你发送的数据时这样做。
    • 这实际上是最好的方法。
    【解决方案3】:

    或者,您可以只遍历所有表单数据,并排除您不需要的字段(例如提交按钮),这样您就可以创建一个完全动态的查询。这是一个简单的例子:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-02-04
      • 1970-01-01
      相关资源
      最近更新 更多