Accueil > Forum > > > > Une recherche pour deux résultats possibles avec et sans espace en PHP Mysql
Une recherche pour deux résultats possibles avec et sans espace en PHP Mysql
mercredi 1 avril 2009 à 21:58:27 |
Une recherche pour deux résultats possibles avec et sans espace en PHP Mysql

Calypdoso
|
Bonjour tout le monde. Je vais essayer de faire court et être claire.
Je gère le site d'une personne dont les normes de son métier ont changer en mars. Des immatriculations sous la forme de "1234XY00" et les normes actuelles sont "1234 XY 00"!. Il y a donc des espaces en plus à gérer.
On va utiliser la fonction value='.htmlentities($immat).' pas de problème. Mais il y a un historique dans la base MYSQL en "1234XY00" et en plus depuis mars les nouvelles saisies en "1234 XY 00". Les internautes saisieront une immat soit avec ou sans espace et le système devra afficher comme résulat l'historique sans espace et l'actuelle avec espace sans manipulation humaine supplémentaire.
Voilà mon problème.
Voici le code de mon moteur de recherche dans ma base mysql. Ce dernier fonctionne parfaitement avec une immat sans espace et logiquement (non testé) avec espace. Mais l'une ou l'autre en fonction de ma saisie dans ma zone de recherche. Mais il ne m'affiche pas les deux en même temps. Je saisie ça "1234XY00" il doit me sortie "1234XY00" et "1234 XY 00" Et l'idéale même chose si je saisie l'immat avec espace il doit me sortir les deux résulats possible.
Code : ------------------------------------------ //on se connecte à la base de donnée $db = mysql_connect($host,$login,$pass) or die ("erreur de connexion"); //selection de vôtre base de donnée mysql_select_db($base,$db) or die ("erreur de connexion base"); //requète de recherche // afin de suivre la recherche sur le nom durant toute la navigation. $nom = $_POST['info2']; $req = mysql_query("SELECT * FROM $table WHERE FA_Prenom LIKE '%".$_POST['info']."%' AND FA_Nom LIKE '%".$_POST['info2']."%' AND Immat LIKE '%".$_POST['info3']."%' AND DtValid LIKE '%".$_POST['info4']."%' Order by DtValid Desc "); //on compte les resultats $resultat= mysql_numrows($req); if(empty($resultat)){ echo'<div align = "center"><font color="#FF0000" size="2" face="Verdana, Arial, Helvetica, sans-serif"><strong>Désolé mais aucun resultat ne correspond à votre demande</strong></font><br><br></div>'; } else{ //on affiche le nombre de resultats echo'<table/>'; //on ressort les infos par ordres alphabétiques while( $result = mysql_fetch_array($req)) { ----------------------------
Merci pour votre aide. Cordialement
|
|
mercredi 1 avril 2009 à 22:43:38 |
Re : Une recherche pour deux résultats possibles avec et sans espace en PHP Mysql

coucou747
|
salut
je pense que tu devrais commencer par creer deux fonctions de convertions :
function avecespace($str){
return str_replace('/^([0-9]{4})(\s?)(..)(\s?)(..)$/', '\\1 \\3 \\5', $str);
}
function sansespace($str){
return str_replace('/^([0-9]{4})(\s?)(..)(\s?)(..)$/', '\\1\\3\\5', $str);
}
ensuite, t'as juste a utiliser ces deux fonctions avant de construire ta requete SQL
tu remplaces : Immat LIKE '%".$_POST['info3']."%'
par (Immat LIKE '%".avecespace($_POST['info3'])."%' OR Immat LIKE '%".sansespace($_POST['info3'])."%')
|
|
mercredi 1 avril 2009 à 22:55:59 |
Re : Une recherche pour deux résultats possibles avec et sans espace en PHP Mysql

Malkuth
|
dans la même idée que coucou747 tu devrais continué a stocké sous l'ancienne forme avant ta recherche tu supprime les espaces une fois récupérer le résultat tu le "clone en nouvelle norme ca donne pour la requette : Immat LIKE '%".sansespace($_POST['info3'])."%' pour le résultat : $numero_nouvformat = avecespace($numero_vieuxformat); faudras juste pensé a bien utilisé sansespace() a chaque fois que tu doit select, insert,update etc...
|
|
jeudi 2 avril 2009 à 07:38:42 |
Re : Une recherche pour deux résultats possibles avec et sans espace en PHP Mysql

