begin process at 2012 05 31 17:53:00
  Trouver un code source :
 
dans
 
Accueil > Forum > 

PHP

 > 

Base de données

 > 

MySQL

 > 

Supprimer les points et traits d'union dans un request


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

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

Membre Club
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

Membre Club

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

Membre Club
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

Membre Club
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

Membre Club

Suis-je assez clair ???


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

Membre Club
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

Membre Club
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

Membre Club
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

Membre Club

et ça marche pas !!!


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

Membre Club
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

1 2

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


Nos sponsors


Sondage...

CalendriCode

Mai 2012
LMMJVSD
 123456
78910111213
14151617181920
21222324252627
28293031   

Consulter la suite du CalendriCode

Photothèque

A découvrir



 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,796 sec (4)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales