有没有更简单的方法从PHP调用布尔值?

时间:2015-04-01 06:06:44

标签: php html

我正在尝试从我的服务器调用tinyInt,同时将其转换为布尔值。

有没有比我使用的更简单的方法呢?

while ($row = mysql_fetch_array($result)) {
    echo "<td>",
         "<input type=\"checkbox\" id='switch-state' name=\"$row[name]\" state=\"<script boolean(<? echo '$row[state]'; ?>) </script>\" </td>";
}

2 个答案:

答案 0 :(得分:2)

这是各种错误。

  • 您不能在HTML属性中放置<script>标记。这实际上太可怕了。
  • 您不能拥有多个具有相同ID的HTML元素。在循环中时,使用计数器生成唯一ID。
  • 您应该通过htmlspecialchars()将输出的所有字符串数据传递给HTML,以避免破坏结果HTML并最大限度地降低XSS漏洞的风险。
  • 您可能希望使用非标准属性(例如state="…")之外的其他内容来传输元素中的额外数据。 HTML5的data-*属性非常合适(data-state="…")。例如,另一种选择是CSS类。这取决于您打算如何处理州信息。
  • JavaScript可以很好地处理数字。在布尔上下文中使用时,0评估为false,所有其他数字评估为true。您可能希望按原样传输服务器数据,而不是翻译它。

这就是我要做的事。

$index = 0;
while ($row = mysql_fetch_array($result)) {
    $index++;
    echo "<td>",
        "<input type='checkbox' ", 
            "id='switch-state-$index' ",
            "name='".htmlspecialchars($row['name'])."' ",
            "data-state='".$row['state']}."'",
        "></td>\n";
}

输出:

<td><input type='checkbox' id='switch-state-1' name='foo' data-state='1'></td>
<td><input type='checkbox' id='switch-state-2' name='bar' data-state='0'></td>

答案 1 :(得分:0)

速记php在这里会很好

//Add this bit and reformat your statement
echo ($row['state'] == 1) ? "true" : "false";

$format = "<td>%s</td><td>%s</td><td>%f</td><td>%f</td><td><input type=\"checkbox\" id='switch-state' name=\"%s\" state=\"%s\" </td>";

$data = sprintf($format, $row['city'], $row['name'], $row['lat'], $row['long'], $row['name'], ($row['state'] == 1) ? "true":"false" );

echo $data;