Problème d'apostrophe

Résolu/Fermé
vermich89 Messages postés 63 Date d'inscription lundi 20 août 2012 Statut Membre Dernière intervention 19 mars 2015 - 5 juil. 2013 à 09:08
vermich89 Messages postés 63 Date d'inscription lundi 20 août 2012 Statut Membre Dernière intervention 19 mars 2015 - 5 juil. 2013 à 14:44
Bonjour à tous,

Je tiens déjà a préciser que j'ai bien vu les centaines de messages concernant ce problème mais pourtant impossible de trouver une solution au mien depuis hier soir. Je m'en remet donc à vous pour trouver ce qui ne va pas.

J'ai crée un tableau dans lequel des input permettent d'enregistrer une adresse, un code postal et une ville. dans ces input je remonte la valeur actuelle en base.

jusque là tout marche et tout va pour le mieux.

Le problème arrive lorsque je veux enregistré des valeurs avec apostrophe.

premier problème, une adresse nommé "l'histoire" par exemple s'enregistre en base en 'l'histoire" mais s'affiche dans le tableau en "l"

j'ai alors tenté pas mal de fonction php mais a part transformer "l" en "l\" j'ai pas obtenu grand chose.

mais ce qui me rend fou c'est que pour la valeur de la ville qui utilise exactement le même script si j'écris "l'histoire" je n'enregistre que "l" en base et vous vous doutez de l'affichage.

j'aurais besoin donc de votre aide pour sortir de cette galère.

Merci d'avance à tous.

ps voici l'enregistrement et l'affichage:



[...]

  $i=0;
	while ($rows = mysql_fetch_array($resultat)){
		
		$address1 = $rows['address1'];
		$address2 = $rows['address2'];
		$postcode = $rows['postcode'];
		$city = $rows['city'];

$html .= "<td align=center bgcolor='#DCDCDC'><input type='text' font='verdana' name='address1[$i]' value='$address1' /></td>";
$html .= "<td align=center bgcolor='#DCDCDC'><input type='text' font='verdana' name='address2[$i]' value='$address2' /></td>";
$html .= "<td align=center bgcolor='#DCDCDC'><input type='text' font='verdana' name='postcode[$i]' value='$postcode' /></td>";
$html .= "<td align=center bgcolor='#DCDCDC'><input type='text' font='verdana' name='city[$i]' value='$city' /></td>";

[...]


[...]

$address1 =$_POST['address1'][$i];
			$address2 =$_POST['address2'][$i];
			$postcode =$_POST['postcode'][$i];
			$city =$_POST['city'][$i];
			$select = "SELECT * FROM ps_group_lang where ID='$id_group'";
			$result = mysql_query($select);
			$recup_valeurs=mysql_fetch_array($result);
			mysql_query("UPDATE ps_group_lang SET code='$code', address1='$address1', address2='$address2', postcode='$postcode', city='$city' WHERE id_group='$id_group'");

[...]



7 réponses

Alming Messages postés 60 Date d'inscription dimanche 30 juin 2013 Statut Membre Dernière intervention 20 juillet 2013 16
5 juil. 2013 à 10:06
Essaye d'utiliser la fonction htmlspecialchars en lui ajoutant flags :

$address1 = htmlspecialchars($_POST['address1'][$i], ENT_QUOTES);
$address2 = htmlspecialchars($_POST['address2'][$i], ENT_QUOTES);
$postcode = $_POST['postcode'][$i];
$city = htmlspecialchars($_POST['city'][$i], ENT_QUOTES);

$select = "SELECT * FROM ps_group_lang where ID='$id_group'";
$result = mysql_query($select);
$recup_valeurs=mysql_fetch_array($result);

mysql_query("UPDATE ps_group_lang SET code='$code', address1='$address1', address2='$address2', postcode='$postcode', city='$city' WHERE id_group='$id_group'");

1
vermich89 Messages postés 63 Date d'inscription lundi 20 août 2012 Statut Membre Dernière intervention 19 mars 2015 13
5 juil. 2013 à 13:41
Un grand merci, ça marche !

J'avais essayé ça mais j'ai du faire n'importe quoi en le mélangeant avec d'autre fonction parce-que ça me sortait n'importe quoi.

tu me sauve ma journée
0
vermich89 Messages postés 63 Date d'inscription lundi 20 août 2012 Statut Membre Dernière intervention 19 mars 2015 13
5 juil. 2013 à 13:46
ah je viens de voir pourquoi j'avais abandonné ça,

je fait un developpement sous prestashop et dans la page adresse il me ressort les accent comme ça é

aurais tu une idée pour les encoder autrement ?
0
Alming Messages postés 60 Date d'inscription dimanche 30 juin 2013 Statut Membre Dernière intervention 20 juillet 2013 16
5 juil. 2013 à 13:48
Tu héberges ton projet en localhost ? Si oui, c'est peut être normal ; sinon, tu peux utiliser l'instruction header :

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

0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
vermich89 Messages postés 63 Date d'inscription lundi 20 août 2012 Statut Membre Dernière intervention 19 mars 2015 13
5 juil. 2013 à 13:55
C'est un site en ligne,

dans le header de presta je suis avec un meta en utf8

<meta http-equiv="Content-Type" content="application/xhtml+xml; charset=utf-8" />

ça ne risque pas de modifier le reste des pages et des encodage ?
0
vermich89 Messages postés 63 Date d'inscription lundi 20 août 2012 Statut Membre Dernière intervention 19 mars 2015 13
5 juil. 2013 à 13:58
j'ai tenté ça ne change rien. On ne peut pas enregistrer les accents directement dans la base de donnée ?
0
vermich89 Messages postés 63 Date d'inscription lundi 20 août 2012 Statut Membre Dernière intervention 19 mars 2015 13
5 juil. 2013 à 14:09
Rahhh je sais qu'à un moment j'avais les accents mais pas les apostrophe. Mais j'ai tellement tout mélangé que je ne sais plus ce que j'utilisais
0
vermich89 Messages postés 63 Date d'inscription lundi 20 août 2012 Statut Membre Dernière intervention 19 mars 2015 13
5 juil. 2013 à 14:34
c'est bon j'ai trouvé :

$address2 = htmlentities(htmlspecialchars($_POST['address2'][$i], ENT_QUOTES, 'UTF-8'));

encore merci et bon weekend
0
Alming Messages postés 60 Date d'inscription dimanche 30 juin 2013 Statut Membre Dernière intervention 20 juillet 2013 16
5 juil. 2013 à 14:36
En utilisant htmlentities, tu peux omettre la fonction htmlspecialchars ; ça donnerait ça :
$address2 = htmlentities($_POST['address2'][$i], ENT_QUOTES, 'UTF-8'); 
0
vermich89 Messages postés 63 Date d'inscription lundi 20 août 2012 Statut Membre Dernière intervention 19 mars 2015 13
5 juil. 2013 à 14:44
oui et ça marche mieux, c'était propre en front office mais ça me ressortait n'importe quoi au niveau de mon tableau
0