Ajout multiple avec une balise textarea

2004/09/06 19:41

On peut à l'aide d'un textarea ajouter des éléments dans une base de données rapidement et efficacement. Parmi les avantages on peu noté:

  • Rapidité d'ajouter en lot des items
  • Ne demande pas de javascript (d'ajout de champs input dynamiquement)
  • On peut copier-coller une liste (ou effectuer un drag'n'drop)

Voici comment procéder:

  1. Créer un formulaire XHTML et ajouter une balise textarea avec plusieurs lignes.
    <form method="post" action="fichier.php">
    <fieldset>
     <textarea cols="40" rows="5" name="txt"></textarea>
     <input type="submit" value="ajouter" />
    </fieldset>
    </form>
    
  2. Ensuite, ajouter le code PHP qui traitera le formulaire, c'est à dire, mettre chaque ligne dans un tableau, et boucler. Note: j'assume qu'on est déjà connecté à la base de données, qu'il n'y a pas de problème avec les caractères slashs et que nous travaillons avec Linux pour simplifier le code.
    <?php
    // ...
    $tabTxt = explode("\n", $_POST['txt']);
    foreach ( $tabTxt as $txt ) {
    	if ( $txt != '' ) {
    		$strInsert = 'INSERT INTO matable (unChampTexte) VALUES ( \''.$txt.'\')';
    		if ( ! mysql_query($strInsert, $database_ressource) ) {
    			echo 'erreur mysql...';
    		}
    	}
    }
    // ...  
    ?>
    
  3. Bien attendu, on peut être plus restrictif dans les comparaisons, faire un explode sur les caractères \r\n, arrêter la boucle lorsqu'il y a une erreur, etc..