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

PHP

 > 

Divers

 > 

Général

 > 

Une recherche pour deux résultats possibles avec et sans espace en PHP Mysql


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

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

Administrateur CodeS-SourceS
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

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

Administrateur CodeS-SourceS
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

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

Administrateur CodeS-SourceS
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

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


1 2 3

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


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,577 sec (4)

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