Accueil > Forum > > > > Supprimer les points et traits d'union dans un request
Supprimer les points et traits d'union dans un request
mercredi 11 novembre 2009 à 10:27:51 |
Supprimer les points et traits d'union dans un request

sebalex
|
Bonjour à tous,
Voilà, dans un champ texte, j'entre "3180270" (qui sera le $_GET[champ_police]) et je demande dans mon request une recherche dans la base où l'entrée correspond à "3.180.270". En fait, j'aimerais que les points et autres symboles soient supprimés au moment de la recherche.
Voici mon code "request" :
mysql_select_db($database_connexion, $connexion);
$query_result = "SELECT * FROM CONTRATS WHERE ereg_replace("'.'","",NUM_POLICE LIKE ) '%$_GET[champ_police]%' ORDER BY NUM_POLICE, ID_COMP ASC";
$result = mysql_query($query_result, $connexion) or die(mysql_error());
$row_result = mysql_fetch_assoc($result);
C'est le code en rouge que j'ai ajouté au bol car je ne sais pas du tout comment faire.
Merci de votre aide.
Salutations à tous
David
|
|
mercredi 11 novembre 2009 à 11:15:45 |
Re : Supprimer les points et traits d'union dans un request

kohntark
|
Salut,
Oula, ça ne va pas bien marcher ça.
J'ai du mal à comprendre ...
Tu souhaites entrer '3180270' et récupérer les résultats qui correspondent à '3.180.270' dans la DB, c'est bien ça ?
Il faudrait préciser un peu :
quels caractères peuvent être présent ? Le point, ... ??
quels emplacements peuvent ils prendre ? Ils marquent les milliers ? ils peuvent se situer ailleurs ?
Ne vaut il pas mieux stocker '3180270' dans la DB et éventuellement le mettre en forme au moment de l'affichage ?
Cordialement,
Kohntark -
|
|
mercredi 11 novembre 2009 à 11:23:49 |
Re : Supprimer les points et traits d'union dans un request

sebalex
|
Merci de ta réponse.
Non, je ne peux pas mettre le numéro de contrat sans points ni traits d'union car lorsque j'adresse un courrier à mon client, il doit pouvoir voir le numéro dans le bon format c'est à dire 3.111.111 ou G-123-456.
En fait, ce que je souhaiterais c'est faire l'inverse que lorsqu'on enregistre une nouvelle donnée dans un bdd. Par exemple, quand j'écris 3.111.111 dans le champ text, l'enregistrement à la bdd avec str_replace ou ereg_replace est 3111111 (en éliminant les points et autres caractères). Donc est-il possible de supprimer les points et autres caractères dans le result de la bdd.
Exemple :
dans la bdd, j'ai un contrat portant le numéro 3.111.111. Dans mon champ texte, j'entre 3111111. Avec un code (si possible), on supprime les points et autres caractères dans le request (... WHERE NUM_POLICE = ...)
Suis-je assez clair ???
David
|
|
mercredi 11 novembre 2009 à 11:25:23 |
Re : Supprimer les points et traits d'union dans un request

sebalex
|
Je précise qu'il s'agit d'une recherche dans une bdd à partir d'un champ texte.
Est-ce besoin de le mentionner.
David
|
|
mercredi 11 novembre 2009 à 12:24:27 |
Re : Supprimer les points et traits d'union dans un request

kohntark
|
Moyennement
Il faut définir au mieux la ou les structures possibles de la chaîne étant donné qu'une regex semble nécessaire.
Ainsi :
est ce toujours ce format ?
[une lettre ou 1 chiffre][1 point ou un -][3 chiffres][1 point ou un -][3 chiffres]
ou peux tu avoir des trucs du genre 'GHJ-34-232.23', '342.566.322.323', 'TE-ED-ERZ-TRT' etc ...
En même temps une recherche à partir de 3111111 pourrait retourner '3.111.111' et '3-111-111', est ce possible ? est ce grave ?
Il peut être intéressant de créer une autre colonne qui ne contient que les chiffres / lettres (sans . et -) afin d'accélérer la chose. Ce n'est valable que si le nombre d'enregistrements et de requêtes de recherche est élevé.
Une solution serait :
Code : SELECT * FROM CONTRATS
WHERE NUM_POLICE REGEXP '(^[[:alnum:]]{1,3}[.|-][0-9]{1,3}[.|-][0-9]{1,3}$)'
ORDER BY NUM_POLICE, ID_COMP ASC";
Cela devrait fonctionner, à condition que le format soit conforme à celui que je citais.
Tu pourrais également faire cela en PHP en ajoutant des '_' tous les 3 caractères (en commençant par la fin de la chaîne)
Cordialement,
Kohntark -
|
|
mercredi 11 novembre 2009 à 15:58:04 |
Re : Supprimer les points et traits d'union dans un request

