从html提交表单发布多个值

时间:2018-01-19 18:43:06

标签: php html json

我尝试使用从SQL数据库中的关联数组填充的HTML提交,但我希望传递多个值而不是通常的1.我尝试过使用JSON值,使用变量然后解码JSON以检索单个变量。

<select name="name">
<?php
foreach($array as $vals){
  echo '<option value={"a":".'$vals['1']'.","b":".'$vals['2']'.","c":".'$vals['3']'.","d":".'$vals['4']'."}>Option Name</option>';
}?>
</select>

它按预期工作,直到其中一个选项在字符串中有间距,然后在HTML页面中。我最终遇到了一个问题,在某种程度上是一个额外的&#34;插入空间,所以我的浏览器显示值:

{"a":"x" y","b":"xy","c":"xyz","d":"xyzz"}

问题是&#34; x&#34; ý&#34;我希望成为&#34; x y&#34;。

有没有人对我如何解决这个问题有所了解?或者同样的任何其他方法来实现相同的结果?

3 个答案:

答案 0 :(得分:1)

您需要在value属性周围加上引号,以便空格不会终止它。还可以使用htmlentities()对其他特殊字符进行编码。

另外,不要手动构建JSON,使用json_encode()

foreach ($array as $vals) {
    $obj = ["a" => $vals[1], "b" => $vals[2], "c" => $vals[3], "d" => $vals[4]];
    $json = htmlentities(json_encode($obj));
    echo "<option value='$json'>Option Name</option>";
}

答案 1 :(得分:0)

我将JSON构建为PHP数组,然后你可以将base64_encode(json_encode())数组。这将更容易阅读,您不必担心此解决方案的其他边缘情况。

答案 2 :(得分:0)

检查位置。和'

echo '<option value={"a":".'$vals['1']'.","b":".'$vals['2']'.","c":".'$vals['3']'.","d":".'$vals['4']'."}>Option Name</option>';

校正的

echo '<option value={"a":"'.$vals['1'].'","b":"'.$vals['2'].'","c":"'.$vals['3'].'","d":"'.$vals['4'].'"}>Option Name</option>';