Caractères accentués dans une base de données

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : Caractères accentués dans une base de données

Re: Caractères accentués dans une base de données

par tintin88 » 18 nov. 2011, 17:29

Bonjour à tous,

Désolé pour le délai. Suite à vos conseils, j'ai finalement remplacé les données écrites en caractères html dans ma table par les caractères accentués É ou È et tout est rentré dans l'ordre.
Encore merci à tous.
tintin88

Re: Caractères accentués dans une base de données

par moogli » 09 nov. 2011, 10:17

cela ne peux fonctionner à cause du html_entity_decode, qui transforme tes é en é (par exemple c'est pareil pour toutes les entités).

tu cherche donc dans la table rené alors que tu a rené (en tennant compte tu lower case)

tu ne devrais pas avoir ce type de donnée en base, pour une raison de portabilité (que va t'il se passer quand tu va vouloir un export en autre chose que du html ? genre pdf, texte etc) et une raison de simplicité, car la tu a des trucs des entités html mais qu'est ce qui t'assure que cela va toujours être le cas et qu'un jour tu n'aura et RENÉ et rené ?.

la pour le coup essai dans le html_entity_decode ça devrait aller mieux.

a voir où le htmlentities est fait car la tu fait deux transformations (une dans chaque sens) après il va falloir gérer la casse car RENÉ c'est pas rené :)


@+

Re: Caractères accentués dans une base de données

par tintin88 » 09 nov. 2011, 09:37

Bonjour Aureusms,


1°) Suite au test hier soir avec phpmyadmin, le message obtenu est :
MySQL a retourné un résultat vide (aucune ligne)


2°) Voila quelques exemples de ce que j'ai dans la colonne en question:
DENIS
JÉRÉMY
PASCAL
RENÉ
VALÉRIE

Encore merci pour ton aide.
tintin88

Re: Caractères accentués dans une base de données

par Aureusms » 08 nov. 2011, 22:18

Montre nous quelques données types venant de ta colonne N_Nom

Re: Caractères accentués dans une base de données

par tintin88 » 08 nov. 2011, 11:37

Bonjour et merci à tous,

N'ayant pas phpmyadmin à disposition maintenant, J'essayerai ce soir la proposition de Moogli.
Quant à Aureusmsm :
Ton idée d'utiliser LIKE reste malheureusement sans effet, la liste déroulante restant toujours vide.
Une autre idée ?

tintin88

Re: Caractères accentués dans une base de données

par Aureusms » 08 nov. 2011, 00:32

Déjà le \n m'a l'air inutile sauf si tu veux visualiser en code HTML

echo "<option value=\"".$val["nom"]."\">".$val["nom"]."</option>\n";

As -tu des " dans tes tables?

Sinon pour ma part je ressort toujours le HTML du PHP pour une meilleur lecture.
As tu essayé avec LIKE ? De cette façon tu n'est pas sensible à la casse

<?php
$nom = "REN&Eacute;";
$nom = html_entity_decode($nom);
$SQL = "SELECT DISTINCT nom FROM MaBase WHERE N_Nom LIKE '".$nom."' ORDER by nom ASC";

//ou
//utilisation possible aussi de mb_strtolower pour retourner tout en minuscule :
// $nom = mb_strtolower($nom);

//autre choix
$nom = "René";
$nom = mysql_escape_string($nom);
$SQL = "SELECT DISTINCT nom FROM MaBase WHERE N_Nom LIKE '".$nom."' ORDER by nom ASC";

$res = mysql_query($SQL);

while($val=mysql_fetch_array($res))
{
	$nom = $val["nom"];
	?>
	<option value="<?php echo $nom; ?>">
		<?php echo $nom; ?>
	</option>
	<?php
}
?>

Re: Caractères accentués dans une base de données

par moogli » 07 nov. 2011, 23:28

affiche la requête et test la dans une console mysql (ou avec phpmyadmin)

@+

Re: Caractères accentués dans une base de données

par tintin88 » 07 nov. 2011, 17:19

Bonjour à tous (et à toutes) et merci plus particulièrement à sacramento et moogli pour leurs remarques.

J'ai donc mis en oeuvre votre proposition mais cela ne fonctionne malheureusement pas, la liste déroulante restant vide. Une autre proposition peut-être ?
Merci d'avance.

tintin88

Re: Caractères accentués dans une base de données

par moogli » 05 nov. 2011, 14:51

salut,

tu a des entités html dans la table si oui ce 'est pas bon :)

dans la requête, passe le nom (dans le select) en minuscule (puisse que c'est ce que tu souhaite) comme indiqué par sacramento :)

@+

Re: Caractères accentués dans une base de données

par sacramento » 05 nov. 2011, 12:46

Utilise les fonctions pour tout passer en minuscule : convertir le &Eacute; en &eactute; fait passer du E accentué au e accentué
$SQL = "SELECT DISTINCT nom FROM MaBase WHERE lower(N_Nom)='".(html_entity_decode(strtolower('REN&Eacute;'))."' ORDER by nom ASC";

Caractères accentués dans une base de données

par tintin88 » 05 nov. 2011, 12:39

Bonjour,

Dans la table MaTable, j'ai des prénoms écrits en majuscule comme par exemple REN&Eacute; et d'autres en minuscule rené.
A partir du script php ci-dessous, je souhaite faire apparaître tous les individus qui se nomment rené, que ce soit en minuscule comme en majuscule mais seuls ceux qui sont en minuscule apparaissent.
<?php
echo ("<form action='Fin.php' method='post'>");
echo ("<select name = 'Choix'>");
echo '<option value="Aucun nom sélectionné">sélectionnez le nom</option>';
$SQL = "SELECT DISTINCT nom FROM MaBase WHERE N_Nom='".html_entity_decode('REN&Eacute;')."' ORDER by nom ASC";

$res = mysql_query($SQL);
while($val=mysql_fetch_array($res))
	{
	echo "<option value=\"".$val["nom"]."\">".$val["nom"]."</option>\n";
	}

echo ("</select>");
echo "<input type = 'submit' value = 'Envoyer'>";
echo ("</form>");

mysql_close();
?>
Je remercie davance les futurs courageux qui se pencheront sur mon problème.