2017-06-14 59 views
0

我是新来的,所以请原谅我,如果我重复。我不是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> 

我awarer的是,有可能是创建表单元素,而不必重复自己,而是为更简单的方式,我说我在这里学习,你的建议是非常欢迎。

感谢您的帮助!

+0

好吧,“你”有这样的代码,请记住,我们在这里没有太多可以做的事情。 –

+0

您通常希望在客户端实现诸如逻辑这样的事情,所以在JavaScript中,而不是PHP。否则,您只能在完整页面重新加载后生成此类警告。 – arkascha

+0

@arkascha表单提交自己,所以邮件显示在回帖后很好。我试图避免JavaScript,但如果这是最后的手段,那么我也不介意。 – sbedigital

回答

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东西显示给用户。

+0

谢谢@Josh H,我知道我是在正确的地方问这个问题! – sbedigital