Calypdoso
|
Bonjour
Merci pour vos réponses. Il est vrais que le plus simple serait de saisir toujours comme avant et retirer les espaces. Mais voilà, les données viennes de 4 bases Access vers une Mysql et le logiciel qui gère ces bases saisie désormait avec espaces. Du coup je me retrouve avec un historique sans espace et les noivelles saisies avec espaces. Il faut que j'arrive à comprendre l'idée de coucou747 pour l'intégrer à mon script. J'utilise ces fonctions telle quelle ? J'aime bien comprendre ce que je fais. Je ne comprend pas ce qui est entre les deux () de str_replace.
return str_replace('/^([0-9]{4})(\s?)(..)(\s?)(..)$/', '\\1 \\3 \\5', $str);
Merci.
|
|
jeudi 2 avril 2009 à 07:50:26 |
Re : Une recherche pour deux résultats possibles avec et sans espace en PHP Mysql

coucou747
|
c'est une regexp, tu peux commencer par aller lire la doc de str_replace et aller lire comment on fait un regexp.
|
|
jeudi 2 avril 2009 à 08:10:43 |
Re : Une recherche pour deux résultats possibles avec et sans espace en PHP Mysql

kohntark
|
Salut,
Dans la continuité des 2 précédents commentaires : Je remplacerai la fonction sansespace() par : str_replace(' ','', $str); // inutile à mon sens de passer par une fonction et une regex pour supprimer des espaces
Et puis ça : return str_replace('/^([0-9]{4})(\s?)(..)(\s?)(..)$/', '\\1 \\3 \\5', $str); => return preg_replace('/^([[:digit:]]{2,4})(\s?)([[:alpha:]]{2,4})(\s?)([[:digit:]]{2})$/', '\\1 \\3 \\5', $str); Car str_replace n'accepte pas les regex Et avec cette regex tu prends également les immatriculations du genre : 80XV60 1258 TDH75 ...
Cordialement,
Kohntark -
|
|
jeudi 2 avril 2009 à 08:18:46 |
Re : Une recherche pour deux résultats possibles avec et sans espace en PHP Mysql

coucou747
|
hum... exact, c'est une erreur de ma part.
|
|
jeudi 2 avril 2009 à 08:22:40 |
Re : Une recherche pour deux résultats possibles avec et sans espace en PHP Mysql

kohntark
|
Arf, j'ai loupé les deux derniers messages ... chui un peu lent ce matin.
As tu au moins accès à la DB mysql en modification ?
Si c'est le cas commence par passer toutes tes valeurs sous la forme '1234 XY 00' Et :
function avecespace($str) { return preg_replace('/^([[:digit:]]{2,4})(\s?)([[:alpha:]]{2,4})(\s?)([[:digit:]]{2})$/', '\\1 \\3 \\5', $str); }
[...] $req = mysql_query("SELECT * FROM $table WHERE FA_Prenom LIKE '%".$_POST['info']."%' AND FA_Nom LIKE '%".$_POST['info2']."%' AND Immat LIKE '%".avecespace($_POST['info3'])."%' AND DtValid LIKE '%".$_POST['info4']."%' Order by DtValid Desc "); [...]
Cordialement,
Kohntark -
|
|
jeudi 2 avril 2009 à 21:25:33 |
Re : Une recherche pour deux résultats possibles avec et sans espace en PHP Mysql

Calypdoso
|
Bonsoir,
J'ai bien pensé à revoir toutes les valeures de la base. Mais cette dernière est remise à jour très régulièrement via des bases Access qui sont gérées par des logiciels propriétaires. A chaque fois que les bases access sont injectées dans la base Mysql, tout est replacé. Pas le choix donc de faire une recherche et obtenir les deux résultats.
Je vais essayé vos méthodes et je vous tiens informé. Merci à tout de suite ou demain. Cordialement
|
|
jeudi 2 avril 2009 à 21:43:40 |
Re : Une recherche pour deux résultats possibles avec et sans espace en PHP Mysql

