我正在对表单进行验证,如果出现错误,我想选择所选的值,问题是出现错误,因为当您发送表单时,将“已选择”添加到所有表单。
foreach ($categorias as $categoria) {
echo "
<option value='".(!empty($_POST["producto_categoria"]) ? $categoria['hijo_id']." selected" : $categoria['hijo_id'])."'>
{$categoria['padre_nombre']} > {$categoria['hijo_nombre']}
</option>
";
}
在发送表单之前:
提交表单后
如果表单已发送但表单的另一部分出错,我希望记住所选的选项以继续表单。
知道我的错误在哪里?提前谢谢!
答案 0 :(得分:1)
您的ternary逻辑无效。以下是您的代码的更正版本,其中还包括通过htmlspecialchars()
进行清理调用。
<?php
if ( ! empty( $_POST['producto_categoria'] ) ) {
$producto_categoria = (string) $_POST['producto_categoria'];
}
foreach ( $categorias as $categoria ) {
echo '<option' . // Possibly the selected option.
' value="' . htmlspecialchars( $categoria['hijo_id'] ) . '"' .
( $categoria['hijo_id'] === $producto_categoria ? ' selected' : '' ) . '>' .
htmlspecialchars( $categoria['padre_nombre'] . ' > ' . $categoria['hijo_nombre'] ) .
'</option>';
}