8791 sujets

Développement web côté serveur, CMS

Pages :
Bonsoir à toutes et à tous,

j'ai un petit soucis concernant l'affichage de certains caractères (accents) provenant de ma base de donnée, pourtant, toutes mes colonnes sont en "UTF8 general ci" et mes pages comporte également <meta charset="UTF-8" />
Je voudrais précisé que tous les accents rédiger directement sur mes pages fonctionnent parfaitement.

Si vous comprenez l'erreur ?

En regardant sur différent forum, je tombe sur une solution (mais qui n'explique pas mon erreur)


<?php
try
{
$bdd = new PDO('mysql:host=localhost;dbname=test', 'root', '', array (PDO::MYSQL_ATTR_INIT_COMMAND => 'SET NAMES \'UTF8\''));
}
catch (Exception $e)
{
die('Erreur : ' . $e->getMessage());
}
?>


malheureusement, je suis débutant en php et je ne sais pas comment l'intégrer dans mon code suivant


<?php 

// Déclaration des paramètres de connexion
$host = "localhost";
$user = "root";
$passwd = "";

$con=mysql_connect($host, $user,$passwd) or die("erreur de connexion au serveur");

$bdd = mysql_select_db("eat-to-season", $con) or die("erreur de connexion a la base de donnees");

$res = mysql_query("SELECT * FROM `liste-legumes`") or die(mysql_error());

// Recuperation des resultats
echo "		<section class='ff-container'><ul class='ff-items'>";
while($row = mysql_fetch_array($res)){
	echo "<li><a href='".$row['id_legumes']."/'><span>".$row['noms']."</span> <img alt=".$row['noms']." src='".$row['image']."' /></a></li>";
}
echo "</ul></section>";
// Deconnexion de la base de donnees
mysql_close();

?>
dafid5 a écrit :
Bonsoir à toutes et à tous,
toutes mes colonnes sont en &quot;UTF8 general ci&quot; et mes pages comporte également &lt;meta charset=&quot;UTF-8&quot; /&gt;

Est-ce que ta page php est bien enregistrée en UTF8 ? Le chartset se suffit pas si ta page n'est pas en UTF8.
Essaie en passant pas bloc note et en l'enregistrant en unicode, ou bien avec notepad++ en l'enregistrant en utf8 sans bom
Modifié par xirt (30 Sep 2012 - 01:26)
xirt a écrit :

Est-ce que ta page php est bien enregistrée en UTF8 ? Le chartset se suffit pas si ta page n'est pas en UTF8.
Essaie en passant pas bloc note et en l'enregistrant en unicode, ou bien avec notepad++ en l'enregistrant en utf8 sans bom


Oui c est l une des premières choses que j ai vérifié.
si ce qui vient de ta db est bon, alors ce sont les caractères de ton fichier qui ne sont pas bon.

je ne sais pas exactement quelles sont les différence entre utf8 sans bom et utf8 tout court, mais en utf8 tout court je n'ai jamais eu de soucis.
Modérateur
Super_baloo8 a écrit :
si ce qui vient de ta db est bon, alors ce sont les caractères de ton fichier qui ne sont pas bon.


+1

Super_baloo8 a écrit :
je ne sais pas exactement quelles sont les différence entre utf8 sans bom et utf8 tout court, mais en utf8 tout court je n'ai jamais eu de soucis.


Les bom sont des caractères spéciaux. (A ne pas confondre avec des caractères comme : "@,é,à,è,etc. qui sont en fait de simples caractères) Les Bom sont des caractères spéciaux qui permettent de controler et de gérer l'encodage. (http://en.wikipedia.org/wiki/Byte_order_mark)

Comment savoir si son fichier est encodé en utf8 avec bom ? Il suffit de l'ouvrir avec un editeur hexa et voir si on retrouve pas cette suite de caractères : http://www.cmontmorency.qc.ca/~gperron/stages/RapportDeStages/h12/AlarieJeanPierre/bom.html

En conclusion, il est fortement déconseillé d'utiliser l'utf8 avec BOM pour le web sous peine de récuperer des caractères indésirables et de planter son fichier.
Modifié par niuxe (30 Sep 2012 - 12:05)
niuxe a écrit :

Comment savoir si son fichier est encodé en utf8 avec bom ? Il suffit de l'ouvrir avec un editeur hexa et voir si on retrouve pas cette suite de caractères : http://www.cmontmorency.qc.ca/~gperron/stages/RapportDeStages/h12/AlarieJeanPierre/bom.html

En conclusion, il est fortement déconseillé d'utiliser l'utf8 avec BOM pour le web sous peine de récuperer des caractères indésirables et de planter son fichier.


Bonsoir Niuxe, je viens de télécharger un logiciel pour vérifier la présence de BOM, petit aperçu écran !

Ce que je ne comprend pas, c'est que les textes directement rédigé sur mes pages n'ont aucuns soucis, mais les textes chargés de ma base sql affiche un ? en remplacement des accents.

Comment corriger ces BOM?
upload/40410-Sans-titre.jpg
Modérateur
Bonjour/bonsoir,

A vue de nez, il y a du BOM.

1. Quel logiciel utilises tu pour coder ?
2. Est ce que dans le logiciel que tu utlises pour coder, tu peux voir et modifier l'encodage de tes caractères/ de ton fichier ?
3. Peux tu mettre sur le forum le résultat de la commande Mysql :

SHOW CREATE DATABASE MaBaseDeDonneesAProblemeDencodage;

4. Peux tu mettre sur le forum le résultat de la commande Mysql :

SHOW FULL COLUMNS FROM MaTableAProblemeDencodage;

5. Peux tu mettre sur le forum le script complet de ton fichier à souci ?

A moins qu'une âme charitable puisse t'aider avant, j'essaierai de voir ton souci ce soir si le temps me le permet.

@+
Modifié par niuxe (01 Oct 2012 - 04:58)
niuxe a écrit :

1. Quel logiciel utilises tu pour coder ?
2. Est ce que dans le logiciel que tu utlises pour coder, tu peux voir et modifier l'encodage de tes caractères/ de ton fichier ?
3. Peux tu mettre sur le forum le résultat de la commande Mysql :

SHOW CREATE DATABASE MaBaseDeDonneesAProblemeDencodage;

4. Peux tu mettre sur le forum le résultat de la commande Mysql :

SHOW FULL COLUMNS FROM MaTableAProblemeDencodage;

5. Peux tu mettre sur le forum le script complet de ton fichier à souci ?


Bonsoir Niuxe,

1/ Notepad ++
2/ Oui, je peux modifier l'encodage (il me propose de l'UTF-8 (sans bom)
3/ je ne sais pas comment faire et ou écrire "SHOW CREATE DATABASE MaBaseDeDonneesAProblemeDencodage;"
4/ je ne sais pas ou écrire SHOW FULL COLUMNS FROM MaTableAProblemeDencodage;
5/ voici le script des pages à problèmes

page "legumes-de-saison.php" qui a permettre d'appeler la seconde page "fiche-legume.php"



<!DOCTYPE html>
<html lang="fr">
    <head>
		<meta charset="UTF-8" />
        <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1"> 
		<script type="text/javascript" src="js/modernizr.custom.29473.js"></script>
		<script src="http://eenox.net/js/modernizr/modernizr.min.js" type="text/javascript"></script>
		<script src="http://code.jquery.com/jquery-1.7.2.min.js" type="text/javascript"></script>
		<script src="http://eenox.net/js/jquery/jquery.easing.js" type="text/javascript"></script>
		<script src="http://eenox.net/js/jquery/jquery.transform.js" type="text/javascript"></script>
		<script type="text/javascript">
  window.___gcfg = {lang: 'fr'};

  (function() {
    var po = document.createElement('script'); po.type = 'text/javascript'; po.async = true;
    po.src = 'https://apis.google.com/js/plusone.js';
    var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(po, s);
  })();
</script>

<script>if (navigator.userAgent.match(/iPhone/i) || navigator.userAgent.match(/iPod/i) || navigator.userAgent.match(/iPad/i)) {
	$('label[for]').click(function () {
		var el = $(this).attr('for');
		if ($('#' + el + '[type=radio], #' + el + '[type=checkbox]').attr('selected', !$('#' + el).attr('selected'))) {
			return;
		} else {
			$('#' + el)[0].focus();
		}
	});
}</script>
    </head>

<body id="home_page">
	<div id="header">
		<ul id="nav">
			<li class="menu_home on"><a href="../index.html" accesskey="1">Home</a></li>
			<li><a href="legumes-de-saison.php" accesskey="2">Légumes</a></li>
			<li><a href="fruits-de-saison.php" accesskey="3">Fruits</a></li>
			<li><a href="poissons-de-saison.php" accesskey="4">Poissons</a></li>
			<li><a href="../dietetique-poids-sante.html" accesskey="5">Diététique</a></li>
		</ul>
	</div>
	
	<div id="container">
			<div class="block2">
			<h2 class="ribbon"><span>Newsletter</span></h2>
			<form id="form1" name="form1" class="form_nl" method="post" action="">
			<p>Pour être informer des produits de saison et recevoir des recettes diététiques, inscris toi à la newsletter !</p>
			<div><input type="hidden" name="format" value="1" />
			<input type="hidden" name="liste" value="1" />
			<div class="radio_container">
			<label><input type="radio" name="action" value="inscription" checked="checked" />inscription</label>
			<label><input type="radio" name="action" value="desinscription" />désinscription</label>
			</div>
			<input name="email" type="text"  onclick="javascript:document.form1.email.value='';" value="email" size="18"/>
			<input type="submit" name="Submit" value="Envoyer" />
			</div>
			</form>
			</div>			
					
	</div>
		
		<div id="main">
			<h2 class="ribbon"><span>Informations nutritionnelles des légumes</span></h2>
			<div class="featured"><a class="thumb_container" href="../composition-nutritionnelle-des-legumes.html" rel="nofollow">
			<div id="box_1" >
				<div id="object_1" >
				<img class='_element' style='width:100%;height:100%;border:0;' src='../images/panel-legumes/panel_01.jpg' alt="Légumes frais de saison"></img>
				</div>
				<div id="object_2" >
				<img class='_element' style='width:100%;height:100%;border:0;' src='../images/panel-legumes/panel_02.jpg' alt="Légumes frais de saison"></img>
				</div>
				<div id="object_4" >
				<img class='_element' style='width:100%;height:100%;border:0;' src='../images/panel-legumes/panel_04.jpg' alt="Légumes frais de saison"></img>
				</div>
				<div id="object_3" >
				<img class='_element' style='width:100%;height:100%;border:0;' src='../images/panel-legumes/panel_03.jpg' alt="Légumes frais de saison"></img>
				</div>
				<div id="object_7" >
				<img class='_element' style='width:100%;height:100%;border:0;' src='../images/panel-legumes/panel_07.jpg' alt="Légumes frais de saison"></img>
				</div>
				<div id="object_6" >
				<img class='_element' style='width:100%;height:100%;border:0;' src='../images/panel-legumes/panel_06.jpg' alt="Légumes frais de saison"></img>
				</div>
				<div id="object_8" >
				<img class='_element' style='width:100%;height:100%;border:0;' src='../images/panel-legumes/panel_08.jpg' alt="Légumes frais de saison"></img>
				</div>
				<div id="object_5" >
				<img class='_element' style='width:100%;height:100%;border:0;' src='../images/panel-legumes/panel_05.jpg' alt="Légumes frais de saison"></img>
				</div>
				<div id="object_9" >
				<img class='_element' style='width:100%;height:100%;border:0;' src='../images/panel-legumes/panel_09.jpg' alt="Légumes frais de saison"></img>
				</div>
				<div id="object_12" >
				<img class='_element' style='width:100%;height:100%;border:0;' src='../images/panel-legumes/panel_12.jpg' alt="Légumes frais de saison"></img>
				</div>
				<div id="object_10" >
				<img class='_element' style='width:100%;height:100%;border:0;' src='../images/panel-legumes/panel_10.jpg' alt="Légumes frais de saison"></img>
				</div>
				<div id="object_11" >
				<img class='_element' style='width:100%;height:100%;border:0;' src='../images/panel-legumes/panel_11.jpg' alt="Légumes frais de saison"></img>
				</div>
			</div>
			</a>
			<script type="text/javascript">function play() {jQuery("#object_1").css('opacity', '1.0');jQuery("#object_1").css('width', '75.0px');jQuery("#object_1").css('height', '66.0px');if (!$.browser.msie) if (Modernizr.csstransforms3d)jQuery("#object_1").transform({origin: ['50%', '50%'], translate: ['0px', '0px'], rotate:'0deg', translateZ:'0.0px'}); else jQuery("#object_1").transform({origin: ['50%', '50%'], translate: ['0px', '0px'], rotate:'0deg'});jQuery("#object_2").css('opacity', '1.0');jQuery("#object_2").css('width', '75.0px');jQuery("#object_2").css('height', '66.0px');if (!$.browser.msie) if (Modernizr.csstransforms3d)jQuery("#object_2").transform({origin: ['50%', '50%'], translate: ['0px', '0px'], rotate:'0deg', translateZ:'0.0px'}); else jQuery("#object_2").transform({origin: ['50%', '50%'], translate: ['0px', '0px'], rotate:'0deg'});jQuery("#object_4").css('opacity', '1.0');jQuery("#object_4").css('width', '75.0px');jQuery("#object_4").css('height', '66.0px');if (!$.browser.msie) if (Modernizr.csstransforms3d)jQuery("#object_4").transform({origin: ['50%', '50%'], translate: ['0px', '0px'], rotate:'0deg', translateZ:'0.0px'}); else jQuery("#object_4").transform({origin: ['50%', '50%'], translate: ['0px', '0px'], rotate:'0deg'});jQuery("#object_3").css('opacity', '1.0');jQuery("#object_3").css('width', '75.0px');jQuery("#object_3").css('height', '66.0px');if (!$.browser.msie) if (Modernizr.csstransforms3d)jQuery("#object_3").transform({origin: ['50%', '50%'], translate: ['0px', '0px'], rotate:'0deg', translateZ:'0.0px'}); else jQuery("#object_3").transform({origin: ['50%', '50%'], translate: ['0px', '0px'], rotate:'0deg'});jQuery("#object_7").css('opacity', '1.0');jQuery("#object_7").css('width', '75.0px');jQuery("#object_7").css('height', '69.0px');if (!$.browser.msie) if (Modernizr.csstransforms3d)jQuery("#object_7").transform({origin: ['50%', '50%'], translate: ['0px', '0px'], rotate:'0deg', translateZ:'0.0px'}); else jQuery("#object_7").transform({origin: ['50%', '50%'], translate: ['0px', '0px'], rotate:'0deg'});jQuery("#object_6").css('opacity', '1.0');jQuery("#object_6").css('width', '75.0px');jQuery("#object_6").css('height', '69.0px');if (!$.browser.msie) if (Modernizr.csstransforms3d)jQuery("#object_6").transform({origin: ['50%', '50%'], translate: ['0px', '0px'], rotate:'0deg', translateZ:'0.0px'}); else jQuery("#object_6").transform({origin: ['50%', '50%'], translate: ['0px', '0px'], rotate:'0deg'});jQuery("#object_8").css('opacity', '1.0');jQuery("#object_8").css('width', '75.0px');jQuery("#object_8").css('height', '69.0px');if (!$.browser.msie) if (Modernizr.csstransforms3d)jQuery("#object_8").transform({origin: ['50%', '50%'], translate: ['0px', '0px'], rotate:'0deg', translateZ:'0.0px'}); else jQuery("#object_8").transform({origin: ['50%', '50%'], translate: ['0px', '0px'], rotate:'0deg'});jQuery("#object_5").css('opacity', '1.0');jQuery("#object_5").css('width', '75.0px');jQuery("#object_5").css('height', '69.0px');if (!$.browser.msie) if (Modernizr.csstransforms3d)jQuery("#object_5").transform({origin: ['50%', '50%'], translate: ['0px', '0px'], rotate:'0deg', translateZ:'0.0px'}); else jQuery("#object_5").transform({origin: ['50%', '50%'], translate: ['0px', '0px'], rotate:'0deg'});jQuery("#object_9").css('opacity', '1.0');jQuery("#object_9").css('width', '75.0px');jQuery("#object_9").css('height', '65.0px');if (!$.browser.msie) if (Modernizr.csstransforms3d)jQuery("#object_9").transform({origin: ['50%', '50%'], translate: ['0px', '0px'], rotate:'0deg', translateZ:'0.0px'}); else jQuery("#object_9").transform({origin: ['50%', '50%'], translate: ['0px', '0px'], rotate:'0deg'});jQuery("#object_12").css('opacity', '1.0');jQuery("#object_12").css('width', '75.0px');jQuery("#object_12").css('height', '65.0px');if (!$.browser.msie) if (Modernizr.csstransforms3d)jQuery("#object_12").transform({origin: ['50%', '50%'], translate: ['0px', '0px'], rotate:'0deg', translateZ:'0.0px'}); else jQuery("#object_12").transform({origin: ['50%', '50%'], translate: ['0px', '0px'], rotate:'0deg'});jQuery("#object_10").css('opacity', '1.0');jQuery("#object_10").css('width', '75.0px');jQuery("#object_10").css('height', '65.0px');if (!$.browser.msie) if (Modernizr.csstransforms3d)jQuery("#object_10").transform({origin: ['50%', '50%'], translate: ['0px', '0px'], rotate:'0deg', translateZ:'0.0px'}); else jQuery("#object_10").transform({origin: ['50%', '50%'], translate: ['0px', '0px'], rotate:'0deg'});jQuery("#object_11").css('opacity', '1.0');jQuery("#object_11").css('width', '75.0px');jQuery("#object_11").css('height', '65.0px');if (!$.browser.msie) if (Modernizr.csstransforms3d)jQuery("#object_11").transform({origin: ['50%', '50%'], translate: ['0px', '0px'], rotate:'0deg', translateZ:'0.0px'}); else jQuery("#object_11").transform({origin: ['50%', '50%'], translate: ['0px', '0px'], rotate:'0deg'});jQuery("#box_1").css('opacity', '1.0');jQuery("#box_1").css('width', '300.0px');jQuery("#box_1").css('height', '203.0px');if (!$.browser.msie) if (Modernizr.csstransforms3d)jQuery("#box_1").transform({origin: ['50%', '50%'], translate: ['0px', '0px'], rotate:'0deg', translateZ:'0.0px'}); else jQuery("#box_1").transform({origin: ['50%', '50%'], translate: ['0px', '0px'], rotate:'0deg'});var delay_object_1_1 = function() {jQuery("#object_1").stop().animate({scale:['0.75','0.75'],opacity:'0.8',opacity:'0.8'}, 1500, 'easeInOutExpo', function() {jQuery("#object_1").animate({scale:['1.0','1.0'],opacity:'1.0',opacity:'1.0'}, 1500, 'easeInOutExpo');});};setTimeout(delay_object_1_1, 1400);var delay_object_2_1 = function() {jQuery("#object_2").stop().animate({scale:['0.75','0.75'],opacity:'0.9',opacity:'0.9'}, 1500, 'easeInOutExpo', function() {jQuery("#object_2").animate({scale:['1.0','1.0'],opacity:'1.0',opacity:'1.0'}, 1500, 'easeInOutExpo');});};setTimeout(delay_object_2_1, 1600);var delay_object_4_1 = function() {jQuery("#object_4").stop().animate({scale:['0.75','0.75'],opacity:'0.9',opacity:'0.9'}, 1500, 'easeInOutExpo', function() {jQuery("#object_4").animate({scale:['1.0','1.0'],opacity:'1.0',opacity:'1.0'}, 1500, 'easeInOutExpo');});};setTimeout(delay_object_4_1, 2000);var delay_object_3_1 = function() {jQuery("#object_3").stop().animate({scale:['0.75','0.75'],opacity:'0.9',opacity:'0.9'}, 1500, 'easeInOutExpo', function() {jQuery("#object_3").animate({scale:['1.0','1.0'],opacity:'1.0',opacity:'1.0'}, 1500, 'easeInOutExpo');});};setTimeout(delay_object_3_1, 1800);var delay_object_7_1 = function() {jQuery("#object_7").stop().animate({scale:['0.75','0.75'],opacity:'0.9',opacity:'0.9'}, 1500, 'easeInOutExpo', function() {jQuery("#object_7").animate({scale:['1.0','1.0'],opacity:'1.0',opacity:'1.0'}, 1500, 'easeInOutExpo');});};setTimeout(delay_object_7_1, 1600);var delay_object_6_1 = function() {jQuery("#object_6").stop().animate({scale:['0.75','0.75'],opacity:'0.9',opacity:'0.9'}, 1500, 'easeInOutExpo', function() {jQuery("#object_6").animate({scale:['1.0','1.0'],opacity:'1.0',opacity:'1.0'}, 1500, 'easeInOutExpo');});};setTimeout(delay_object_6_1, 1400);var delay_object_8_1 = function() {jQuery("#object_8").stop().animate({scale:['0.75','0.75'],opacity:'0.9',opacity:'0.9'}, 1500, 'easeInOutExpo', function() {jQuery("#object_8").animate({scale:['1.0','1.0'],opacity:'1.0',opacity:'1.0'}, 1500, 'easeInOutExpo');});};setTimeout(delay_object_8_1, 1800);var delay_object_5_1 = function() {jQuery("#object_5").stop().animate({scale:['0.75','0.75'],opacity:'0.9',opacity:'0.9'}, 1500, 'easeInOutExpo', function() {jQuery("#object_5").animate({scale:['1.0','1.0'],opacity:'1.0',opacity:'1.0'}, 1500, 'easeInOutExpo');});};setTimeout(delay_object_5_1, 1200);var delay_object_9_1 = function() {jQuery("#object_9").stop().animate({scale:['0.75','0.75'],opacity:'0.9',opacity:'0.9'}, 1500, 'easeInOutExpo', function() {jQuery("#object_9").animate({scale:['1.0','1.0'],opacity:'1.0',opacity:'1.0'}, 1500, 'easeInOutExpo');});};setTimeout(delay_object_9_1, 1000);var delay_object_12_1 = function() {jQuery("#object_12").stop().animate({scale:['0.75','0.75'],opacity:'0.9',opacity:'0.9'}, 1500, 'easeInOutExpo', function() {jQuery("#object_12").animate({scale:['1.0','1.0'],opacity:'1.0',opacity:'1.0'}, 1500, 'easeInOutExpo');});};setTimeout(delay_object_12_1, 1600);var delay_object_10_1 = function() {jQuery("#object_10").stop().animate({scale:['0.75','0.75'],opacity:'0.9',opacity:'0.9'}, 1500, 'easeInOutExpo', function() {jQuery("#object_10").animate({scale:['1.0','1.0'],opacity:'1.0',opacity:'1.0'}, 1500, 'easeInOutExpo');});};setTimeout(delay_object_10_1, 1200);var delay_object_11_1 = function() {jQuery("#object_11").stop().animate({scale:['0.75','0.75'],opacity:'0.9',opacity:'0.9'}, 1500, 'easeInOutExpo', function() {jQuery("#object_11").animate({scale:['1.0','1.0'],opacity:'1.0',opacity:'1.0'}, 1500, 'easeInOutExpo');});};setTimeout(delay_object_11_1, 1400);}jQuery(document).ready(function(){play();});</script>			

			<h3 class="title"><a href="../composition-nutritionnelle-des-legumes.html">Vitamines, minéraux et fibres</a></h3>
			<p>[...]Puis arrive The Roots qui commence par rendre hommage à Chuck Brown et Adam Yauch aka MCA (Beastie Boys )&nbsp;[...]</p>
			<a class="more" href="../composition-nutritionnelle-des-legumes.html" title="Composition nutritionnelle des légumes" rel="nofollow">Lire la suite</a>
			</div>
			
			<div class="featured"><a class="thumb_container" href="../information-nutritionnelle-des-legumes.html" rel="nofollow"><img class="thumb" src="../images/nutrition-legumes-frais.jpg" alt="Légumes frais de saison" /></a>
			<h3 class="title"><a href="../information-nutritionnelle-des-legumes.html">Rôles des légumes dans l'organisme</a></h3>
			<a class="more" href="../information-nutritionnelle-des-legumes.html" title="Rôle des légumes dans l'organisme et intérêts sur la santé" rel="nofollow">Lire la suite</a>
			</div>
		
		<a name="legumes"></a>
			<h2 class="ribbon"><span>Calendriers des légumes de saison</span></h2>
			<div id="entry_0" class="entry_prev odd">
			<img class="thumb" src="../images/ban-rge.png" />
			<h3 class="title rge">
			<input id="select-type-1" name="radio-set-1" type="radio" class="ff-selector-type-1" />
				<label for="select-type-1" class="ff-label-type-1" onclick="">Printemps</label></h3></div>
			<div id="entry_1" class="entry_prev even">
			<img class="thumb" src="../images/ban-org.png" />
			<h3 class="title org">
			<input id="select-type-2" name="radio-set-1" type="radio" class="ff-selector-type-2" />
				<label for="select-type-2" class="ff-label-type-2" onclick="">Eté</label></h3></div>
			<div id="entry_2" class="entry_prev odd">
			<img class="thumb" src="../images/ban-vrt.png" />
			<h3 class="title vrt"><input id="select-type-3" name="radio-set-1" type="radio" class="ff-selector-type-3" />
				<label for="select-type-3" class="ff-label-type-3" onclick="">Automne</label></h3></div>
			<div id="entry_3" class="entry_prev even">
			<img class="thumb" src="../images/ban-blc.png" />
			<h3 class="title blc"><input id="select-type-4" name="radio-set-1" type="radio" class="ff-selector-type-4" />
				<label for="select-type-4" class="ff-label-type-4" onclick="">Hiver</label></h3></div>
		
<?php 

// Déclaration des paramètres de connexion
$host = "localhost";
$user = "root";
$passwd = "";

$con=mysql_connect($host, $user,$passwd) or die("erreur de connexion au serveur");

$bdd = mysql_select_db("eat-to-season", $con) or die("erreur de connexion a la base de donnees");

$res = mysql_query("SELECT * FROM `liste-legumes`") or die(mysql_error());

// Recuperation des resultats
echo "		<section class='ff-container'><ul class='ff-items'>";
while($row = mysql_fetch_array($res)){
	echo "<li><a href='".$row['id_legumes']."/'><span>".$row['noms']."</span> <img alt=".$row['noms']." src='".$row['image']."' /></a></li>";
}
echo "</ul></section>";
// Deconnexion de la base de donnees
mysql_close();

?>		
				
		<h2 class="ribbon"><span>Recettes à base de légumes de saison</span></h2>
		</div>

		<!-- /Fin #Main -->
&#65279;
	</div>
    </body>
</html>


le second fichier

<!DOCTYPE html>
<html lang="fr">
    <head>
		<meta charset="UTF-8" />
        <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1"> 
        <title>Bien manger selon les saisons, bien choisir ses légumes de saison</title>
        <meta name="viewport" content="width=device-width; initial-scale=1.0; maximum-scale=1.0; user-scalable=1;"> 
        <meta name="description" content="Bien choisir ses légumes de saison, c'est s'assuré d'avoir un produit frais et de qualité au meilleur prix. Manger 5 fruits et légumes par jour." />
        <meta name="keywords" content="légume, légumineuse, bulbe, saison, prix, qualité, légumes de saison, légume frais, champignon, bien manger, diététique, végétarien, végétalien, fibres" />
        <meta name="author" content="D.GUYONNET" />
		<meta name="geo.placename" content="France,Belgium,Canada,United Kingdom,United States" />
		<meta name="geo.region" content="FR,GB,CA,BE,US" />
		<META name="robots" content="ALL" />
		<META name="revisit-after" content="3 days" />
        <link rel="stylesheet" type="text/css" href="../../css/screen.css" />
        <link rel="stylesheet" type="text/css" href="../../css/styles.css" />
		<meta name="identifier-url" content="http://www.bien-anger-selon-les-saisons.com/fiche-produit.php" /> 
		<script type="text/javascript" src="js/modernizr.custom.29473.js"></script>
		<script type="text/javascript">
  window.___gcfg = {lang: 'fr'};

  (function() {
    var po = document.createElement('script'); po.type = 'text/javascript'; po.async = true;
    po.src = 'https://apis.google.com/js/plusone.js';
    var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(po, s);
  })();
</script>
    </head>
	
<body id="home_page">
	<div id="header">
		<h1><a href="http://www.bien-manger-selon-les-saisons.com/" rel="home" id="logo"><img src="../../images/logo_bien-manger-de-saison.png" alt="Bien manger selon les saisons, c'est opter pour la qualité" /></a></h1>
		<ul id="nav">
			<li class="menu_home on"><a href="../../index.html" accesskey="1">Home</a></li>
			<li><a href="../legumes-de-saison.php" accesskey="2">Légumes</a></li>
			<li><a href="../fruits-de-saison.php" accesskey="3">Fruits</a></li>
			<li><a href="../poissons-de-saison.php" accesskey="4">Poissons</a></li>
			<li><a href="../../dietetique-poids-sante.html" accesskey="5">Diététique</a></li>
		</ul>
		<ul class="social_links">
			<li class="fb"><a href="http://www.facebook.com/BienMangerSelonLesSaisons" title="Deviens &quot;fan&quot; de Manger selon les saisons sur Facebook!"></a></li>
			<li class="google"><a href="https://plus.google.com/105864725076220967625/" title="Deviens &quot;fan&quot; de Manger selon les saisons sur Google+"></a></li>
			<li class="twitter"><a href="https://twitter.com/Eatingwithseaso" title="Deviens &quot;fan&quot; de Manger selon les saisons sur Twitter"></a></li>
		</ul>
	</div>
	
	<div id="container">
		<div id="sidebar">
			<div class="block1">
				<h2><span>Bienvenue sur Bien-manger-selon-les-saisons.com !</span></h2>
				<p>Ce site s'adresse à tous ceux qui aiment manger et cuisiner de bon produits frais, et plus particulièrement des fruits, des légumes, des légumes secs, des champignons, des poissons et des crustacés. Choisir un aliment de saison, c'est s'assurer d'avoir un produit de meilleur qualité au meilleur prix.</p>
				<p lang="en"><em>Welcom to Bien-manger-selon-les-saisons.com, this site is dedicated to seasonal foods and healthy recipes.</em></p>
			</div>
					
			<div class="block2">
			<h2 class="ribbon"><span>Newsletter</span></h2>
			<form id="form1" name="form1" class="form_nl" method="post" action="">
			<p>Pour être informer des produits de saison et recevoir des recettes diététiques, inscris toi à la newsletter !</p>
			<div><input type="hidden" name="format" value="1" />
			<input type="hidden" name="liste" value="1" />
			<div class="radio_container">
			<label><input type="radio" name="action" value="inscription" checked="checked" />inscription</label>
			<label><input type="radio" name="action" value="desinscription" />désinscription</label>
			</div>
			<input name="email" type="text"  onclick="javascript:document.form1.email.value='';" value="email" size="18"/>
			<input type="submit" name="Submit" value="Envoyer" />
			</div>
			</form>
			</div>			
			
			<div id="ban-block" class="pub">
			<script type="text/javascript"><!--
			google_ad_client = "ca-pub-8634071726964693";
			/* pub droite legumes */
			google_ad_slot = "6605330130";
			google_ad_width = 300;
			google_ad_height = 250;
			//-->
			</script>
			<script type="text/javascript"
			src="http://pagead2.googlesyndication.com/pagead/show_ads.js">
			</script>
			</div>					

	
			<div id="partners" class="block2">
			<h2 class="ribbon"><span>Partenaire</span></h2>
			<ul class="logo_list">
			<li><a href="http://www.dieteticien-nutritionniste-sante.com"><img src="../../images/logo-dieteticien-nustritionniste-sante.png" alt="Diététicien Nutritionniste Santé" /></a></li>
			</ul>
			</div>


		</div>
		
		<div id="main">
		<p><b><a href="../legumes-de-saison.php#legumes">Retour à la liste des légumes de saisons</a></b></p>		
<?php 

// Déclaration des paramètres de connexion
$host = "localhost";
$user = "root";
$passwd  = "";

// Connexion au serveur
$con=mysql_connect($host,$user,$passwd) or die("erreur de connexion au serveur");

$bdd = mysql_select_db("eat-to-season", $con) or die("erreur de connexion a la base de donnees");

$id=$_GET['id_legumes'];

// Creation et envoi de la requete
$res = mysql_query("SELECT * FROM `liste-legumes` WHERE id_legumes='".$id."' ") or die(mysql_error());

while($rows = mysql_fetch_array($res)){
         // Tu génères ta page avec les données.
		 
// Deconnexion de la base de donnees
?>	

			<h2 class="ribbon"><span>Tout sur <?php echo $rows['particule'] ?> 
<?php	if (isset($rows['noms']))
	{
	echo $rows['noms']."</span></h2>";
	}
	else // Il manque des paramètres, on avertit le visiteur
	{
		echo "Ce légume n\'éxiste pas!";
	}
?>
			<div class="featured">
			<img width="60%" src="../<?php echo $rows['image'] ?>"/>
			</div>
			
			<div class="featured">
			<h3 class="title">Informations sur le produit</h3>
			<p><b>Nom anglais :</b> <?php echo $rows['name'] ?></p>
			<p><b>Saison (s) : <?php echo $rows['saison'] ?></b></p>
			<p><b>A consommer de préférence entre :</b> <?php echo $rows['mois_debut'] ?> à <?php echo $rows['mois_fin'] ?></p>
			<p><b>Provenances :</b> <?php echo $rows['provenance'] ?></p>
			<p><b>Variétées :</b> <?php echo $rows['varietees'] ?></p>
			<p><b>Couleur :</b> <?php echo $rows['couleurs'] ?></p>
			<a href="../../dietetique-poids-sante.html" accesskey="5" class="more"><i>découvrez toutes les informations liées aux couleurs.</i></a>
			<p>&nbsp;</p>
			</div>
			
			<div class="featured">
			<h3 class="title">Valeurs nutritionnelles : <?php echo $rows['noms'] ?></h3>
			<aside class="nutrition">
			<p><b>Protéines :</b> <?php echo $rows['proteines'] ?> g</p>
			<p><b>Lipides :</b> <?php echo $rows['lipides'] ?> g</p>
			<p><b>Glucides :</b> <?php echo $rows['glucides'] ?> g</p>
			<p><b>Calories :</b> <?php echo $rows['calories'] ?> kcal</p>
			<p><b>Fibres :</b> <?php echo $rows['fibres'] ?> g</p>
			<p><i>Valeurs pour 100g</i><br>Source ANSES Ciqual 2012 (Fr), Fichier Canadien 2010, Nubel (Be)</p>
			</aside>
			</div>
					
			<h2 class="ribbon"><span>Choisir et conserver</span></h2>
			<div class="featured">
			<h3 class="title">Nos conseils pour vos achats</h3>
			<p><?php echo $rows['conseil_achat'] ?></p>
			</div>

	        <div class="featured">
			<h3 class="title">Comment conserver <?php echo $rows['particule'] ?> <?php echo $rows['noms'] ?></h3>
			<p><?php echo $rows['conservation'] ?></p>
			</div>
		
			<h2 class="ribbon"><span>Idées recettes : <?php echo $rows['particule'] ?> <?php echo $rows['noms'] ?> dans tous ses états</span></h2>
			<div>
			<p><?php echo $rows['recettes_preconisees'] ?></p>
			<p>en cours de rédaction</p>
			</div>
		<?php } 
		
		mysql_close();
		?>
		</div>
&#65279;	
</div>
	
    </body>
</html>
Modérateur
Salut en regardant tes fichiers, je ne vois rien de spécial. Mon editeur hexa ne m'a pas sorti des BOM.

Je pense que tu devrais réencoder tes fichiers en UTF-8 sans BOM. (Avant de le faire, sauvegarde les, on sait jamais, à moins que tu utilises un GIT ou SVN)

comment taper ces fameuses commandes dans mysql. Tu as plusieurs solutions :

- phpmyadmin -> onglet sql dans ta base de données :
http://imageshack.us/a/img809/8914/pmap.png
ou
- ouvrir un shell/terminal
- taper :

mysql -h localhost -u MonLoginUser -p

* si tu es sur vindoz (windows) et sous WAMP, le 'MonLoginUser' sera 'root'
- taper ensuite le mot de passe demandé. * si tu es sur vindoz (windows) et sous WAMP, le mot de passe sera rien et il faut juste appuyer sur entré

normalement, tu devrais avoir un truc comme cela :
http://imageshack.us/a/img23/5219/mysqlconnect.png

- Si c'est bien cela, tu tapes ceci :

SHOW DATABASES;

- puis valides ta saisie en faisant entré
- normalement il y a la liste des bases de données que tu as

- Si c'est bien cela, tu tapes ceci :

USE MaBaseDeDonneesAProblemeDencodage;

- puis valides ta saisie en faisant entré
- tu rentres les commandes que je t'ai mentionné en haut
- tu sélectionnes le contenu généré, tu copies et tu colles le résultat sur le forum
Modifié par niuxe (02 Oct 2012 - 20:19)
niuxe a écrit :
Salut en regardant tes fichiers, je ne vois rien de spécial. Mon editeur hexa ne m'a pas sorti des BOM.

Je pense que tu devrais réencoder tes fichiers en UTF-8 sans BOM. (Avant de le faire, sauvegarde les, on sait jamais, à moins que tu utilises un GIT ou SVN)


J'avais déjà réencoder mes fichiers en utf-8 sans bom, mais je rencontre toujours ce problème d'affichage

Sous wamp, j'ai bien réussi a afficher la liste des bases de données en inscrivant

SHOW DATABASES;


puis j'ai écris

USE eat-to-season;


MAIS j'ai une erreur #1064- You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '-to-season' at line 1

j'ai ensuite essayé de cette manière

USE `eat-to-season`;

et ça m'a remis sur la page d’accueil de phpmyadmin, mais ça ne m'a rien indiqué
Modérateur
On va faire autrement.

En utilisant PHPmyadmin :

- Peux tu regarder la structure de ta base de données en vérifiant que tu es bien en utf8_general_ci ?
http://imageshack.us/a/img542/9637/capturedatabase.png

- Peux tu regarder la structure de ta table à problème en vérifiant que tu es bien en utf8_general_ci ?
http://imageshack.us/a/img62/5073/capturestructuretable.png

<<<EDIT
Pour ton souci d'erreur 1064, j'ai eu le même souci (je voulais supprimer une base). 2tant donné que cette dernière avait des traits d'union, la requête avait échoué. J'ai dû passé par un autre outil (mysql query browser). Je pense que tu as rencontré le même problème que moi.
EDIT;
Modifié par niuxe (03 Oct 2012 - 00:35)
niuxe a écrit :

- Peux tu regarder la structure de ta base de données en vérifiant que tu es bien en utf8_general_ci ?

Je suis bien en utf8_general_ci


niuxe a écrit :

- Peux tu regarder la structure de ta table à problème en vérifiant que tu es bien en utf8_general_ci ?

OUI, je suis en utf8_general_ci


upload/40410-Sans-titre.jpg
dafid5 a écrit :
OUI, je suis en utf8_general_ci


Sur les forums, les majuscules sont interprétés comme une élévation du ton, si tu cri sur ceux qui t'aident, ça risque de ne pas durer longtemps...

Pour ton problème:

L'encodage interviens à plusieurs niveaux:

- Encodage des fichiers
- Meta charset
- Encodage des requêtes
- Encodage de la base de donnée

les problèmes arrivent quand l'un des 4 n'est pas conforme aux autres.

Vérifie que :
- Tes fichiers soit tous bien encodés en utf8 ( les includes de fichiers utf8 dans des fichiers iso provoquent ce genre d'erreur)
- Ton meta charset est bien utf8 partout (les pages d'affichage comme les pages d'insertion)
- Tes requêtes sont bien passées en UTF8 (SET NAMES 'utf8')
- Ta base de donnée est bien en utf8 (ça je pense avoir compris que c'était bon Smiley lol )

Si les caractéres accentués dans ta BDD sont bien affichés, l'erreur est probablement due a l'affichage et vice versa.
Modifié par JJK801 (03 Oct 2012 - 09:41)
JJK801 a écrit :


Sur les forums, les majuscules sont interprétés comme une élévation du ton, si tu cri sur ceux qui t'aident, ça risque de ne pas durer longtemps...


désolé, je ne le savais pas !

JJK801 a écrit :

Pour ton problème:
L'encodage interviens à plusieurs niveaux:
- Encodage des fichiers
- Meta charset
- Encodage des requêtes
- Encodage de la base de donnée

les problèmes arrivent quand l'un des 4 n'est pas conforme aux autres.

Vérifie que :
- Tes fichiers soit tous bien encodés en utf8 ( les includes de fichiers utf8 dans des fichiers iso provoquent ce genre d'erreur)
- Ton meta charset est bien utf8 partout (les pages d'affichage comme les pages d'insertion)
- Tes requêtes sont bien passées en UTF8 (SET NAMES 'utf8')
- Ta base de donnée est bien en utf8 (ça je pense avoir compris que c'était bon Smiley lol )


alors pour ton premier tiret, l'encodage est bien en utf8, le meta charset est également bien, la base de donnée aussi, il n'y a que mes requetes ou je n'ai pas précisé set names 'utf8' !!

Comment dois-je m'y prendre pour intégrer ce code ?
<?php 

// Déclaration des paramètres de connexion
$host = "localhost";
$user = "root";
$passwd = "";

try
{
  $bdd = new PDO("mysql:host=$host;dbname=eat-to-season", $user, $passwd, array (PDO::MYSQL_ATTR_INIT_COMMAND => "SET NAMES utf8"));
}
catch (Exception $e)
{
  die('Erreur : ' . $e->getMessage());
}

$query = "SELECT * FROM `liste-legumes`";
?>

<section class="ff-container">
  <ul class="ff-items">
  <?php
  // Recuperation des resultats
  foreach($bdd->query($query) as $row)
  {
  ?>
    <li>
      <a href="<?php echo $row['id_legumes']; ?>">
        <span><?php echo $row['noms']; ?></span>
        <img alt="<?php echo $row['noms']; ?>" src="<?php echo $row['image']; ?>" />
      </a>
    </li>
   <?php
   }
   ?>
   </ul>
</section>


Trouve un tuto sur PDO, mysql_query c'est obsolète depuis un bail...

Le script que je t'ai mis là permet de lire les données mais je pense que le probléme à eu lieu a l'insertion, il sera donc également a corriger.
Modifié par JJK801 (03 Oct 2012 - 13:00)
J'ai eu le même problème.

Il suffit de dire au serveur mysql que l'on veut communiquer avec lui en utf8
en ajoutant mysql_query("SET NAMES 'utf8'"); juste après la connexion.

Mysql encode les données qu'il sert ou reçoit, au moment de l'échange. C'est un truc bizarre que je n'ai pas tout à fait compris et qui est expliqué dans la doc mysql sur SET NAMES

$con=mysql_connect($host, $user,$passwd) or die("erreur de connexion au serveur");
mysql_query("SET NAMES 'utf8'");

...
jrl13 a écrit :
C'est un truc bizarre que je n'ai pas tout à fait compris et qui est expliqué dans la doc mysql sur SET NAMES


Pirelli a écrit :
Sans maîtrise la puissance n'est rien.


Faire quelque chose sans le comprendre, ça ne mène nul part, le jour où il faut debugger y a plus personne...
Modifié par JJK801 (03 Oct 2012 - 15:30)
JJK801 a écrit :
&lt;?php 

// Déclaration des paramètres de connexion
$host = &quot;localhost&quot;;
$user = &quot;root&quot;;
$passwd = &quot;&quot;;

try
{
  $bdd = new PDO(&quot;mysql:host=$host;dbname=eat-to-season&quot;, $user, $passwd, array (PDO::MYSQL_ATTR_INIT_COMMAND =&gt; &quot;SET NAMES utf8&quot;));
}
catch (Exception $e)
{
  die('Erreur : ' . $e-&gt;getMessage());
}

$query = &quot;SELECT * FROM `liste-legumes`&quot;;
?&gt;

&lt;section class=&quot;ff-container&quot;&gt;
  &lt;ul class=&quot;ff-items&quot;&gt;
  &lt;?php
  // Recuperation des resultats
  foreach($bdd-&gt;query($query) as $row)
  {
  ?&gt;
    &lt;li&gt;
      &lt;a href=&quot;&lt;?php echo $row['id_legumes']; ?&gt;&quot;&gt;
        &lt;span&gt;&lt;?php echo $row['noms']; ?&gt;&lt;/span&gt;
        &lt;img alt=&quot;&lt;?php echo $row['noms']; ?&gt;&quot; src=&quot;&lt;?php echo $row['image']; ?&gt;&quot; /&gt;
      &lt;/a&gt;
    &lt;/li&gt;
   &lt;?php
   }
   ?&gt;
   &lt;/ul&gt;
&lt;/section&gt;


Trouve un tuto sur PDO, mysql_query c'est obsolète depuis un bail...

Le script que je t'ai mis là permet de lire les données mais je pense que le problème à eu lieu a l'insertion, il sera donc également a corriger.


Bonsoir !

Merci pour ton aide, effectivement les accents apparaissent maintenant que tu m'as fait rajouter la commande set names utf8.

Cette commande est tout le temps obligatoire ?
oui, tant que tu fais de l'utf8, ça permet d'indiquer aux scripts de mysql qu'ils doivent traiter les données comme de l'utf8
Pages :