10-08-2013, 11:05 AM
(Modification du message : 16-08-2013, 02:04 PM par Sephi-Chan.)
Je pense que ce qu'il te faut c'est un formulaire comme ça :
Et côté PHP, tu recevras dans
C'est quand même bien plus pratique à traiter. Et pour savoir s'il y a un doublon, tu as juste à comparer la taille du tableau de toutes les divisions choisies ; dans mon cas 3 (en première ligne) et 2 (en deuxième ligne) à son équivalent dédoublonné : si ça ne correspond pas, c'est qu'il y avait des doublons.
Ça se fait simplement en faisant :
<form action="..." method="POST">
<p>Cible : <input type="text" name="attack[target]" /></p>
<h2>Formation</h2>
<div>
<div>
Ligne 1 :
<select name="attack[lines][1]">
<option value="1">Lancier</option>
<option value="2">Épéiste</option>
<option value="3">Cavalier</option>
</select>
</div>
<div>
Ligne 2 :
<select name="attack[lines][2]">
<option value="1">Lancier</option>
<option value="2">Épéiste</option>
<option value="3">Cavalier</option>
</select>
</div>
</div>
<p><input type="submit" value="Attaquer !" /></p>
</form>
Et côté PHP, tu recevras dans
$_POST['attack']
un hash de la forme suivante :
array(
'target' => 'Fooo',
'lines' => array(
'1' => '3',
'2' => '2'
)
);
C'est quand même bien plus pratique à traiter. Et pour savoir s'il y a un doublon, tu as juste à comparer la taille du tableau de toutes les divisions choisies ; dans mon cas 3 (en première ligne) et 2 (en deuxième ligne) à son équivalent dédoublonné : si ça ne correspond pas, c'est qu'il y avait des doublons.
Ça se fait simplement en faisant :
$selected_ids = array_values($_POST['attack']['lines']);
$has_duplicates = count($selected_ids) != count(array_unique($selected_ids));