foreach with option选择post值

时间:2017-11-12 01:26:44

标签: php forms

我正在对表单进行验证,如果出现错误,我想选择所选的值,问题是出现错误,因为当您发送表单时,将“已选择”添加到所有表单。

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>
";
}

在发送表单之前:

enter image description here

提交表单后

enter image description here

如果表单已发送但表单的另一部分出错,我希望记住所选的选项以继续表单。

知道我的错误在哪里?提前谢谢!

1 个答案:

答案 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>';
}