Requete sql avec plusieurs champs text [Résolu]

sid002 30 Messages postés dimanche 16 avril 2006Date d'inscription 4 janvier 2011 Dernière intervention - 24 nov. 2009 à 16:23 - Dernière réponse : sid002 30 Messages postés dimanche 16 avril 2006Date d'inscription 4 janvier 2011 Dernière intervention
- 25 nov. 2009 à 09:57
Bonjour,

J'ai crée un formulaire avec plusieurs champs de recherche pour constituer une requete sql.
Si je fais une requete général qui prend d'office compte de tous les champs de ma recherche (même ceux qui sont à vide), mon résultat ne sera pas correct.
Mon problème : il y a 5 champs, il y a donc 5*5=25 possibilités de requete sql pour trouver le résultat.(J'ai pensé à des switch , des if ... mais ça va etre le bordel !)

Pouvez-vous m'aidez ? Merci

sidus
Afficher la suite 

Votre réponse

5 réponses

Meilleure réponse
cs_DARKSIDIOUS 15838 Messages postés jeudi 8 août 2002Date d'inscription 4 mars 2013 Dernière intervention - 24 nov. 2009 à 18:00
3
Merci
Salut,

C'est la fonction append et non add en effet.
______________________________________
DarK Sidious

Merci cs_DARKSIDIOUS 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 101 internautes ce mois-ci

Commenter la réponse de cs_DARKSIDIOUS
cs_DARKSIDIOUS 15838 Messages postés jeudi 8 août 2002Date d'inscription 4 mars 2013 Dernière intervention - 24 nov. 2009 à 16:36
0
Merci
Salut,

Heureusement, il y a bien plus simple ! Il suffit de créer ta requête selon les champs remplis au fur et à mesure, par exemple :
protected String creerRequete(boolean first, String nomChamp, String valeur, boolean texte) {
  StringBuffer resultat = new StringBuffer();
  if (first) {
    resultat.add(" WHERE ");
  } else {
    resultat.add(" AND ");
  }
  resultat.add(nomChamp).add(" = ");
  if (texte) {
    resultat.add("'");
  }
  resultat.add(texte);
  if (texte) {
    resultat.add("'");
  }
}

StringBuffer requete = new StringBuffer("SELECT champ1, champ2, champ3 FROM table");
boolean first = true;

if (!("").equals(txtNom.getText())) {
  requete.add(creerRequete(first, "nom", txtNom.getText(), true));
  first=false;
}
if (!("").equals(txtPrenom.getText())) {
  requete.add(creerRequete(first, "prenom", txtPrenom.getText(), true));
  first=false;
}
if (!("").equals(txtAge.getText())) {
  requete.add(creerRequete(first, "age", txtAge.getText(), false));
  first=false;
}


A tester, j'ai fait cà de tête, mais ca doit ressembler à cà.
______________________________________
DarK Sidious
Commenter la réponse de cs_DARKSIDIOUS
sid002 30 Messages postés dimanche 16 avril 2006Date d'inscription 4 janvier 2011 Dernière intervention - 24 nov. 2009 à 16:47
0
Merci
Je t'avouerai que j'ai pas tout compris mais je vais analyser tout ça mais à première vue ça devrait résoudre mon soucis.

Un grand merci !

sidus
Commenter la réponse de sid002
sid002 30 Messages postés dimanche 16 avril 2006Date d'inscription 4 janvier 2011 Dernière intervention - 24 nov. 2009 à 17:27
0
Merci
Apperemment la methode add() n'existe pas sur un stringbuffer ...

sidus
Commenter la réponse de sid002
sid002 30 Messages postés dimanche 16 avril 2006Date d'inscription 4 janvier 2011 Dernière intervention - 25 nov. 2009 à 09:57
0
Merci
Ca marche nikel !
Merci pour la qualité et la rapidité de tes réponses.

sidus
Commenter la réponse de sid002

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.