2010-04-12 44 views
0

我有点迷失在所有这些“”和“与”之中。在这份声明中。 基本上这个查询是从表格“标记”中获取所有标记名并将它们显示给用户作为复选框。如果他们点击了“提交”,并且他们错过了另一个领域(比如职位的标题),他们仍然会显示他们选择的标签。我需要帮助的部分是回声部分。当他们点击提交时,似乎没有记住标签。我该如何获得这个php语句,该语句从数据库和输出中获取所有值作为复选框的工作? (PHP/Mysql)

 $query4 = "SELECT * FROM tags ORDER BY tagname"; 
    $data4 = mysqli_query($dbc, $query4); 
    while ($row4 = mysqli_fetch_array($data4)) 
    { 
    echo "<li><input type='checkbox' name='postingtag[]'"; 
    if (!empty($postingtag)){ 
    echo "value='$postingtag'"; 
    } 
    else{ 
    echo "value='{$row4['tagID']}'"; 
    } 
    echo ">{$row4['tagname']}</li>"; 
    } 
+0

哪里是$ postingTag变量来的呢? – GSto 2010-04-12 16:47:30

+0

我有一个提交按钮。如果他们点击提交,那么$ _POST ['postingtag']将被存储为$ postingtag变量。 – ggfan 2010-04-12 16:48:17

+0

如果$ postingTag变量显示为空,那么您需要发布表单的HTML代码以及处理表单的PHP代码。有一件事在你的代码中看起来有点缺失,在value =之前缺少空格。 – cowbellemoo 2010-04-12 17:13:36

回答

2

试试这个:

$query4 = "SELECT * FROM tags ORDER BY tagname"; 
$data4 = mysqli_query($dbc, $query4); 
while ($row4 = mysqli_fetch_array($data4)) { 

echo "<li><input type='checkbox' name='postingtag[{$row4['tagID']}]' value='1'"; 

if (isset($postingtag[$row4['tagID']])) 
    echo " checked='checked'"; 

echo "/> {$row4['tagname']}</li>"; 
} 

$postingtag会,将与已检出标签被填充的数组。通过给$postingtag数组添加一个可辨别的索引,您将能够检查它是否被填充,然后可以相应地设置checked属性。

1

为了确定用户是否选中了表单提交中的某个复选框,您需要测试该复选框是否已提交。你看,浏览器只发送复选框的值,如果它被检查,否则你什么也没收到。因此,为了对此进行测试,您需要一种在提交的参数中唯一标识此复选框的方法。最可靠的方法来做到这一点在这种情况下,(和其他大多数,如果不是所有其他情况下),将包括唯一标签ID作为复选框的名称的关键,就像这样:

... <li><input type="checkbox" name="postingtag[' . $row4[ 'tagID' ] . ']" ... 

然后在提交测试它:

$checked = isset($_POST[ 'postingtag' ][ $row4[ 'tagID' ] ]) ? ' checked="checked"' : ''; 

全部放在一起you'ld得到的东西,如:

$checked = isset($_POST[ 'postingtag' ][ $row4[ 'tagID' ] ]) ? ' checked="checked"' : ''; 
$checkbox = '<li><input type="checkbox" name="postingtag[' . $row4[ 'tagID' ] . ']"' . $checked . '>' . $row4['tagname'] . '</li>';