Résolu Requête SQL avec accent (PHP)

Statut
N'est pas ouverte pour d'autres réponses.
Inscription
12 Juillet 2012
Messages
31
Réactions
3
Points
11 116
RGCoins
25
Bonjour à tous,

Je suis actuellement sur un problème que je rencontre, je m'explique.
Je créer une connexion MySQL avec
PHP:
mysql_connect()
, me connecte à la base avec
PHP:
mysql_select_db()
, la connexion se fais parfaitement !
Quand je réalise une requête de ce genre :
PHP:
$sql = 'SELECT Nom, dates, Biblio, photoauteur FROM auteurs WHERE Nom LIKE 'Honoré';';
, il n'y à aucun résultat (dand l'output php de $data). Or, quand j'exécute cette requête directement depuis mon phpmyadmin, celle-ci me renvoie bien les informations demandées ..

J'ai remarqué que le problème venait des accents, si dans mon LIKE je met un Nom sans accents, la requête fonctionne parfaitement et me renvoie les données, alors qu'avec un accent, rien du tout.
Je précise également que ma base est en UTF-8, ma table est en utf8_general_ci, ainsi que la colonne.

Merci de bien vouloir m'aider, et vous remercie d'avance pour vos réponses.
 
Dernière édition:
Bonjour SicKLy ABiLiTy, pour ton problème à tu essayer quelque chose comme "é"ou "&eacute" pour remplacer ton accent ?
Comme ceci par exemple :
Code:
<p>Je suis Honor&#233;</p>
<p>Je suis Honor&eacute;</p>

Plus d'information

En général en programmation, il n'aime pas les accents.
Et essai d'utiliser PDO pour la relation PHP <-> BDD les fonction que tu utilise devienne obsolète si ma mémoire et bonne.

Exemple, pour toi cela donnerais quelque chose comme ceci :
PHP:
$db = new PDO('mysql:host=localhost;dbname=TaBaseDeDonnees', 'root', '');

$query=$db->prepare('SELECT Nom, dates, Biblio, photoauteur
FROM auteurs
WHERE nom LIKE :namesearch');
$query->execute(array(':namesearch' => "Honor&#233;" . '%'));
$data=$query->fetch();

Et pas besoin de mettre un LIKE si tu sélectionne avant ce que tu souhaite obtenir

Plus d'information
 
Dernière édition:
Exemple, pour toi cela donnerais quelque chose comme ceci :
PHP:
$db = new PDO('mysql:host=localhost;dbname=TaBaseDeDonnees', 'root', '');

$query=$db->prepare('SELECT Nom, dates, Biblio, photoauteur
FROM auteurs
WHERE nom LIKE :namesearch');
$query->execute(array(':namesearch' => "Honor&#233;" . '%'));
$data=$query->fetch();

Et pas besoin de mettre un LIKE si tu sélectionne avant ce que tu souhaite obtenir
Merci pour ta réponse,

Je n'ai pas compris le ':namesearch' pour pourquoi pas besoin de mettre de LIKE.
Je vais essayer PDO.

Ou crée une une variable qui contient "Honoré" et tu la mets dans la requête :)
Mon contenu est déjà dans une variable, désolé de ne pas l'avoir préciser ..
 
Ici le ":namesearch" correspond a "Honoré", pour plus de sécurité on entre ":namesearch" (ou un autre nom a la place) en lui attribuant la valeur que tu cherche 'Honoré'. Et le LIKE retourne toute les valeurs du champs comportant ton nom 'Honoré', or si avant tu sélection les champs que tu souhaite, il est alors inutile de déclarer LIKE après.

Voilà tout, j'espère avoir pu répondre à tes question.

Cela revient au même ;)

De plus il est préférable d'utiliser pdo, mysql_query etc... devient obselète ;)
Ouep, c'est ce que j'ai dit dans mon 1st poste ^^
 
Je viens d'essayer, et cela ne fonctionne toujours pas .. Même avec PDO ..
Voici le code complet :
PHP:
// Testing PDO
    $db     =     new PDO('mysql:host=localhost;dbname=my_db', 'root', '') or die('Erreur de la connexion à la base de données');
    $res     =    $db->query('SELECT Nom, dates, Biblio, photoauteur FROM auteurs WHERE nom LIKE \''.$auteur.'\'');
    $res->setFetchMode(PDO::FETCH_OBJ);
  
    while ($data = $res->fetch()) {
        $nom     =     $data->Nom;
        $vie     =     $data->dates;
        $biblio =     $data->Biblio;
        $photo     =     $data->photoauteur;      
    }

Rien ne remplis mes variables, .. J'ai essayé avec
PHP:
htmlentities(&auteur)
Mais rien à faire.
 
Et comme ceci ? :

PHP:
// Testing PDO
    $db     =     new PDO('mysql:host=localhost;dbname=my_db', 'root', '') or die('Erreur de la connexion à la base de données');
    $res    =    $db->prepare('SELECT Nom, dates, Biblio, photoauteur FROM auteurs WHERE nom = Honor&#233;');
$res->execute();

    while ($data = $res->fetch()) {
        $nom     =     $data['Nom'];
        $vie     =     $data['dates'];
        $biblio =     $data['Biblio'];
        $photo     =     $data['photoauteur']; 
    }
 
Dernière édition:
Ton topic se trouvait dans la mauvaise section http://reality-gaming.fr/attachments/deplace-png.20318/, je l'ai donc déplacé dans la bonne section http://reality-gaming.fr/attachments/deplacement-png.20319/. :modo:
 
Ton topic se trouvait dans la mauvaise section http://reality-gaming.fr/attachments/deplace-png.20318/, je l'ai donc déplacé dans la bonne section http://reality-gaming.fr/attachments/deplacement-png.20319/. :modo:
 
Statut
N'est pas ouverte pour d'autres réponses.
Retour
Haut