Rechercher : dans
Par :

Pb balises 'br' et '\' insertion BDD php

Dernière réponse le 18 fév 2009 à 11:50:57 ReMs3007, le 16 fév 2009 à 09:14:28 
 Signaler ce message aux modérateurs

Bonjour à tous,

Voilà donc mon problème assez génant:
J'ai plusieurs champs texte qui permettent de mettre à jour une base de données sous php myadmin. Les données se mettent bien à jour mais à chaque mise à jour des balises <br> et des \ devant les accents s'ajoutent ce qui rend le texte vite illisible:(

Voici donc un extrait de mon code, j'aimerai donc que les balises <br> et \ disparaissent des champs texte.
Merci :)

[code]
<form method="post" action="accueil.php">
<?php
if(isset($_POST['maj'])){
// on se connecte à MySQL
$base = mysql_connect ('chaine connexion');
// requete de MAJ
$sql = 'UPDATE accueil SET titre_accueil=\''.mysql_escape_string($_POST['titre']).'\' , texte_accueil=\''.mysql_escape_string($_POST['text']).'\' WHERE id_accueil= 1';
mysql_query($sql) or die('Erreur SQL !'.$sql.'<br />'.mysql_error());
echo '<font color="green"><b>Page modifiée avec succès!</b></font>';
}
else{
$erreur = '<font color="red"><b>Probleme!!!.</b></font>';
}
?>

<?php
// on se connecte à MySQL
$base = mysql_connect ('chaine connexion');
// on crée la requête SQL
$sql = 'SELECT * FROM accueil';
// on envoie la requête
$req = mysql_query($sql) or die('Erreur SQL !<br>'.$sql.'<br>'.mysql_error());
// on fait une boucle qui va faire un tour pour chaque enregistrement
while($data = mysql_fetch_assoc($req))
{
// on affiche les informations de l'enregistrement en cours
echo '<textarea name="titre" cols="100" rows="1" width="300">'.$data['titre_accueil'].'</textarea><br />';
echo nl2br ('<textarea name="text" id="text" cols="100" rows="10" width="300" >'.$data['texte_accueil'].'</textarea>');
}
?>
/code

Configuration: Windows Vista
Internet Explorer 7.0
Mozilla Firefox 3.0
Google Chrome

Meilleures réponses pour « pb balises 'br' et '\' insertion BDD php » dans :
Référencer un/son site VoirComment référencer un site 1- Renseigner les balises méta 2- Référencer son site 3 - Les logiciels qui peuvent vous aider 4 - Autres liens sur ce sujet 1- Renseigner les balises méta Insérées dans chaque en-tête de page, les metatags...
PHP - Bases de données VoirPhp permet un interfaçage très simple avec un grand nombre de bases de données. Lorsqu'une base de données n'est pas directement supportée par Php, il est possible d'utiliser un driver ODBC, pilote standard pour communiquer avec les bases de...

1

974_Vin's_974, le 16 fév 2009 à 10:03:32

C lorsque tu fais la requete UPDATE qu'il insert les br et / ????

Dséolé puor l'otrhogarphe, arpès tuot on s'enfuo, t'es bein ­capbale de cmoprnedre ça non ??
[' Tu tr0uveras t0uj0urs plus f0rt que t0i ']

Répondre à 974_Vin's_974

2

ReMs3007, le 16 fév 2009 à 13:11:57

Oui c'est lors de l'update qu'il les rajoute.
J'ai remplacé nl2br par

echo str_replace("<br>","\n",('<textarea name="text" id="text" cols="100" rows="10" width="300" >'.$data['texte_accueil'].'</textarea>'));

Maintenant les br ne s'affiche plus mais il y a toujours le problème des ' qui se voit rajouté un \ devant eux :s

Répondre à ReMs3007

3

toto, le 16 fév 2009 à 14:36:49

Bonjour

tu as 2 problèmes distincts.

D'abord, les balise <br>, c'est toi qui les ajoute à l'affichage avec le fonction nl2br. Elle convient pour afficher du HTML, pas le text d'un TEXTAREA. Enlève cette fonction.
Ensuite les \ avant les apostrophes. Puisque tu utilises correctement mysql_escape_string pour enregistrer tes valeurs, c'est qu'il doivent réellement être dans $_POST. Et s'ils sont dans $_POST, c'est probablement que dans ta configuration tu as magic_quotes_gpc actif. Pour récupérer correctement une valeur de POST (ou GET ou COOKIE) dans tous les cas, il faut utiliser ou non un stripslashes selon la valeur de magic_quotes_gpc. Personnellement, j'utilise une fonction pour ça :

function RecupChaine($chaine) {
if (get_magic_quotes_gpc()==1) return stripslashes($chaine); // il y avait magic
return $chaine; // il n'y avait pas magic
}

Dans ma requête pour enregistrer, je mets mysql_real_escape(RecupChaine($_POST['champ']))

Note que les textes déjà entrés dans la base peuvent être corrigés en les relisant, en faisant un stripslashes puis un update

Répondre à toto

4

ReMs3007, le 18 fév 2009 à 09:42:46

Merci beaucoup Toto,
Cependant, il n'accepte pas le nom de ma fonction lors de l'appel :s

Fatal error: Call to undefined function mysql_real_escape()

Une idée?

Répondre à ReMs3007

5

 ReMs3007, le 18 fév 2009 à 11:50:57

C'est Ok çà marche ;)
Merci

voilà, il manquait String ;)
mysql_real_escape_string(RecupChaine($_POST['titre']));

Répondre à ReMs3007
Collection CommentÇaMarche.net