sebalex
|
Merci encore. Afin d'être bien sûr de ce que je fais, pourrais-tu (STP) me placer ton code REGEXP dans la ligne ci-dessous ?
$query_result = "SELECT * FROM CONTRATS WHERE NUM_POLICE LIKE '%$_GET[champ_police]%' ORDER BY NUM_POLICE, ID_COMP ASC";
Je penses que cela devrait fonctionner. Sinon, l'idée de rajouter un champ dans la bdd sans les points et autres caractères est une bonne idée. Le problème c'est que ma base de données compte à ce jour plus de 2'000 contrat. Je te laisse imaginer ce que cela représenterait d'ajouter ce champ un par un.
Bien à toi
David
|
|
jeudi 12 novembre 2009 à 06:39:33 |
Re : Supprimer les points et traits d'union dans un request

kohntark
|
 ralala, faut que j'arrête de dire n'importe quoi moi !!
Le plus simple est peut être d'opter pour ma seconde solution :
Code PHP : <?php
$search_num_police = strrev(preg_replace('`(\w{3})`', '${1}_', strrev($_GET['champ_police'])));
$query_result = "SELECT * FROM CONTRATS WHERE NUM_POLICE LIKE '$search_num_police' ORDER BY NUM_POLICE, ID_COMP ASC";
?>
Il y a sans doute moyen d'optimiser un peu, j'ai pondu ça à la va vite.
Je te laisse imaginer ce que cela représenterait d'ajouter ce champ un par un.
J'imagine très bien .... disons 1 seconde grand maximum avec une requête SQL
Cordialement,
Kohntark -
|
|
jeudi 12 novembre 2009 à 08:46:17 |
Re : Supprimer les points et traits d'union dans un request

sebalex
|
MERCI ENCORE ET ENCORE.
J'ai posé le code tel quel et ça marche pas !!!
Par contre, il est vrai (je n'y avais pas pensé), qu'avec une requête SQL, il serait plus facile de copier les données du champ NUM_POLICE dans un nouveau champ que je pourrais appeler NUM_POLICE_SANS et qui contiendrait les numéros de polices sans les points et autres caractères ("-", "'", ".", "/").
Je vais essayer de trouver la ligne de code SQL à moins que ta générosité (bien prouvée) ne t'incite à m'indiquer la voie.
Bien à toi
David
|
|
jeudi 12 novembre 2009 à 08:56:22 |
Re : Supprimer les points et traits d'union dans un request

kohntark
|
C'est une réponse bien peu précise ça
Tu as une erreur ? Pas de résultat ? Trop de résultats ? autre ?
Si tu pouvais poster ton code (le nécessaire) ça serait d'une grande utilité.
Commençons par là. Pour la requête SQL je pourrai te filer un coup de main ce soir si tu veux mais n'hésites pas à poster ce que tu auras trouvé de ton côté.
Pas besoin de se prendre trop la tête côté optimisation étant donné que la requête ne sera exécuter qu'une seule fois.
en gros :
- récupération ligne par ligne du résultat NUM_POLICE
- traitement de la chaîne avec des str_replace() pour virer les . et -
- INSERT du résultat dans le champ NUM_POLICE_SANS préalablement crée
Cordialement,
Kohntark -
|
|
jeudi 12 novembre 2009 à 09:02:15 |
Re : Supprimer les points et traits d'union dans un request

sebalex
|
Il n'y a pas d'erreur. En fait, j'ai rentré un numéro de contrat du style 3111111 pour trouver le contrat enregistré dans ma bdd portant le numéro 3.111.111 et il n'y a eut aucun résultat. Par contre, dans le code que tu m'as aimablement remis, je n'arrive pas à voir où est-ce qu'on remplace les points et/ou les "-". En fait, dans les numéros de polices que je rentre, il peut y avoir les caractères suivants : ".", "-", "/", "'".
C'est très sympa de ta part.
Autre question. Comment fais-tu pour reprendre partie du texte posté par un autre comme tu l'as fait dans ton dernier message. (reprendre l'expression pour y répondre précisément) ?
David
|
|
Cette discussion est classée dans : mysql, request, police, result, color
Répondre à ce message
Sujets en rapport avec ce message
probleme avec mysql [ par nico606 ]
Slt g de gros probleme avec mon forum d'abors y a ca $a="SELECT * FROM genletter_membres";$b=mysql_query($a);
Perdu avec mysql ... [ par guiguimac ]
bonsoir !voici le message d'erreur qui me gêne :Warning: 0 is not a MySQL result index in your script on line 131en fait je lance ma page php avec la
simple requete qui marche pas [ par monjal26 ]
boujour le mondej'ai le code suivant:$Requete= "SELECT Tache FROM EFFECTUE WHERE Personne=".$personne.";";$Result = mysql_query ($Requete,$id_connex)
count [ par westsider ]
comment en récupére la valeur d'un count dans mysql??$result = mysql_query("SELECT COUNT (id) AS truc FROM film");while($select = mysql_fetch_array($r
Warning: mysql_fetch_row(): supplied argument is not a valid MySQL result resource [ par alanbraxe31 ]
bonjour à tous!voici mon script:$query = "SELECT distinct nfa_a FROM archive WHERE nfa_a LIKE \"%$Mot%\" ";$result = mysql_query($query);$row = mysql_
Erreur mysql [ par john1983 ]
Bonjours, j'ai l'erreur suivante :Qu'est ce qui ne va pas?Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in /var
Erreur sur mysql_result() [ par cseagle ]
Bonsoir,J'ai cette erreur mysql et je ne sais pas comment la résoudre :Warning: mysql_result(): Unable to jump to row 4 on MySQL resultmon code trouvé
pb avec EasyPhP en local [ par lesgwenos ]
Salut a tousC'est mon premier message, j'ai pas l'habitude de demander de l'aide, mais je vais m'y mettre, et essayer d'aider en retour, parce que fin
boucle dans boucle [ par Kevergeek ]
voilà en fait je voudrais faire un systeme de dossier pour afficher des grades des joueurs sur un jeu que chui en train de mettre au point...pour ca j
afficher images blob dans table mysql [ par RealKEV1 ]
Bonjour,Seriez-vous m'aider pour afficher toutes les images de type Blob de ma table MySql???Voici mon code, mais ça ne boucle pas sur les images, ça
Livres en rapport
|
Derniers Blogs
ROSLYN FLUENT APIS: ROSLYNHELPER NUGET PACKAGEROSLYN FLUENT APIS: ROSLYNHELPER NUGET PACKAGE par Matthieu MEZIL
Si vous utilisez Roslyn et que vous vous voulez vous simplifier le code du code rewriter, je vous conseille d'installer mon NuGet package RoslynHelper ....(read more) ...
Cliquez pour lire la suite de l'article par Matthieu MEZIL POUR RAPPEL ! LES SPéCIFICATIONS DES PROTOCOLES OFFICE ET SHAREPOINT SONT DISPONIBLES SUR MSDNPOUR RAPPEL ! LES SPéCIFICATIONS DES PROTOCOLES OFFICE ET SHAREPOINT SONT DISPONIBLES SUR MSDN par neodante
Quelle est le point commun entre : Microsoft il y a 10 ans et Apple aujourd'hui ? Réponse: avoir une politique de protocoles propriétaires et fermés :) Car pour rappel (si si je vous assure c'est important de le rappeler), la majorité des spécifications e...
Cliquez pour lire la suite de l'article par neodante JOYEUX ANNIVERSAIRE NIXJOYEUX ANNIVERSAIRE NIX par ebartsoft
Souhaitons un bon et joyeux anniversaire à notre hôte à tous, Nix.
Je ne le répéterais jamais assez mais sans lui rien ne serait possible. Il défit en permanence les lois de la gravité et comme il le dit si bien, si tu lui fais confiance ça devra...
Cliquez pour lire la suite de l'article par ebartsoft IMAGINE CUP 2012, MAKE A SIGN EN FINALEIMAGINE CUP 2012, MAKE A SIGN EN FINALE par junarnoalg
Voilà qui est fait, la nouvelle est officielle ! L'équipe belge "Make a Sign" va au pays des kangourous défendre son projet dans la catégorie Software Design. http://www.imaginecup.com/CompetitionsContent/Competition/WorldwideFinalists.aspx V...
Cliquez pour lire la suite de l'article par junarnoalg KINECT 1.5 IS OUT !KINECT 1.5 IS OUT ! par Vko
La version 1.5 du Kinect For Microsoft vient tout juste de sortir ! Plein de nouveautés: Tracking de squelette en Near Mode Détection en position assise Détection faciale avec un SDK dédié Documentation et des guideline (enfin) Un out...
Cliquez pour lire la suite de l'article par Vko
Logiciels
sDEVIS-FACTURES vlPRO (8.1.0.3)SDEVIS-FACTURES VLPRO (8.1.0.3)sDEVIS-FACTURES vlPRO a été mis au point pour les particuliers, créateurs, entrepreneurs, artisa... Cliquez pour télécharger sDEVIS-FACTURES vlPRO 974 Application Server (12.2.4.6)974 APPLICATION SERVER (12.2.4.6)Développez de puissantes applications dans un environnement de 'cloud computing', clusterisé, séc... Cliquez pour télécharger 974 Application Server vPicture (1.4.2.1)VPICTURE (1.4.2.1)Avec vPicture, hébergez vos images facilement et rapidement.
vPicture est un utilitaire simple, ... Cliquez pour télécharger vPicture Easy-Planning (2.2.1.6)EASY-PLANNING (2.2.1.6)Easy-Planning permet de créer des plannings sous la représentation de diagrammes et est adapté au... Cliquez pour télécharger Easy-Planning COM-BACKUP (2.0)COM-BACKUP (2.0)
COM-BACKUP est un logiciel de sauvegarde qui permet de planifier les sauvegardes de vos dossiers ...
Cliquez pour télécharger COM-BACKUP
|