IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage SQL Discussion :

[Amateur] faire une recherche sur les deux premiers caractères.


Sujet :

Langage SQL

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    8
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 8
    Par défaut [Amateur] faire une recherche sur les deux premiers caractères.
    Messieurs bonjour,

    J'ai un problème sur le site du boulot que j'aimerais résoudre car les visiteurs sont perturbé.

    je m'explique, sur notre site www.novicase.com nous avons une carte de france. Sur cette carte lorsque vous cliqué sur un département la page doit afficher les distributeurs se situant dans se département (logique)

    seulement il y a un petit souci qui est le suivant, si vous cliquez sur l'aisne (02) le résultat va afficher tous les revendeurs des département ayant un code postale contenant un 2. (ceux du 21 par exemple).

    Si vous voulez tester pour vous en rendre comptes:

    http://www.novicase.com/distri.php

    Allez sur la page et cliquer sur le 02 (Aisne) il va vous afficher les distributeurs du 25 et du 21 et pas du 02 (normal je n'en ai pas dans le 02)

    A mon avis l'erreur viens de la requete SQL. Je vous mets donc une copie de la requete SQL:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    SELECT * 
    FROM magasin LEFT OUTER JOIN enseigne ON num_enseigne=id_enseigne 
    WHERE cp_magasin like '$dept%' AND afficher_carte=1
    A mon avis l'option LIKE n'est pas la bonne mais je ne vois pas laquelle utiliser.

    N'étant pas un pro du SQL j'ai fait quelque recherche mais je ne trouve pas se qui pourrais aller ou alors je ne vois pas comment l'appliquer à ma requete.

    J'ai pensé à l'option TRIM TRAILING et ensuite à la place du LIKE mettre un = mais je ne sais pas me servir de cette fonction et à chaques fois ma requete ne marche pas.

    je vous remercie par avance.
    Maxime

  2. #2
    Membre Expert

    Profil pro
    Inscrit en
    Avril 2005
    Messages
    1 673
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2005
    Messages : 1 673
    Par défaut
    Pourquoi ne pas faire directement :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    ...
    WHERE cp_magasin = '$dept' 
    ...
    Donnez-nous un extrait du contenu de vos tables magasin et enseigne et un exemple du résultat souhaité que vous n'arrivez pas à obtenir.
    Enfin, indiquez votre SGBD et sa version.

  3. #3
    Membre chevronné Avatar de chrifo
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    444
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2006
    Messages : 444
    Par défaut
    L'erreur ne vient-elle pas du fait que [$dept] est un entier (2) et non une chaine de caractères ('02') ?

  4. #4
    Modérateur
    Avatar de al1_24
    Homme Profil pro
    Retraité
    Inscrit en
    Mai 2002
    Messages
    9 136
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 64
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Retraité
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2002
    Messages : 9 136
    Par défaut
    Vérifie le contenu de ta variable... Elle vaut certainement '2' et non '02'.
    Le SQL n'est pas en cause.
    Modérateur Langage SQL
    Règles du forum Langage SQL à lire par tous, N'hésitez pas à consulter les cours SQL
    N'oubliez pas le bouton et pensez aux balises
    [code]
    Si une réponse vous a aidé à résoudre votre problème, n'oubliez pas de voter pour elle en cliquant sur
    Aide-toi et le forum t'aidera : Un problème exposé sans mentionner les tentatives de résolution infructueuses peut laisser supposer que le posteur attend qu'on fasse son travail à sa place... et ne donne pas envie d'y répondre.

  5. #5
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    8
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 8
    Par défaut
    Merci de vos réponse,

    je vais essayer de trouver des éléments de réponses à vos questions car ce n'est pas moi qui ai fait le site donc il faut que je fasse mes recherche pour bien comprendre le système.

    Pour la version voila ce que j'ai:

    Détails serveur:
    DNS primaire: ns1.lwsweb8.com
    Asp Version: 3
    Asp.net version: Framework 1.1& 2
    Php version: 4.4.X & 5.1
    Mysql version: 4.X.X
    Myadmin vers: 2.7.0
    Version MDAC: 2.8
    Myodbc: oui - Vers 3.51
    voici un print ecran de la table :



    vous pouvez cliquer dessu pour l'afficher en grand.

    Merci de votre aide

  6. #6
    Membre émérite Avatar de Mathusalem
    Profil pro
    IT moa
    Inscrit en
    Décembre 2003
    Messages
    1 008
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : IT moa

    Informations forums :
    Inscription : Décembre 2003
    Messages : 1 008
    Par défaut
    Il faudrait connaitre le type de la colonne cp_magasin (entier ou chaine de caractère ?)

  7. #7
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    8
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 8
    Par défaut
    Le type de la colonne CP_magasin est :

    varchar(5)

    J'espere que c'est la bonne réponse que j'ai donné.

    En fait je ne suis pas un spécialiste de l'informatique mais on m'a confié le poste de responsable commercial et pour moi avoir un site un internet est un bon outil si il marche correctement ;

    C'est pour cela que j'ai décidé de remettre le site en "etat" afin que les clients potentiel ne soit pas perdu et surtout cela ne donne pas une image sérieuse de la société.

    je vous remercie de votre écoute et de votre aide.

    Maxime

  8. #8
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    8
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 8
    Par défaut
    Bonsoir à tous,

    alors je pense avoir une idée ou une solution mais il faudrais que vous me dites si c'est possible ou pas.

    Je vous redonne la requete SQL

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    $query = 
    SELECT * 
    FROM magasin LEFT OUTER JOIN enseigne ON num_enseigne=id_enseigne 
    WHERE cp_magasin like '$dept%' 
    AND afficher_carte=1;
    La variable $dept correspond au numéro de département sur lequel l'utilisateur à cliquer.

    Par ex 02

    Ce qui donne en clair sans PHP:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    	$query = "SELECT * 
    FROM magasin LEFT OUTER JOIN enseigne ON num_enseigne=id_enseigne 
    WHERE cp_magasin like '02%' 
    AND afficher_carte=1";
    Maintenant mon problème est que la requete cherche un resultat se rapprochant du 02 dans la chaine du champs qui correspond à cp_magasin.

    Mon idée serait de remplacer le Like par un =.

    Seulement on peut comparer que deux chaine de caractère identique si mes souvenirs sont bon. C'est à dire une chaine de 2 caractère mon 02 n'est pas comparable à une chaine de 5 caractères comme l'est ma chaine de code postale.

    Ma question est donc comment dans ma requete lui demander de comparer mon 02 uniquement avec les deux premiers caractères de la chaine cp_magasin?

    La partie à modifier doit donc etre la partie en bleu si dessou.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    	$query = 
    SELECT * 
    FROM magasin LEFT OUTER JOIN enseigne ON num_enseigne=id_enseigne 
    WHERE  cp_magasinlike '$dept%' 
    AND afficher_carte=1;
    J'espere que je me suis fait comprendre et que certain d'entre vous pourrons m'aider.

    Sincères salutations

Discussions similaires

  1. Réponses: 0
    Dernier message: 03/09/2010, 10h48
  2. Réponses: 4
    Dernier message: 03/07/2009, 09h45
  3. [MySQL] Faire une recherche sur tous les champ commencant par ..
    Par bullrot dans le forum PHP & Base de données
    Réponses: 4
    Dernier message: 31/10/2008, 11h45
  4. Réponses: 2
    Dernier message: 14/06/2006, 09h30
  5. Probleme lors d'une recherche sur les forums
    Par JUSTIN Loïc dans le forum Mode d'emploi & aide aux nouveaux
    Réponses: 8
    Dernier message: 27/07/2005, 12h22

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo