验证重复项

时间:2017-06-14 17:29:17

标签: php

我是新手,所以请原谅我,如果我重复一遍。我不是一个PHP大师,但作为我学习经历的一部分,我遇到了绊脚石。

我有一个HTML表单,其中有5个下拉选择元素。它们都来自数据库,其中有大约20个水果名称。我的意思是,用户不允许在其中选择一个复制的水果。例如; 如果用户在第一个选择框中选择“香蕉”,然后用户在一个或多个选择框中选择“香蕉”,它将只打印我们的警告消息,表示存在重复值。

以下是表格:

<form action="<?php echo htmlspecialchars($_SERVER[" PHP_SELF "]);?>" method="post">
<select name="plate1">
    <?php foreach ($fruits as $fruit) { ?>
    <option value="<?php echo $fruit['id']; ?>">
        <?php echo $fruit['name']; ?>
    </option>
    <?php
    }
    ?>
</select>
<select name="plate2">
    <?php foreach ($fruits as $fruit) { ?>
    <option value="<?php echo $fruit['id']; ?>">
        <?php echo $fruit['name']; ?>
    </option>
    <?php
    }
    ?>
</select>
<select name="plate3">
    <?php foreach ($fruits as $fruit) { ?>
    <option value="<?php echo $fruit['id']; ?>">
        <?php echo $fruit['name']; ?>
    </option>
    <?php
    }
    ?>
</select>
<select name="plate4">
    <?php foreach ($fruits as $fruit) { ?>
    <option value="<?php echo $fruit['id']; ?>">
        <?php echo $fruit['name']; ?>
    </option>
    <?php
    }
    ?>
</select>

我知道,创建表单元素可能有更简单的方法而不重复自己,但正如我所说,我在这里学习,你的建议真的很受欢迎。

感谢您的帮助!

1 个答案:

答案 0 :(得分:0)

您可以使用类似的内容来构建您的选择框:

<?php
for ($i=1;$i<=5;$i++) {
    echo '<select name="plate['.$i.']">';
    foreach ($fruits as $fruit) {
        echo '<option value="'.$fruit['id'].'">'.$fruit['name'].'</option>';
    }
    echo '</select>';
}

在提交表单后在PHP中检索这些值时,它们都将位于数组$_REQUEST['plate']中。您可以使用以下方法检查它们是否都是唯一的(忽略未使用的选择框):

<?php
if (count(array_unique(array_filter($_POST['plate']))) === count(array_filter($_POST['plate']))) {
    // success
}
else {
     $message = "Duplicate values detected.";
}

然后,您可以使用$message执行某些操作,将其显示给用户。