2017-06-14 6 views
0

Ich bin neu, also bitte verzeihen Sie mir, wenn ich wiederhole. Ich bin kein PHP-Guru, aber als Teil meiner Lernerfahrung habe ich einen Stolperstein getroffen.Validieren von Duplikaten

Ich habe ein HTML-Formular mit 5 Dropdown-Elemente auswählen. Sie alle bevölkerten von der Datenbank, die ungefähr 20 Fruchtnamen hat. Mein Problem ist, dass Benutzer in diesem Abschnitt kein doppeltes Obst auswählen dürfen. Beispielsweise; Wenn der Benutzer "Banana" in der ersten Auswahlbox auswählt und der Benutzer dann "Bananen" in einem oder mehreren Auswahlfeldern auswählt, wird einfach unsere Warnmeldung gedruckt, um zu sagen, dass ein doppelter Wert existiert.

ist die Form:

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

ich awarer dass bin, kann es schaffen, die Formularelemente viel einfachere Art und Weise sein, ohne mich mit wiederholen, aber wie gesagt, ich bin hier, um zu lernen und Ihre Vorschläge sind wirklich willkommen.

Vielen Dank für Ihre Hilfe!

+0

Nun, "Sie" haben diesen Code, daran erinnern, und es gibt nicht viel, was wir hier tun können. –

+0

Normalerweise möchten Sie so etwas wie Logik auf der Clientseite implementieren, also in Javascript, nicht PHP. Andernfalls könnten Sie nur nach einem vollständigen Neuladen der Seite eine solche Warnung generieren. – arkascha

+0

@arkascha Das Formular übergibt sich selbst, also wird die Nachricht angezeigt, nachdem der Post zurück in Ordnung ist. Ich versuche, Javascript zu vermeiden, aber wenn das der letzte Ausweg ist, dann stört es mich auch nicht. – sbedigital

Antwort

0

Man könnte so etwas wie diese benutzen, um Ihre Auswahlboxen zu bauen:

<?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>'; 
} 

Wenn Sie diese Werte in PHP abzurufen, nachdem das Formular abgeschickt wird, werden sie alle $_REQUEST['plate'] in einem Array sein. Sie können überprüfen, ob sie alle einzigartig sind (ohne Berücksichtigung von Auswahlboxen, die nicht verwendet wurden) unter Verwendung der folgenden:

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

Sie dann etwas mit dem $message tun könnte es für den Benutzer angezeigt werden soll.

+0

Danke @Josh H, I Ich wusste, ich war an der richtigen Stelle, um die Frage zu stellen! – sbedigital