Insérer plusieurs lignes à partir d’une chaîne d’id avec ASP Classic
Contexte
Il est fréquent dans les applications web de recevoir une chaîne de données contenant plusieurs identifiants, séparés par des virgules. L’objectif ici est d’utiliser cette chaîne pour insérer plusieurs lignes dans une base de données SQL Server via ASP Classic.
Exemple de chaîne reçue
Imaginons que nous recevons la chaîne suivante :
"14,13,2,1,18"
Chaque nombre représente un element_id à associer à un reference_id dans une table appelée liens_elements_references.
Code ASP Classic
Voici le code complet pour parser la chaîne, nettoyer les espaces, et effectuer les insertions en base :
<%
Dim chaineIds, ids, i, sqlInsert
Dim reference_id
reference_id = rs("reference_id") ' ID de la référence reçu depuis un recordset
chaineIds = "14, 13, 2, 1, 18" ' Chaîne à traiter
' Nettoyage et découpage
chaineIds = Replace(chaineIds, " ", "") ' Supprime les espaces
ids = Split(chaineIds, ",")
For i = 0 To UBound(ids)
If IsNumeric(ids(i)) Then
' Construction de la requête INSERT
sqlInsert = "INSERT INTO liens_elements_references (element_id, reference_id) VALUES ("&ids(i)&", "&reference_id&")"
conn.Execute sqlInsert
End If
Next
%>
Explications
- Replace() : supprime les espaces pour éviter les erreurs
- Split() : découpe la chaîne en tableau
- IsNumeric() : filtre les valeurs non numériques
- conn.Execute : exécute l’instruction SQL côté serveur
Option : éviter les doublons
Si vous souhaitez éviter l’insertion de doublons (cas où une ligne avec ce element_id et ce reference_id existe déjà), vous pouvez ajouter une vérification préalable :
sqlCheck = "SELECT COUNT(*) FROM liens_elements_references WHERE element_id=" & ids(i) & " AND reference_id=" & reference_id
Set rsCheck = conn.Execute(sqlCheck)
If rsCheck(0) = 0 Then
conn.Execute sqlInsert
End If
Conclusion
Ce type de script est très utile pour gérer des insertions multiples basées sur une chaîne d’IDs reçue depuis un formulaire ou une requête. Il garantit une gestion simple, rapide et sécurisée dans un environnement ASP Classic.
