pb apostrophe

Eléphant du PHP | 98 Messages

21 avr. 2005, 11:05

Bonjour tout le monde,
j'ai un problème d'affichage d'une adresse dans un champ input text, par contre quand je l'avais à l'extérieur aucun problème...
je pense que cela vient de l'apostrophe, prenons un exemple avec l'adresse : 2 rue de l'égalité
en effet quand je veux l'afficher dans le champ il va me mettre uniquement 2 rue de l

si qqun a une idée... ?? :D
voilà une partie de mon code.
$fab = "SELECT * FROM fabricant WHERE fab_nom='".$_POST['list']."' ORDER BY fab_nom ASC";
		$r_fab=mysql_query("$fab") or die("Invalid query : ".mysql_error());
		while ($r = mysql_fetch_array($r_fab))
		{
			echo $r[2];
		/*formulaire de modification*/
		
  		echo "<div class='form-ligne'>";
  			echo "<div class='label'>Rue :</div>";
  			echo "<div class='champ'><input name='rue' type='text' size='100' maxlength='150' value='";
				if (isset($_POST['select'])){echo $r[2];}
			echo "'></div>";
		echo "</div>";

Eléphanteau du PHP | 33 Messages

21 avr. 2005, 11:09

si par exemple tu fait
$rue="2 rue de l'égalité";
ca marche ou pas? il me semble que ca devrait fonctionner

Eléphant du PHP | 98 Messages

21 avr. 2005, 11:10

le problème c'est que l'adresse est issue d'une base de données donc j'peux pas faire ça..

Eléphant du PHP | 281 Messages

21 avr. 2005, 11:12

ya une fonction qui s'apelle addslashes();
qui te permettera de rajouter des slash lors de l'affichage c'est très utile ;)
addslashes($var)
voila;)

Eléphant du PHP | 98 Messages

21 avr. 2005, 11:23

je dois faire ça ?

	
  		echo "<div class='form-ligne'>";
  			echo "<div class='label'>Rue :</div>";
  			echo "<div class='champ'><input name='rue' type='text' size='100' maxlength='150' value='";
				if (isset($_POST['select'])){echo addslashes($r[2]);}
			echo "'></div>";
		echo "</div>";
en fait quand je fais comme ça il m'affiche 2 rue de l\...

Eléphant du PHP | 281 Messages

21 avr. 2005, 11:27

Ton addslashes tu dois le mettre lorsque tu rentre les donnée dans ta BDD pas quand tu affiche, ensuite si lorsque tu affiche il te met les slash y'a une fonction qui s'apelle stripslashes mais si tu met la fonction lors de l'insertion des données ca devrai etre bueno

Eléphant du PHP | 98 Messages

21 avr. 2005, 11:32

ok merci je test ça de suite !!

Eléphant du PHP | 98 Messages

21 avr. 2005, 11:43

désolé mais j'y arrive pas :oops:
tu pourrais m'aider rapidement pour l'insertion ?
			
$sql = "INSERT INTO fabricant VALUES 
			('','".$_POST['nom']."', '".addslashes($_POST['rue'])."', '".$_POST['cp']."', '".$_POST['ville']."',
			'".$_POST['tel']."', '".$_POST['fax']."', '".$_POST['site']."',	'".$_POST['mail']."','')";
			mysql_query("$sql") or die("<font color='red'>Invalid query : ".mysql_error()."</font>");
en faisant ça il ne m'ajout pas les slashes.... :/

Eléphant du PHP | 281 Messages

21 avr. 2005, 11:47

et si tu fais ca :
$rue=addslashes($_POST['rue']);
$sql = "INSERT INTO fabricant VALUES
            ('','".$_POST['nom']."', '" . $rue ."', '".$_POST['cp']."', '".$_POST['ville']."',
            '".$_POST['tel']."', '".$_POST['fax']."', '".$_POST['site']."',    '".$_POST['mail']."','')";
            mysql_query("$sql") or die("<font color='red'>Invalid query : ".mysql_error()."</font>");
en théorie ca devrai marcher !

Eléphant du PHP | 98 Messages

21 avr. 2005, 11:50

pour l'affichage c bien :
  		echo "<div class='form-ligne'>";
  			echo "<div class='label'>Rue :</div>";
  			echo "<div class='champ'><input name='rue' type='text' size='100' maxlength='150' value='";
				if (isset($_POST['select'])){echo stripslashes($r[2]);}
			echo "'></div>";
hein? parce que là ça ne marche pas.. :/

ce qui est bizarre c'est que le problème est présent que pour l'input text

Eléphant du PHP | 281 Messages

21 avr. 2005, 11:53

nan pour l'affichage le stripslashe vire le =) sinon ca fait comme si tu avais rien fait !!
le stripslashes c'etait une autre solution mais j'avai mal reflechi dsl :oops:

Eléphant du PHP | 98 Messages

21 avr. 2005, 11:57

lol ok no prob, je test ça :)

Eléphant du PHP | 98 Messages

21 avr. 2005, 12:00

en fait j'ai trouvé une autre soluce... j'ai pas réussi avec addslashes() :(
merci bcp pour ton aide ;)
j'utilise ça en fait :
$rue = htmlspecialchars($_POST['rue'], ENT_QUOTES);
			$sql = "INSERT INTO fabricant VALUES 
			('','".$_POST['nom']."', '".$rue."', '".$_POST['cp']."', '".$_POST['ville']."',
			'".$_POST['tel']."', '".$_POST['fax']."', '".$_POST['site']."',	'".$_POST['mail']."','')";
			mysql_query("$sql") or die("<font color='red'>Invalid query : ".mysql_error()."</font>");
ça marche nikel!
et merci encore ^^

nimbus
Invité n'ayant pas de compte PHPfrance

13 mai 2005, 14:43

Bonjour à tous !!

Je vois que je suis pas le seul avec des problèmes d'apostrophe.

Comme l'a dit lamk au début du topics, j'ai le même problème :cry:
Seulement voilà, vous avez réussi à le résoudre en le faisant à l'insertion des données dans le BDD.

Et moi je n'ai pas la possibilité d'insertion, je ne fait que récupérer par SELECT les données de la BDD (là pas de souci), l'affichage dans la boite SELECT html fonctionne correctement.

C'est quand je valide et donc renvoie les infos sur une autre page que ça disjoncte :( le 2 rue de l'égalité devient 2 rue de l.
Et pourtant je crois avoir tout essayé : addslashes, stripslashes, htmlspecialchars, magic_quotes_gpc.

Un petit coup de main serai le bienvenu :)

Merci d'avance

Nimbus

Eléphant du PHP | 357 Messages

13 mai 2005, 14:48

dans la bdd ou ailleur d abord si vous mettez un petit :
&rsquo;
a la place de votre quote vous en serez gagnant !!!!