> Tous les forumsForum des Webmasters

 Recherche MySqlSujet résolu
Statut du sujet : RESOLU Imprimer
 Apolypse
  Posté le 13/07/2005 @ 20:20  
 Petit astucien

183 Messages
(Re?)Bonjour, Je suis capable de faire des requêtes de base avec MySql, mais j'aimerais trouver un script permettant de formater une chaine de caracteres pour la glisser facilement dans une requête SQL. Par exemple: "ordinateur carte reseau" deviendrait: " ChampTable LIKE '%ordinateur%' OR ChampTable LIKE '%carte%' OR ChampTable LIKE '%reseau%' " Vous voyez où je veux en venir? Je veux simplement m'assurer que je ne me lance pas dans un gros "taponnage" de chaines de caractères avec PHP innutilement. Merci à l'avance pour vos réponses!
 Afficher le profil de ApolypseEnvoyer un message privé à Apolypse
 
 
Publicité
 koala01  Posté le 13/07/2005 à 21:01  
Astucien

4715 Messages
Salut, Le plus facile est peut etre simplement, après controle de ta chaine (car il faut quand meme prendre un minimum de précaution) d'utiliser tout simplement la fonction chaine_finale=str_replace(chaine_recherchée,remplacer_par,chaine_dans_laquelle_chercher) La première chose à faire est de s'assurer qu'il n'y a pas d'espace au début ni à la fin. Cela se fait grace à la fonction chaine_finale=trim(chaine_a_verifier) Par exemple $variable=trim($variable); (qui aura l'avantage de ne pas changer le nom de la variable) La deuxième chose à faire, sera de s'assurer qu'il n'y a pas plusieurs espaces consécutifs du genre de "blabla truc" Pour ce faire, on pourra utiliser une boucle qui vérifiera "récursivement" la présence de deux espaces successifs... elle prendra une forme du genre de
while(stristr($variable,' ') { $variable=str_replace(' ',' ',$variable); }
Une fois que nous serons rendus à ce stade, il sera facile de faire de manière à ce que ces espaces soit remplacés correctement dans la chaine... un simple
$variable=str_replace(' ','%\\' or champstable like\\'%',$variable);
devrait faire l'affaire pour la sécurité, il sera aussi utile de faire rajouter un % à la fin de la chaine avant le traitement[clindoeil] Il ne restera plus qu'à créer la requete SQL avec cette chaine modifiée... Cela se fera de manière classique, avec un code qui pourrait ressembler à
$sql=sprintf("SELECT champs FROM table where champs_cherche LIKE '%s',$variable);
Afficher le profil de koala01 Voir la configuration de koala01Envoyer un message privé à koala01
  Revenir en haut de la page
 Apolypse  Posté le 13/07/2005 à 21:09  
Petit astucien

183 Messages
Parfait! Je me lance à l'attaque! Merci beaucoup koala01 de m'avoir montré la voie!
Afficher le profil de ApolypseEnvoyer un message privé à Apolypse
 Revenir en haut de la page
 El Konkonbré M@squed  Posté le 13/07/2005 à 21:12  
Petit astucien

355 Messages
Salut.
koala01 : La deuxième chose à faire, sera de s'assurer qu'il n'y a pas plusieurs espaces consécutifs du genre de "blabla truc"
Pas plus simple de faire : [code]$variable = ereg_replace('[ ]{2,}', ' ', $variable);[/code] [confus][confus][confus] Bye.
Afficher le profil de El Konkonbré M@squedEnvoyer un message privé à El Konkonbré M@squed
 Revenir en haut de la page
Haut de la page 
Inscrivez-vous !
- Posez vos questions

- Résolvez vos problèmes

- Aidez les autres

- Participez et créez vos discussions

- Dialoguez en privé avec d'autres membres

- Suivez vos sujets préférés

- Affichez les signatures des membres

TOUT EST GRATUIT !

Je crée mon compte



Vous avez besoin d'aide ?
Des centaines d'experts sont à votre disposition sur les forums PC Astuces pour vous aider gratuitement, 24h/24, 7j/7.

Les derniers sujets résolus !
 

 > Tous les forumsForum des Webmasters

 
Forum PC Astuces© 1997-2008 WebastucesAller en haut de la page