Caractères accentués AJAX et PHP

Said_de_lyon Messages postés 18 Date d'inscription   Statut Membre Dernière intervention   -  
Alain_42 Messages postés 5361 Date d'inscription   Statut Membre Dernière intervention   -
Bonjour,
Le champ titre contient des caractères accentués qui ont été créer à partit de phpMyAdmin.
Mais lorsque que je veux charger un champ titre avec des caractères accentués d'un fichier php dans un tableau (ici : $data_tab_livres), $data_tab_livre[$i]['titre'] est égale à null.
header('Content-type: text/html; charset=iso-8859-1') devrait régler ce problème de compatibilité, mais non.
Pouvez-vous m'aider.
Merci d'avance

Saïd.


Voici mon code :

<script>
$(document).ready(function()
{
pseudo = motdepasse = '';
menu_cookie();
menu_livres();
livres();
gerer_pages_marquees();
menu_pages_marquees();

function menu_livres()
{
$.ajax(
{
type: 'POST',
url: 'ajax_lire_livres.php',
data: {pseudo : pseudo, motdepasse : motdepasse},
dataType: 'json',
success: function(data_tab_livres)
{
if (data_tab_livres == null)
{
$('#data_null').slideDown('slow');
return;
}
}
});
}
});
</script>



fichier : 'ajax_lire_livres.php'
--------------------------------
<?php

header('Content-type: text/html; charset=iso-8859-1');

$hostname = "db123456789.db.ccm.com";

$database = "db123456789";

$username = "dbo123456789";

$password = "MonMotDePasse";

$bdd = mysqli_connect("$hostname", "$username", "$password", "$database");

if (! $bdd)   {die ('Erreur: '. mysqli_error()); }

$pseudo = $_POST['pseudo'];
$motdepasse = $_POST['motdepasse'];
$oui = 'Oui';
$i = 0;
$data_tab_livres = array();

$reponse = mysqli_prepare($bdd,'SELECT id, titre FROM marque_page 
        RIGHT JOIN livre ON marque_page.id = livre.id_livre
        WHERE pseudo=? AND motdepasse=? AND pagemarquee=? ORDER BY id');

mysqli_stmt_bind_param($reponse, 'sss', $pseudo, $motdepasse, $oui);
mysqli_stmt_execute($reponse);
mysqli_stmt_bind_result($reponse, $id, $titre);


while (mysqli_stmt_fetch($reponse))
{
 $i++;
 $data_tab_livres[$i] = array('id' => $id , 'titre' => $titre);
 if ($data_tab_livres[$i]['id'] == $data_tab_livres[$i-1]['id'])  { array_pop($data_tab_livres);  $i--;  }
}

mysqli_stmt_close($reponse);

echo json_encode($data_tab_livres);
?>


EDIT : Les infos Hosts, Data, User et Password ont été modifiées par la modération
A voir également:

2 réponses

Utilisateur anonyme
 
Bonjour,

Essayez de remplacer vos caractères accentués par des entités html ou modifier l'interclassement au niveau de la base de données (mettre uft8_general_ci).

Cdt.
0
Alain_42 Messages postés 5361 Date d'inscription   Statut Membre Dernière intervention   894
 
Jquery Ajax envoie les données vers le script php en utf8
donc si tu BDD n'est pas en utf8 il faut passer par utf8_decode() pour faire tes WHERE
0