Données SQL

Répondre
zOy
le 18/04/2008 à 19:35
zOy
Bonjour à tous, j'ai un editeur WYSIWYNG et lorsque j'enregistre ce texte :

Face à la Méditerranée, la Tunisie bénéficie d'un climat tempéré et ensoleillé, idéal pour rompre avec la grisaille quotidienne des grandes villes européennes. Le nord du Pays, pluvieux en hiver, propose des paysages verdoyants de prairies et de forêts tandis que le centre, moins pluvieux, est formé de steppes et d'oliveraies. Le sud, très sec, propose un paysage désertique avec des oasis éparpillées dans le grand Sahara.


il s'affiche dans ce format (dans phpMyAdmin) :

Face à la Méditerranée, la Tunisie bénéficie d'un climat tempéré et ensoleillé, idéal pour rompre avec la grisaille quotidienne des grandes villes européennes. Le nord du Pays, pluvieux en hiver, propose des paysages verdoyants de prairies et de forêts tandis que le centre, moins pluvieux, est formé de steppes et d'oliveraies. Le sud, très sec, propose un paysage désertique avec des oasis éparpillées dans le grand Sahara.


voiçi ma requete php
<? 
include 'config.php';
$select = 'SELECT situation FROM tunisie';
$req = mysql_query($select) or die('Erreur SQL !<br />'.$sql.'<br />'.mysql_error());
$data = mysql_fetch_array($req);
// lancement de la requête
$sql = 'UPDATE tunisie SET situation="'.$_POST['comments'].'"';

// on exécute la requête (mysql_query) et on affiche un message au cas où la requête ne se passait pas bien (or die)
mysql_query($sql) or die('Erreur SQL !'.$sql.'<br />'.mysql_error());

// on ferme la connexion à la base
mysql_close();

header("Location: modif-pages_ok.php");
?>
Blue Star Investment
Keika
le 19/04/2008 à 03:37
Keika
Quel est le soucis si ca s'affiche comme ca dans phpmyadmin ? tu dois avoir un mysql_escape_real_string, et ca donne ca dans la bdd, pour la proteger, mais normalement a l'affichage HTML ca passe correctement...

Et je ne comprends pas pourquoi tu vas chercher des infos en bdd et que juste derriere tu fais une mise a jour sans ID ni rien... Tu ne te sers pas de ta premiere requete....
Le PHP --> C'est dur !
LA GLOBULE
le 19/04/2008 à 11:40
LA GLOBULE
Non, ce n'est pas un problème d'escape qui fait que pma affiche cela.

D'ailleurs, notre ami n'escape pas les données de sa requete SQL : zOy tu dois utiliser la fonction mysql_real_escape_string.

Ensuite, pour les caractères louches, zOy, il faut comprendre un truc : phpmyadmin, c'est de la merde, ca bug tout le temps, et ce n'est pas parce que tu vois des trucs louches en base via pma que les trucs louchent existent vraiment en base. pma m'a énormément "gonflé" car il ne sait pas bien gérer tout ce qui encodage de caractères.

La vraie question est : quand tu affiches les données sur ton site, est ce que tu vois toujours ces caractères louches ?

Si oui, pour déboguer ce genre de truc, il faut procéder ainsi :
- si ce n'est pas déjà fait, choisir un encodage de caractères pour ton site (ISO-8859-1, UTF-8, etc...)
- configurer ton éditeur de texte pour écrire tes pages PHP / HTML avec cet encodage
- définir l'encodage interne utilisé par PHP (donc celui que tu as choisis) grâce aux fonctions iconv
- utiliser cet encodage de caractères via la fonction header lorsque tu génères du HTML avec PHP (ex : header('Content-Type: text/html; charset=utf-8');)
- lors de la connexion au serveur MySQL, définir l'encodage pour le dialogue qui va suivre en lancant une requete SQL du genre : "SET CHARACTER SET utf8".

Attention, si tu choisis un encodage de caractères multi-octets (typiquement unicode, utf-8 & co), les fonctions de chaines de caractères de PHP comme strlen ou substr ne seront pas compatibles avec cet encodage, il te faudra utiliser les fonctions mbstring.
Répondre

Ecrire un message

Votre message vient d'être créé avec succès.
LoadingChargement en cours