2017-06-14 14 views
0

私はこれに新しいので、私が繰り返している場合私を許してください。私はPHPの教師ではありませんが、私の学習経験の一部として、私は障害を負っています。重複を確認する

私は5つのドロップダウン選択要素を持つHTMLフォームを持っています。彼らはすべて約20の果物名を持つデータベースから移入されました。私の考えでは、ユーザーはセクションで重複した果物を選択することはできません。例えば; ユーザーが最初の選択ボックスで「Banana」を選択し、ユーザーが1つ以上の選択ボックスで「bananas」を選択すると、重複値が存在すると警告メッセージが表示されます。私は学ぶためにここにいると、あなたの提案があると述べたように私はそれawarer午前、自分自身を繰り返さなくても、フォーム要素を作成するための非常に簡単な方法があるかもしれません

<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> 

しかし:ここ

の形式であります本当に歓迎された。

ご協力いただきありがとうございます。

+0

まあ、 "あなた"はそのコードを覚えています、それを覚えていて、私たちがここでできることはあまりありません。 –

+0

通常は、クライアント側でロジックなどを実装したいので、PHPではなくjavascriptで実装します。それ以外の場合は、ページ全体のリロード後にのみ、このような警告を生成することができます。 – 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

ありがとう@ジョシュH、私私は質問をするために適切な場所にいたことを知っていた! – sbedigital

関連する問題