我有这样的代码:
$html .='<form enctype="multipart/form-data" action="upload.php" method="POST">
<input type="hidden" id="input_clone_id" name="input_clone_id" value="'.$row['id'].'"/>
<input type="hidden" id="input_clone_var" name="input_clone_var" value="V"/>
<input type="file" name="uploaded_files[]" id="input_clone" multiple="multiple" /><br />
<input type="submit" style="margin-left:0;float:left" value="Upload Files" />
</form>';
$html .='<a href="#" onclick="$.ajax({type: ''POST'',url: ''delete_pic.php'',data:{id:'''.$row['id_vila'].''',var:''V'',val:'''.$val.'''},cache: false});window.location.reload( true );" style="background:url(''images/icons/delete.png'') 50% -19px no-repeat;width:16px;height:16px;float:left;margin-left:10px;margin-top: 6px;"></a>';
除了<form>
标记之外,所有内容都正确创建了。它没有显示出来。我在这里做错了什么?
function formatImage2($col,$val,$row)
{
$html = '';
$new = explode( ';', $val );
for($j = 0; $j < count($new)-1; $j++)
{
$html .= '<a target="_blank" href="../images/gallery/'.$new[$j].'"><img style="border: none;" src="../images/gallery/'.$new[$j].'" alt="'.$new[$j].'" width="100" /></a>';
}
$html .='<form enctype="multipart/form-data" action="upload.php" method="POST">
<input type="hidden" id="input_clone_id" name="input_clone_id" value="'.$row['id'].'"/>
<input type="hidden" id="input_clone_var" name="input_clone_var" value="V"/>
<input type="file" name="uploaded_files[]" id="input_clone" multiple="multiple" /><br />
<input type="submit" style="margin-left:0;float:left" value="Upload Files" />
</form>';
$html .='<a href="#" onclick="$.ajax({type: ''POST'',url: ''delete_pic.php'',data:{id:'''.$row['id_vila'].''',var:''V'',val:'''.$val.'''},cache: false});window.location.reload( true );" style="background:url(''images/icons/delete.png'') 50% -19px no-repeat;width:16px;height:16px;float:left;margin-left:10px;margin-top: 6px;"></a>';
return $html;
}
我用这个来格式化数据库中的图片。
输出:<td>
<input type="hidden" id="input_clone_id" name="input_clone_id" value="9">
<input type="hidden" id="input_clone_var" name="input_clone_var" value="V">
<input type="file" name="uploaded_files[]" id="input_clone" multiple="multiple"><br>
<input type="submit" style="margin-left:0;float:left" value="Upload Files">
<a href="#" onclick="$.ajax({type: 'POST',url: 'delete_pic.php',data:{id:'9',var:'V',val:''},cache: false});window.location.reload( true );" style="background:url('images/icons/delete.png') 50% -19px no-repeat;width:16px;height:16px;float:left;margin-left:10px;margin-top: 6px;"></a></td>
这是由于一个表单嵌套在另一个表单中造成的。内部表单标签不会被渲染,但是表单内的任何html都会被渲染。
你必须在你的外部HTML中有一些形式来包装这个。
<form id="outsideForm">
<form id="insideForm">
<div>Inside Content</div>
</form>
</form>
内部表单元素消失演示
我在3小时前发布了这个信息,但它被否决/删除了,因为它是以问题的形式出现的。我本想把这些信息作为评论发布,但我没有这样做的声誉。一个更好的解决方案可能是编辑我的答案,而不是完全删除它。
你的代码很好。当你编写HTML代码并尝试在PHP中打印时,总是使用PHP的预构建函数htmlentities()
。
:
echo htmlentities($html);
这个函数用于识别PHP字符串中的HTML代码并对其进行编码。试试这个。这将为您工作。
在使用它之前,你需要在HTML实体中解码字符串。使用如:
$html .= html_entity_decode('<form enctype="multipart/form-data" action="upload.php" method="POST">');
这是一个例子。您需要处理所有字符串以使用特殊字符进行转义。这是这个的教程。
编辑:
$html .= <<<HTML
<form enctype="multipart/form-data" action="upload.php" method="POST">
<input type="hidden" id="input_clone_id" name="input_clone_id" value="'.$row['id'].'"/>
<input type="hidden" id="input_clone_var" name="input_clone_var" value="V"/>
<input type="file" name="uploaded_files[]" id="input_clone" multiple="multiple" /><br />
<input type="submit" style="margin-left:0;float:left" value="Upload Files" />
</form>
HTML;
试试这个。