begin process at 2012 05 31 14:59:44
  Trouver un code source :
 
dans
 
Accueil > Forum > 

PHP

 > 

Base de données

 > 

MySQL

 > 

Requète sur des données comportant des accents


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

Requète sur des données comportant des accents

mardi 8 février 2011 à 12:20:03 | Requète sur des données comportant des accents

djimson

Bonjour,
j'ai un petit soucis avec une requête. Elle marche à condition que le mot recherché ne porte pas d'accent. Si le mot comprte un accent, alors je n'ai aucun resultat.
Pour être precis, voici un exemple : Je fais une recherche sur les mots: Comptabilité/Finance
- Aucun resultat.
Comptabilite/Finance
- Résultat positif.

Je met le bout de cod qui me fatique :

Code PHP :
$sql = "SELECT * FROM table
WHERE `secteur` LIKE \" " .$_POST['option']. "%'\" OR
`secteur` LIKE \"  " . strtolower($_POST['option']) . "%'\" OR
`secteur` LIKE \" " . strtoupper($_POST['option']) . "%'\" OR
`secteur` LIKE \" " . strtr($_POST['option'], "áéíóúàèìòùâêîôûäëïöü", "aeiouaeiouaeiouaeiou") . "%'\" OR
`secteur` LIKE \" " . strtoupper(strtr($_POST['option'], "áéíóúàèìòùâêîôûäëïöü", "aeiouaeiouaeiouaeiou")) . "%'\" OR
`secteur`  LIKE \"" . strtolower(strtr($_POST['option'], "áéíóúàèìòùâêîôûäëïöü", "aeiouaeiouaeiouaeiou")) . "%'\" OR
`secteur` LIKE \"  '%" .$_POST['option']. "%'\" OR
`secteur` LIKE \"  '%" . strtolower($_POST['option']) . "\" OR
`secteur` LIKE \" '%" . strtoupper($_POST['option']) . "\" OR
`secteur` LIKE \" '%" . strtr($_POST['option'], "áéíóúàèìòùâêîôûäëïöü", "aeiouaeiouaeiouaeiou") . "\" OR
`secteur` LIKE \" '%" . strtoupper(strtr($_POST['option'], "áéíóúàèìòùâêîôûäëïöü", "aeiouaeiouaeiouaeiou")) . "\" OR
`secteur`  LIKE \"'%" . strtolower(strtr($_POST['option'], "áéíóúàèìòùâêîôûäëïöü", "aeiouaeiouaeiouaeiou")) . "\"
"; // Requête pour vérifier la casse et les accents

Si quelqu'un à une idée sur le problème.
Cordialement
Merci
mardi 8 février 2011 à 13:38:01 | Re : Requète sur des données comportant des accents

cod57

bonjour

Interclassement dans ta table si c'est exemple utf8
verifie que ton script qui poste est en utf8 le charset ...
et strtr($_POST['option'], "áéíóúàèìòùâêîôûäëïöü", "aeiouaeiouaeiouaeiou")
sera pas neccessaire

a++
mardi 8 février 2011 à 13:52:04 | Re : Requète sur des données comportant des accents

djimson

Oui ma table est utf8_general_ci et le script charset=iso-8859-1"

faut-il que je le change?
Merci
mardi 8 février 2011 à 14:01:28 | Re : Requète sur des données comportant des accents

cod57

oui

charset="utf-8"
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />

a++
mardi 8 février 2011 à 14:09:28 | Re : Requète sur des données comportant des accents

djimson

Problème. J'ai plein de petits losanges avec des ????
Incompatibilité je pense


Merci
mardi 8 février 2011 à 15:21:37 | Re : Requète sur des données comportant des accents

cod57

je crois avoir une solution
Code PHP :
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
</head>
<body>
<form method="POST" action="<?php $_SERVER['PHP_SELF'];?>">
Entrez du texte accentu&eacute; : <input name="option" />
<br />
<input type="submit" value="CHERCHER" />
</form><?php
$lnk=mysql_connect('localhost','root','');
mysql_select_db('b');
mysql_set_charset("utf8", $lnk);


$table='annonce';

//$_POST['option']='éè';
//echo $option = $_POST['option'];

echo $option = mysql_real_escape_string($_POST['option']);
echo '<br />';
echo $sql = "SELECT * FROM `".$table."` WHERE `choix` LIKE '".$option."' LIMIT 0 , 30 ";
//echo $sql = "SELECT * FROM `".$table."` WHERE `choix` LIKE '%".$option."%' LIMIT 0 , 30 ";
echo '<br />';
$query=mysql_query($sql);

