[RESOLU] Caractére special - insertion en base

Eléphanteau du PHP | 30 Messages

31 juil. 2017, 14:44

Bonjur,

Depuis quelques jours je me casse la tête pour les caractère spéciaux et l'injection dans la base.
Au début c'était le type de ma table en latin1 qui causait problème, alors j'ai convertis ma table à utf8. Mais j'ai résolut qu'une partie de problème.

Voila mon problème :

Dans ma page :

Code : Tout sélectionner

<META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=UTF-8"> // <tr> <td class="tableau-eleveurs" align="right"> <label for="annee_canari"><b>Prénom : </b></label> </td> <td class="tableau-eleveurs" align="left"> <input type="text" name="prenom_eleveur"> </td> </tr> // Injection en base $Prenom_eleveur = trim(html_entity_decode($_POST["prenom_eleveur"]) ); $sqlup = "UPDATE $nom_table_e SET Prenom_e = '$Prenom_eleveur' WHERE Id = '$Id'" ;
Affichage de la requete : UPDATE eleveur SET Prenom= 'José' WHERE Id = '2';
Résultat dans la base pour le prénom : José ==> José

J'ai vérifié la colonne prénom, elle est de type : utf8_general_ci

Autre point :
Autre chose, quand je veut afficher le prénom de la base, il s'affiche bien : José.

Merci pour votre aide.

Avatar du membre
Administrateur PHPfrance
Administrateur PHPfrance | 9782 Messages

31 juil. 2017, 14:51

Bonjour,

Il faut vérifier aussi quel est le charset renvoyé par ton serveur quand on lui demande une page PHP.

Pour le forcer en utf8 il faut ajouter ceci au tout début de ta page PHP :
header('Content-Type: text/html; charset=utf-8');
Quand tout le reste a échoué, lisez le mode d'emploi...

Eléphanteau du PHP | 30 Messages

31 juil. 2017, 15:31

Re,
Malheureusement, même avec le forçage ça ne donne rien.

Avatar du membre
Administrateur PHPfrance
Administrateur PHPfrance | 9782 Messages

31 juil. 2017, 16:18

Et lors de la connexion PHP -> MySQL tu as bien défini le charset de connexion ?

<?php
// Avec mysql_* (obsolète)
mysql_set_charset('utf8');

// Avec mysqli_*
mysqli_set_charset($link, 'utf8');
// ou
$mysqli->set_charset('utf8');

// Avec PDO :
$bdd = new PDO('mysql:host=localhost;dbname=nom_bdd;charset=utf8', 'login', 'password');
Quand tout le reste a échoué, lisez le mode d'emploi...

Eléphanteau du PHP | 30 Messages

31 juil. 2017, 16:27

Non, voila ma fonction de connexion :

Code : Tout sélectionner

function connect_db() { global $sql_serveur,$sql_user,$sql_passwd,$sql_bdd; $db_link = mysqli_connect($sql_serveur, $sql_user, $sql_passwd, $sql_bdd) or die (mysqli_error($db_link)); return $db_link; }

Avatar du membre
Administrateur PHPfrance
Administrateur PHPfrance | 9782 Messages

31 juil. 2017, 16:29

Donc il faut que tu la complètes, je t'ai donné la ligne de code, à toi de l'intégrer correctement.
Regarde la doc si tu veux + de détails et exemples.
Quand tout le reste a échoué, lisez le mode d'emploi...

Eléphanteau du PHP | 30 Messages

31 juil. 2017, 16:31

Oups je n'ai pas vu ton code, :)
Oui merci je vais l'ajouter.

Eléphanteau du PHP | 30 Messages

31 juil. 2017, 16:33

Ohhhh cool, ça marche.
Merci beaucoup