Précédent   Forum des professionnels en informatique > Webmasters - Développement Web > Langages serveur > ASP
ASP Forum sur la programmation ASP. Avant de poster : Cours ASP, FAQ ASP
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 29/04/2011, 12h04   #1
Membre expérimenté
 
Avatar de tumoo
 
Homme
Développeur informatique
Inscription : janvier 2011
Messages : 309
Détails du profil
Informations personnelles :
Sexe : Homme
Âge : 22
Localisation : France, Charente Maritime (Poitou Charente)

Informations professionnelles :
Activité : Développeur informatique
Secteur : Industrie

Informations forums :
Inscription : janvier 2011
Messages : 309
Points : 550
Points : 550
Par défaut Requetes à nombre de paramètres inconnus

Bonjour à tous

J'ai un souci que je n'arrive pas à traiter.

J'ai créé un filtre sur un formulaire pour sélectionner certaines lignes d'un tableau. Par exemple, j'ai une liste de commerciaux, je peux en sélectionner plusieurs, quand j'envoie le formulaire, je voudrais que mon tableau m'affiche les clients gérés par les commerciaux sélectionnés.

Lors de l'envoi du formulaire, l'URL a cette forme : monfichier.asp?commercial=commercial1&commercial=commercial2&...

mais quand il y a plusieurs paramètres (comme commercial ici), je ne sais pas comment les récupérer pour ensuite faire ma requête sur ma base de données du type
Code :
1
2
3
4
select nom
from client
where commercial like '%commercial1%' 
or  commercial like '%commercial2%'
Je sais pas si vous comprennez mon problème, je reste bien sûr à disposition si vous avez des questions

Dans l'espoir que vous puissiez m'aider
tumoo est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 29/04/2011, 12h16   #2
Membre confirmé
 
Homme Olivier
Webmaster Pays Basque
Inscription : avril 2004
Messages : 151
Détails du profil
Informations personnelles :
Nom : Homme Olivier
Âge : 40
Localisation : France

Informations professionnelles :
Activité : Webmaster Pays Basque
Secteur : High Tech - Éditeur de logiciels

Informations forums :
Inscription : avril 2004
Messages : 151
Points : 200
Points : 200
Envoyer un message via Skype™ à eclisse
Tu passes des noms en toutes lettres ? ça serait plus simple avec les indetifiants des commerciaux (si tu les gères...)
a moins que tu ne paramètres l'envoi en manuel, le post de commercial devrait être plutôt automatiquement en tableau, c'est à dire que sur ta page de traitement asp, tu vas avoir soit:
commercial = 1 (cas où 1 seul est selectionné)
commercial = 1, 2 (cas où plusieurs sont sélectionnés)

Du coup, tu peux faire une recherche directement comme suit :
Code :
1
2
3
select nom
from client
where (commercial in ('"& commercial &"'))"
eclisse est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 29/04/2011, 12h31   #3
Membre expérimenté
 
Avatar de tumoo
 
Homme
Développeur informatique
Inscription : janvier 2011
Messages : 309
Détails du profil
Informations personnelles :
Sexe : Homme
Âge : 22
Localisation : France, Charente Maritime (Poitou Charente)

Informations professionnelles :
Activité : Développeur informatique
Secteur : Industrie

Informations forums :
Inscription : janvier 2011
Messages : 309
Points : 550
Points : 550
Merci de ta réponse si rapide

je vais creuser dans cette direction,


mais si je passe les id des commerciaux, l'URL sera toujours la même non ?
tumoo est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 29/04/2011, 12h54   #4
Membre confirmé
 
Homme Olivier
Webmaster Pays Basque
Inscription : avril 2004
Messages : 151
Détails du profil
Informations personnelles :
Nom : Homme Olivier
Âge : 40
Localisation : France

Informations professionnelles :
Activité : Webmaster Pays Basque
Secteur : High Tech - Éditeur de logiciels

Informations forums :
Inscription : avril 2004
Messages : 151
Points : 200
Points : 200
Envoyer un message via Skype™ à eclisse
j'imagine que ta page de sélection est composée de checkbox avec en valeur les id de chaque commerciaux. Si tu coche la case avec id 1, du coup ton url ne change pas, c'est le request.form("commercial") qui sera égal à 1 (ou à 1, 2, 3 si tu aen as checké plusieurs).