if(mysql_num_rows($query)>0){

while($row=mysql_fetch_array($query)){
echo $row['id'].'<br />';
$option="";
}

} else {
echo "pas de resultats";
$option="";
}
?>



-- phpMyAdmin SQL Dump
-- version 3.2.0.1
-- http://www.phpmyadmin.net
--
-- Serveur: localhost
-- Généré le : Mar 08 Février 2011 à 15:10
-- Version du serveur: 5.1.36
-- Version de PHP: 5.2.11

SET SQL_MODE="NO_AUTO_VALUE_ON_ZERO";

--
-- Base de données: `b`
--

-- --------------------------------------------------------

--
-- Structure de la table `annonce`
--

CREATE TABLE IF NOT EXISTS `annonce` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`choix` varchar(50) CHARACTER SET utf8 NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=3 ;

--
-- Contenu de la table `annonce`
--

INSERT INTO `annonce` (`id`, `choix`) VALUES
(1, 'éé'),
(2, 'éè');

j'ai essayé ça marche
mardi 8 février 2011 à 15:32:54 | Re : Requète sur des données comportant des accents

djimson


Ok, je l'essai de suite.
Mais j'ai oublié de signaler que ma recherche porte sur soit une chaine de caractère soir sur un seul mot. Mon formulaire est une liste déroulante.
Code PHP :
echo $sql = "SELECT * FROM `".$table."` WHERE `choix` LIKE '%".$option."%'"; 


Je peux ajouter des OR pour trouver autres mots de la chaine?
Merci
mardi 8 février 2011 à 15:43:33 | Re : Requète sur des données comportant des accents

cod57

Réponse acceptée !
apres du peux faire ce que tu veux

un switch()
ou des %?% ...

... ce qui important dans ma proposition c'est

mysql_set_charset("utf8", $lnk);

tu dis à mysql de travailler en utf 8 ...

si ça marche accepte la réponse s.t.p.

a++



Cette discussion est classée dans : post, like, option, secteur, strtr


Répondre à ce message

Sujets en rapport avec ce message

pb de recherche [ par neotetsuo34 ] Je n'arrive pas a rechercher des infos dans ma base que je tire d'un formulaire, je dois avoir un pb de requete ou de syntaxe. Je vous montre mon code mon moteur recherche web : création de page d'idexation [ par astuces_jeux ] Bonjour,j'ai fait une page de résultats et j'ai peut-etre des erreurset j'aimerai décider qu'il y ai 15 réponses par pages et faires plusieurs page !! mon moteur recherche web : création de page d'idexation [ par astuces_jeux ] Bonjour,j'ai fait une page de résultats et j'ai peut-etre des erreurset j'aimerai décider qu'il y ai 15 réponses par pages et faires plusieurs page !! option de recherche [ par kyript ] Bonjour à tousvoila mon problèmepar default,  j'ai un formulaire de recherche avec 1 seul case qui recuperer par  $recupdonc lors de la requete je fai mysql_query remonte plus de résultats que nécessaire. [ par Calypdoso ] Bonjour, Pour commancer en une phrase, j'ai demandé de l'aide sur ce site il y a quelques semaines. Problème espaces dans des immatriculations. Je re SQL dans ma boucle For [ par Const4ntine ] Bonjour,Un petit souci inexpliqué, certainement un manque d'expérience de ma part ;)Je souhaite inséré un enregistrement pour chaque ligne d'article d Erreur requete sql [ par flopad ] Bonjour, j'ai un formulaire via lequel je propose diverses options de recherche dans ma bdd; j'ai le code suivant qui me récupère les données du form Requete mysql sur tables champs identiques [ par flopad ] Bonjour,j'ai un formulaire par lequel l'user selectionne ce qu'il veut rechercher dans ma base.Il a également le choix de rechercher sur une ou plusie PB nom de champs table mysql [ par flopad ] Salut tout le monde!J'ai une page contenant un formulaire par lequel je passe pour faire une recherche dans ma bdd. Je coche sur quelle table je veux probleme!!!! [ par nacer_1954 ] bonjour tout le monde j'ai envis de faire un seul fichier php qui va traiter plusieurs formulaires. donc j'ai fait une page ou j'ai mis  plusieurs 


Nos sponsors


Sondage...

Comparez les prix

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

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