Nix
Messages postés831Date d'inscriptionsamedi 15 mai 1999StatutMembreDernière intervention18 juillet 2009 18 sept. 2008 à 15:37
Salut,
Non tu ne peux pas faire comme ça.
Il faut que tu modifies dans le code behind dans le Load de ta page omme ceci :
ParentSqlDataSource.SelectCommand = "SELECT * FROM Annuaire WHERE " & Request.QueryString("type") & " LIKE '%" & Request.QueryString("recherche") & "%' ORDER By Nom, Prénom"
Mais je te déconseille TRES fortement de récupérer un paramètre d'url et de l'envoyer en pature comme ceci dans ta ligne de commande. Tu ouvres une porte énorme au SQL Injection et met en péril ta base de données
Nix
Messages postés831Date d'inscriptionsamedi 15 mai 1999StatutMembreDernière intervention18 juillet 2009 18 sept. 2008 à 21:24
Et bien si c'est un SQL Server je te conseil de faire des procédures stockées et de les utiliser plutôt que d'envoyer la requête "manuellement". Le risque ici, c'est par exemple que quelqu'un mette un ' dans ton paramètre et ajoute un DROP DATABASE; derrière par exemple (c'est la version courte) mais on peut faire bien pire.
Pour contrer ça tu peux faire une "bidouille" vite fait qui consiste à doubler les ' tu fais un function qui fait un simple replace de "'" par "''" comme ça t'es sur que si un ' est enoyé dans tes params il sera doublé et ensuite tu construit come ceci :
ParentSqlDataSource.SelectCommand = "SELECT * FROM Annuaire WHERE " & TaFunction(Request.QueryString("type")) & " LIKE '%" & TaFunction(Request.QueryString("recherche")) & "%' ORDER By Nom, Prénom"
Ca sera déjà plus sécure même si c'est pas très élégant.