Ton url dans ton form sera egale "[nom de ta page cible].asp"
Est ce que ça répond à ta question ?
eclisse est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 29/04/2011, 13h44   #5
Membre expérimenté
 
Avatar de tumoo
 
Homme
Développeur informatique
Inscription : janvier 2011
Messages : 309
Détails du profil
Informations personnelles :
Sexe : Homme
Âge : 22
Localisation : France, Charente Maritime (Poitou Charente)

Informations professionnelles :
Activité : Développeur informatique
Secteur : Industrie

Informations forums :
Inscription : janvier 2011
Messages : 309
Points : 550
Points : 550
Non, en fait c'est un input de type select. Après on peut choisir 1 ou plusieurs commerciaux. Le choix se fait sur un champ qui s'appelle UserId, soit 2 lettres qui forment les initiales des commerciaux.
Le formulaire pointe vers la même page et les valeurs de l'URL que je récupère servent dans le where de ma requête SQL pour peupler mon tableau de clients
tumoo est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 29/04/2011, 13h57   #6
Membre confirmé
 
Homme Olivier
Webmaster Pays Basque
Inscription : avril 2004
Messages : 151
Détails du profil
Informations personnelles :
Nom : Homme Olivier
Âge : 40
Localisation : France

Informations professionnelles :
Activité : Webmaster Pays Basque
Secteur : High Tech - Éditeur de logiciels

Informations forums :
Inscription : avril 2004
Messages : 151
Points : 200
Points : 200
Envoyer un message via Skype™ à eclisse
Le comportement est le même que se soit pour un select multiple ou des checkbox.
Par contre, tu n'as pas intéret à avoir 2 commerciaux avec les même premières lettres... d'où l'intérêt de prendre plutôt leur id numérique...

Quand tu parles du champ UserId, c'est le nom de ton objet select ou le nom de ton champ dans la base ?
eclisse est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 29/04/2011, 14h21   #7
Membre expérimenté
 
Avatar de tumoo
 
Homme
Développeur informatique
Inscription : janvier 2011
Messages : 309
Détails du profil
Informations personnelles :
Sexe : Homme
Âge : 22
Localisation : France, Charente Maritime (Poitou Charente)

Informations professionnelles :
Activité : Développeur informatique
Secteur : Industrie

Informations forums :
Inscription : janvier 2011
Messages : 309
Points : 550
Points : 550
c'est le nom de l'attribut dans la base
et j'ai un recordset qui parcourt cette table et un response.write rs("UserId") qui va servir de texte dans les balises option de mon select

Je ne pense pas que ta solutions avec l'ID fonctionnera dans mon cas, sachant que j'utilise une base de données créées à la base par un ERP, et moi je développe une application complémentaire utilisant des infos de cette base. Dans ma table, j'ai
- un champs ID de la forme CO0001,
- un champs UserID de la forme AB,
- un champs UniqueID avec plus de 30 caractères à chaque fois
après j'ai le nom et prénom etc

Sinon, les premières lettres de chaque UserId sont toutes différentes
tumoo est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 29/04/2011, 17h28   #8
Modérateur
 
Avatar de kaiser59
 
Inscription : novembre 2005
Messages : 1 246
Détails du profil
Informations personnelles :
Âge : 32

Informations forums :
Inscription : novembre 2005
Messages : 1 246
Points : 1 203
Points : 1 203
Envoyer un message via MSN à kaiser59
Salut,

Pourquoi trois champs juste pour identifier un commercial ?

A la limite deux pourquoi pas, en cas d'homonymie. Un simple id en auto-increment clé primaire, suffit. Pas de risque de doublon et du coup chaque commerciaux se retrouve avec son id.

Dans ta liste de déroulante tu mets la valeur de l'id en value et c'est tout.

Ce qui te donnerait dans ton formulaire :
Code asp :
1
2
3
4
5
6
7
8
 'requête pour récupérer la liste des commerciaux
 
 response.write "<select name=""commercial"">"&vbcrlf
  do while not rs.eof
   response.write "<option value="""& rs(0) &""">"& rs(3) &"</option>"&vbcrlf
  rs.movenext
  loop
  response.write "</select>"&vbcrlf _

puis :
Code asp :
1
2
3
4
5
6
7
8
9
10
11
12
Select commerciaux
From tbl
Where id in ("& request.form("commercial") &")""
 
if not rs.eof
  do while not rs.eof
    response.write "Commercial : "& rs(0) &"<br />"&vbcrlf
  rs.movenext
  loop
else 
   response.write "pas de commercial"
end if
__________________
Ne dites pas Java pour dire Javascript ! Ces deux codes n'ont rien à voir ! // Essayez d'expliquer, de la façon la plus claire possible votre problème. // Parfois une image vaut mieux qu'un long discours

FAQ ASP
kaiser59 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 29/04/2011, 19h25   #9
Membre expérimenté
 
Avatar de tumoo
 
Homme
Développeur informatique
Inscription : janvier 2011
Messages : 309
Détails du profil
Informations personnelles :
Sexe : Homme
Âge : 22
Localisation : France, Charente Maritime (Poitou Charente)

Informations professionnelles :
Activité : Développeur informatique
Secteur : Industrie

Informations forums :
Inscription : janvier 2011
Messages : 309
Points : 550
Points : 550
Citation:
Envoyé par kaiser59 Voir le message
Pourquoi trois champs juste pour identifier un commercial ?
J'utilise une base de données générée par un ERP comme je l'ai dit, donc pas le choix

merci pour ta solution, je verrai lundi avec ça, j'étais parti dans la bonne direction avec les values des balises option

J'ai une idée pour la suite, ça devrait être bon

merci vous deux
tumoo est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 29/04/2011, 23h56   #10
Modérateur
 
Avatar de kaiser59
 
Inscription : novembre 2005
Messages : 1 246
Détails du profil
Informations personnelles :
Âge : 32

Informations forums :
Inscription : novembre 2005
Messages : 1 246
Points : 1 203
Points : 1 203
Envoyer un message via MSN à kaiser59
Citation:
Envoyé par thumeau Voir le message
J'utilise une base de données générée par un ERP comme je l'ai dit, donc pas le choix

merci pour ta solution, je verrai lundi avec ça, j'étais parti dans la bonne direction avec les values des balises option

J'ai une idée pour la suite, ça devrait être bon

merci vous deux
Faut refaire le code alors (je plaisante bien sûr ^^)

Bon courage
__________________
Ne dites pas Java pour dire Javascript ! Ces deux codes n'ont rien à voir ! // Essayez d'expliquer, de la façon la plus claire possible votre problème. // Parfois une image vaut mieux qu'un long discours

FAQ ASP
kaiser59 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 02/05/2011, 11h20   #11
Membre expérimenté
 
Avatar de tumoo
 
Homme
Développeur informatique
Inscription : janvier 2011
Messages : 309
Détails du profil
Informations personnelles :
Sexe : Homme
Âge : 22
Localisation : France, Charente Maritime (Poitou Charente)

Informations professionnelles :
Activité : Développeur informatique
Secteur : Industrie

Informations forums :
Inscription : janvier 2011
Messages : 309
Points : 550
Points : 550
Bonjour à tous

Bon j'ai testé plusieurs choses, mais je n'arrive toujours pas à ce que je veux.

Je comprends bien vos solutions, mais c'est pas ce que je veux.

En fait, les valeurs que je récupère dans mon URL doivent servir de valeur de paramètre d'une requête SQL sur ma base.
En fait j'ajoute ces valeurs à une chaine de caractère.
Code :
strSQL=strSQL&"and customer.colleagueID=colleague.Id and colleague.userId in ('"& ... & "')"
Ma requête est bonne, si je la teste avec des paramètres fixes, j'ai bien le résultat attendu, mais pour utiliser les valeurs contenues dans l'URL je ne vois pas comment faire et par quoi remplacer les ...J'ai essayé de faire comme ceci, mais j'ai une erreur.
Citation:
Index hors limites
Un index de tableau est en dehors des limites.
Et si je fais
Code :
strSQL=strSQL&"and customer.colleagueID=colleague.Id and colleague.userId in ('"& request.form("commercial") & "')"
j'ai un résultat comme ça
Code :
and customer.colleagueID=colleague.Id and colleague.userId in ('AB,ZZ')
et non
Code :
and customer.colleagueID=colleague.Id and colleague.userId in ('AB','ZZ')
edit :
bon en fait la méthode de la FAQ fonctionne bien (j'ai commencé ma boucle à 0 et non à 1 pour parcourir mes commercial)

du coup j'arrive à avoir ma chaine 'AA','ZZ','EE' comme je le souhaitais

merci à vous pour votre précieuse aide
tumoo est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 08h50.


 
 
 
 
Partenaires

Hébergement Web