Calypdoso
|
Bonsoir,
Bon voilà je viens de faire un essai.
Voici le code modifié :
//on se connecte à la base de donnée $db = mysql_connect($host,$login,$pass) or die ("erreur de connexion"); //selection de vôtre base de donnée mysql_select_db($base,$db) or die ("erreur de connexion base"); //----------------------------------------------- function avecespace($str){ return str_replace('/^([0-9]{4})(\s?)(..)(\s?)(..)$/', '\\1 \\3\\5', $str); } function sansespace($str){ //return str_replace('/^([0-9]{4})(\s?)(..)(\s?)(..)$/', '\\1\\3\\5', $str); str_replace(' ','', $str); } //------------------------------------------------ //requète de recherche // afin de suivre la recherche sur le nom durant toute la navigation. $nom = $_POST['info2']; //$req = mysql_query("SELECT * FROM $table WHERE FA_Prenom LIKE '%".$_POST['info']."%' AND FA_Nom LIKE '%".$_POST['info2']."%' AND Immat LIKE '%".$_POST['info3']."%' AND DtValid LIKE '%".$_POST['info4']."%' Order by DtValid Desc "); $req = mysql_query("SELECT * FROM $table WHERE FA_Prenom LIKE '%".$_POST['info']."%' AND FA_Nom LIKE '%".$_POST['info2']."%' AND Immat LIKE '%".avecespace($_POST['info3'])."%' OR Immat LIKE '%".sansespace($_POST['info3'])."%' AND DtValid LIKE '%".$_POST['info4']."%' Order by DtValid Desc ");
Ou ai-je fait une erreur car le résultat est le suivant : Fatal error: Maximum execution time of 30 seconds exceeded in d:\www\ct\ctdetails.php on line 159 La ligne 159 étant la dernière $req=...........................
Merci pour votre participation.
|
|
Cette discussion est classée dans : base, mysql, recherche, espace, immat
Répondre à ce message
Sujets en rapport avec ce message
comment faire un recherche dans une base mysql [ par boulanger ]
je fait une gestion de documentation technique et je boque sur la conception de la page de recherche dans ma base apellé bdbouldoc il y a les champ
comment faire un recherche dans une base mysql [ par boulanger ]
merci adrien pour le coup de main mais ca ne m affiche rien en resultat de recherche pouvez vous voir ce qui cloche dans le codebase en mysql et code
Recherche journal sans base MySql! [ par norm131 ]
J,ai beau chercher pas mal, et comme je n'ai pas encore trouver le tutoriel dont j'ai besoin, est-ce que quelqu'un peut me guider et me dire ou je pui
Mise en majuscules [ par malaysia ]
Bonsoir,Je souhaite que lors d'une recherche dans une base MySQL à partir d'un formulaire en ligne, la recherche se fasse sur les mots de la base qu'i
Base de donnée Mysql recherche croisée [ par dlimouzin ]
J'ai dans une base de données d'adhérents d'association deux tables distinctesLa première contient les champsIdentifiantNomprénomSite géographiqueEtcL
problème de recherche sur base de données mysql [ par Xini28 ]
Lorsque je fais une recherche dans une base de données mysql, il s'affiche "Resource id #3" au lieu de ce que je recherche. Quelqu'un sait de quoi ça
recherche dans base de done affiche prob avec espace + amelioration de la recherche [ par plopinou ]
tout d'abord bonjour voila je viens de creer un programme de recherche dans ma DB, mais j'ai un probleme a l'affichage : je m'explique, j'ai
espace membre + upload + base mysql [ par jipe32 ]
Bonjour, connaissez vous un espace membre qui creer un répertoire perso sur le serveur à chaque inscription. De plus connaissez-vous un script upload
recherche base mysql [ par cobra176 ]
bonjour a tousj'ai un probleme , j'ai un code qui me permet de recherche des informations contenu dans une seule table mais je veux recherche une info
php & mysql [ par chako ]
Salut, je suis entrain de développer une page web qui permet de la recherche dans la base de donnée à l'aide de php & mysql et j'utilise wamp5_1.7.4.e
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
|