j'ai essayé de mettre le nom de mon select comme ceci : selected_adresses[] mais alors ma fonction JavaScript ne fonctionne plus :/
			
		
 
	 
 C'est en effet la bonne syntaxe si tu veux que ton serveur reçoive toutes les données. En JavaScript, c'est toujours possible d'accéder au <select> mais il faut ruser un petit peu. Remplace :
	
	document.contacts.search_results
 par :
	
	document.contacts['search_results[]']
 Et ça devrait marcher.
Il reste un problème avec ce search_results[-1]. Il n'y a pas d'index -1 dans un <select>. Je suppose que tu as voulu dire « le dernier sélectionné », mais ce n'est pas aussi simple : le navigateur ne mémorise pas quelle est la dernière option sélectionnée. Il faudrait que tu compares les entrées actuellement sélectionnées dans le <select> de gauche avec celles présentes dans le <select> de droite… Ou alors je n'ai pas compris ce que tu voulais faire.
	
		
			
			
				PS: Quand on passe le formulaire en GET on peut voir dans la barre de lien tout les adresses !
			
		
 
	 
 Oui, c'est tout à fait normal.
Edit: dans le lien posté par Sekaijin il est souligné que les <select> multiples ne sont pas très ergonomiques et qu'il est préférable d'utiliser des checkboxes à la place. Voici un exemple minimaliste :
	
	| 12
 3
 4
 5
 6
 7
 8
 9
 10
 11
 12
 13
 14
 15
 16
 17
 18
 19
 20
 21
 22
 23
 24
 25
 26
 27
 28
 29
 30
 31
 32
 33
 34
 35
 36
 37
 38
 39
 40
 41
 42
 43
 44
 45
 46
 47
 48
 49
 50
 51
 52
 53
 54
 55
 56
 57
 58
 59
 60
 61
 62
 63
 64
 65
 66
 67
 68
 
 | <?php
 
error_reporting(E_ALL);
 
// classe stub en remplacement de la base de données
class QueryClubStub {
 
   private $i;
 
   public function __construct() {
      $this->i = 0;
   }
 
   // génère des données fictives
   public function fetch() {
      if (isset(self::$clubs[$this->i])) {
         $nom = self::$clubs[$this->i];
         $this->i++;
         return [
            'mail_club' => preg_replace('/[. ]+/', '-', strtolower($nom)) . '@example.com',
            'nom_club'  => $nom
         ];
      }
      return null;
   }
 
   private static $clubs = [
      'Judo St Genis Pouilly',
      'J.C.A.S. Peronnas',
      'Judo club Bagesien',
      'Saint Denis dojo',
      'Judo Kodokan Amberieux'
   ];
}
 
$query_club = new QueryClubStub();
 
?>
<!DOCTYPE html>
<html lang=fr>
<head>
   <meta charset=utf-8>
   <title>Select multiple</title>
</head>
<body>
 
<form method="POST">
   <ul>
      <?php while($liste_club = $query_club->fetch()) {
         echo "<li>
            <label>
               <input type='checkbox' name='search_results[]' value='{$liste_club['mail_club']}'>
               {$liste_club['nom_club']}
            </label>
         </li>";
      } ?>
   </ul>
   <input type="submit">
</form>
 
<?php if (isset($_POST['search_results'])) {
   echo '<pre>';
   print_r($_POST['search_results']);
   echo '</pre>';
} ?>
 
</body>
</html> | 
 
Avec ça, il est toujours possible de rajouter du CSS pour que ça ressemble à un select, et éventuellement cacher les checkboxes.
						
					
Partager