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

PHP & Base de données Discussion :

Trouver si une lettre existe dans le champ d'une table dans un SELECT [MySQL]


Sujet :

PHP & Base de données

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Inscrit en
    Octobre 2008
    Messages
    329
    Détails du profil
    Informations forums :
    Inscription : Octobre 2008
    Messages : 329
    Par défaut Trouver si une lettre existe dans le champ d'une table dans un SELECT
    Bonjour,

    Dans une table de ma base de données j'ai un champ 'id_region' codé de la façon suivante :

    a = Alsace
    b = Aquitaine
    c = Auvergne
    // Ici la suite des régions...
    u = Provence-Alpes-Côte d'Azur
    v = Rhône-Alpes

    Par exemple si un membre se déplace en Aquitaine et en Rhône-Alpes, le champ 'id_region' sera égal à 'bv', et si un autre se déplace en Alsace, Aquitaine et Provence-Alpes-Côte d'Azur, il sera codé 'abu'.
    J'ai codé de cette façon afin d'économiser 21 champs par enregistrement dans ma base de données : au lieu d'avoir 22 champs (1 par région), je n'en ai qu'un seul dans lequel sont stockées toutes les régions ou le membre se déplace.

    Sur mon site je suis en train de développer la fonction de recherche ou l'utilisateur peut rechercher les membres qui se déplacent dans sa région. Il peut donc sélectionner à l'aide d'un menu déroulant les membres qui se déplacent par exemple dans le Limousin (lettre 'n'). Il ne peut sélectionner qu'une seule région par recherche et la variable s'appelle $id_region.

    Je dois maintenant afficher le résultat, mais je ne sais pas comment faire le SELECT...

    Il faudrait donc vérifier que la lettre 'n' est présente ou non dans le champ 'id_region' de chaque membre, qui par exemple peut être égal à 'abdgntuv'.

    Il faudrait faire un SELECT du genre... :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $sql = "SELECT membre FROM table WHERE id_region = strpos(region, $id_region)";
    Mais je ne crois pas qu'on puisse mettre du PHP dans une commande SQL...

    Bref vous l'avez compris je ne sais comment m'y prendre...!

    Quelqu'un a t'il une idée ?

    Merci de votre aide

  2. #2
    Inactif   Avatar de Deallyra
    Profil pro
    Étudiant
    Inscrit en
    Février 2007
    Messages
    1 997
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2007
    Messages : 1 997
    Par défaut
    Hum...

    Petite proposition...

    Un intervenant peut aller dans 0,n Région.
    Une région peut être visitée par 0,n Intervenant.

    Ceci impliquerait la création d'une troisième table.

    Intervenant ( id, nom, prenom, adresse....)
    Region ( id, libelle .... )
    Date ( date )
    SeDeplacer (idIntervenant, idLibelle, date)

    Ce serait plus facile à gérer non?
    *Si la réponse vous convient, n'oubliez pas le tag
    *Exprimez vous dans un français correct; on prend le temps de vous lire, prenez le temps de bien écrire.
    *Et comment on interprète votre code? N'oubliez pas la balise!

    *Pour une mise en page simple avec des divs.
    *Pour faire des formulaires xHTML CSS.

  3. #3
    Membre éclairé
    Inscrit en
    Octobre 2008
    Messages
    329
    Détails du profil
    Informations forums :
    Inscription : Octobre 2008
    Messages : 329
    Par défaut Hum...
    Bien possible...! Je suis autodidacte et débutant je dois le rappeler...!

    Mais je voulais éviter à avoir à remplir 22 champs alors qu'un seul est bien mieux ! Au départ j'ai essayé les 22 (id_region_1, id_region_2, etc..), mais les temps d'écriture en local devenaient excessivement long, car le formulaire d'inscription comporte déjà une trentaine de champs, alors + les 22 régions ça devenait énorme...!

    Par la suite, pour l'affichage des fiches des membres, j'ai du créer des petites fonctions pour décoder les 'adfi' et autres 'acefh' en noms de région, mais je m'en suis sorti...!

    Mon site est maintenant quasiment terminé, et je tombe sur cette os à la fontion de recherche...! La recherche qui est multi-critères j'avais oublié de le préciser !

    La solution serait peut-être de passer par un traitement intermédiaire, ou je placerais dans un tableau tous les membres qui correspondent à tous les premiers critères de recherche , et ou je ferais enfin un tri de ceux qui interviennent dans la région 'n' avec un 'strpos' sur le champ 'id_region'.

    Qu'en pensez-vous ?

  4. #4
    Membre éclairé
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    264
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 264
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    $sql = "SELECT membre FROM table WHERE LIKE 'region')";

  5. #5
    Membre éclairé
    Inscrit en
    Octobre 2008
    Messages
    329
    Détails du profil
    Informations forums :
    Inscription : Octobre 2008
    Messages : 329
    Par défaut Ah....?
    Si cette ligne suffisait, ce serait le paradis...! Je vais essayer !

  6. #6
    Inactif   Avatar de Deallyra
    Profil pro
    Étudiant
    Inscrit en
    Février 2007
    Messages
    1 997
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2007
    Messages : 1 997
    Par défaut
    Heu...

    Désolée mais si tu as mal fait ta BdD au début, normal que tu aies des problèmes...

    Maintenant tu peux bidouiller ou faire un truc qui tient debout...

    Avec "ma" méthode, tu auras un peu de temps à passer en créant la BdD mais ensuite ce sera très simple... Je ne vois pas de problème.

    Dans ta méthode, c'est une chose qui aurait pu être faite mais "abu" ne veux rien dire.
    Ensuite, tu dois découper cette chaine en php pour récupérer chaque caractère et ensuite faire une recherche dans ta table région pour connaître l'équivalence...

    Tu parles coût en terme de temps mais je ne pense pas que ce que tu fais est plus rapide.


    Si tu as fait ton site en mettant toutes tes fonctions et requêtes dans un seul fichier, ce ne doit pas être trop dur de faire les modifications adéquates

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $sql = "SELECT membre FROM table WHERE LIKE 'region')";
    Ne peut pas marcher.

    Where quoi LIKE 'region'

    Il manque un terme.
    *Si la réponse vous convient, n'oubliez pas le tag
    *Exprimez vous dans un français correct; on prend le temps de vous lire, prenez le temps de bien écrire.
    *Et comment on interprète votre code? N'oubliez pas la balise!

    *Pour une mise en page simple avec des divs.
    *Pour faire des formulaires xHTML CSS.

  7. #7
    Membre éclairé
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    264
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 264
    Par défaut
    Il existe http://www.maxmind.com/ pour faire de la géolocalisation.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Un test si une valeur existe dans un champ d'une table
    Par pasb71 dans le forum VBA Access
    Réponses: 3
    Dernier message: 21/11/2013, 16h24
  2. Réponses: 3
    Dernier message: 16/04/2009, 17h10
  3. ADO et les guillemet dans les champs d'une base Texte
    Par jnc dans le forum Bases de données
    Réponses: 3
    Dernier message: 27/10/2005, 08h41
  4. Lire un code à barre dans un champ d'une table
    Par tleboukaka dans le forum Débuter
    Réponses: 1
    Dernier message: 05/09/2005, 15h15

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