probleme de quote et de guillemet

probleme de quote et de guillemet - PHP - Programmation

Marsh Posté le 26-01-2005 à 22:56:14    

J'ai fait un site qui permet d'enregistrer des messages dans une base de données access,mais lorsque je poste un message qui contient une ' j'obtient une erreur.Et si je met des " dans le message,quand je le visualise sur le site il apparai des \ devant les ".
comment faire pour qui n'y est plus ce genre de pb ?
voici une portion de code :
insertion dans la base de données :
 

Code :
  1. $query="insert into critique(pseudo,critique,numfilm,mail,dateD,heureH) values ('".$pseudo."','".$critique."','".$numfilm."','".$mail."','".$date."','".$heure."');";
  2.    $result=odbc_do($connect,$query);
  3.    if($result)
  4.         echo "Votre critique a été correctement enregistré<br><br><a href='voiravis.php' >Voir la liste des avis</a>";
  5.    else
  6.         echo "<br><br>Attention, l'ajout de la critique a échoué,verifier que vous avez correctement remplis tous les champs !!!";
  7.     }


 
affichage des champs presnat dans la base de donnes :
 

Code :
  1. echo  '<br>Avis de <a href="mailto:'.$fields[3].'">'.$fields[1].'</a> sur le film "'.$fields[2].'"<br>Le '.$fields[4].' à '.$fields[5].'<br><br><i> "'.$message.'"</i><br>';

Reply

Marsh Posté le 26-01-2005 à 22:56:14   

Reply

Marsh Posté le 27-01-2005 à 00:16:10    

Quand tu stock dans ta base de donnée, fait un addslashes. Puis quand tu affiche dans la page web, fait un stripslashes :)

Reply

Marsh Posté le 27-01-2005 à 08:02:45    

FlorentG a écrit :

Quand tu stock dans ta base de donnée, fait un addslashes. Puis quand tu affiche dans la page web, fait un stripslashes :)


 :non:  
 
OK pour le addslashes à l'ajout, mais le stripslashes à l'affichage ne sert à rien.
 
;)

Reply

Marsh Posté le 27-01-2005 à 09:42:25    

Possible ouais :D... Quoique, j'ai le souvenir que c'était nécessaire :??:

Reply

Marsh Posté le 27-01-2005 à 09:46:36    

Je te garantis que non :D
 
Le addslashes permet d'avoir la "vraie valeur" (sans les /) dans la base.
Donc quand la base te les renvoie, ils n'y sont plus (sauf si magic_quotes_runtime est à On mais c'est rare).

Reply

Marsh Posté le 27-01-2005 à 09:54:13    

Voilà, après s'il y a les magic_quotes machin. Donc vaut mieux tester si magic_quotes_runtime est sur On, puis faire un stripslashes s'il le faut, pour des questions de portabilités...

Reply

Marsh Posté le 27-01-2005 à 10:03:04    

Tout à fait  :jap:

Reply

Marsh Posté le 27-01-2005 à 18:07:37    

parlez francais je comprend rien je suis débutant (indiquer moi ce que je doit modifier svp).

Reply

Marsh Posté le 27-01-2005 à 21:57:34    

CyberP@cal a écrit :

parlez francais je comprend rien je suis débutant (indiquer moi ce que je doit modifier svp).


 
oui et puis nous quand on l'été (débutant) on a fait aucun effort...
on t'a filé 2 fonctions addslashes et stripslashes --> va matter le manuel, faux pas pousser non plus
...mais la 2ème (fontion) n'est pas tjs nécessaire, ça dépend d'une fonction activé (ON) ou pas (OFF), tu n'a donc jamais ouvert ton php.ini, ou entendu parler de phpinfo() ???
 
Ici on aide les gens qui font des efforts, mais on file pas de cours particulier gratos pour aider à lire la doc... ton prof de CP à du le faire (t'apprendre à lire)
 
PS: Si ça à l'air méchant, désolé, les gens d'ici savent que je ne le suis pas, mais tout le monde te répondra qu'on est là pour t'aider, pas t'apprendre des bases que tu peux acquérir tout seul si tu t'en donne la peine (de lire par exemple)


---------------
- Xav - ...There are no crimes when there are no laws... -- Xav's World
Reply

Marsh Posté le 27-01-2005 à 22:16:46    

Ex :  
 
$pseudo = addslashes($pseudo);
 
etc ... ca permet de pouvoir entrer les caracteres comme les ' ... sans que tu ai une erreur puisqu'ils seront reconnus comme des caracteres...

Reply

Marsh Posté le 27-01-2005 à 22:16:46   

Reply

Marsh Posté le 27-01-2005 à 22:52:50    

finalement j'ai chercher sur google mais j'ai toujours un pb avec les quotes ! J'ai pourtant bien fait ce qui été indiqué :

Code :
  1. $query="insert into critique(pseudo,critique,numfilm,mail,dateD,heureH,pass) values ('".$pseudo."','".addslashes($critique)."','".$numfilm."','".$mail."','".$date."','".$heure."','".$pass."');";
  2.    $result=odbc_do($connect,$query);


 
et voici le message d'erreur que j'obtient quand je veut enregister le message :
 

Code :
  1. Warning: SQL error: [Microsoft][Pilote ODBC Microsoft Access] Erreur de syntaxe (opérateur absent) dans l'expression ''c\\\'est super sa marche pas','15','fdf@free.fr','27-01-2005','22:51','toto');'., SQL state 37000 in SQLExecDirect in c:\program files\easyphp\www\videotech\avisenr.php on line 103


 
help  :cry:

Reply

Marsh Posté le 28-01-2005 à 07:43:19    

Un petit bout de code qu'un pote a fait à une époque lointaine et que j'utilise toujours.
Je viens de le relire et je ne comprends plus trop comment ça marche mais ça marche  :lol:  
 

Code :
  1. function MyEncode( $Str )
  2. {
  3. $Str = str_replace( "'", "''", $Str );
  4. $Str = str_replace( "\\'", "'", $Str );
  5. $Str = str_replace( "\\\"", "\"", $Str );
  6. $Str = str_replace( "\\\\", "\\", $Str );
  7. $Str = str_replace( "  ", " ", $Str );
  8. $Str = trim( $Str );
  9. return $Str;
  10. }


 
Tu n'as plus qu'à faire MyEncode($critique) au lieu de addslashes($critique)
 
C'est kadal  ;)

Reply

Marsh Posté le 28-01-2005 à 08:23:53    

Il a écrit cette fonction à l'époque ou addslashes n'existait pas ? ;)
 
Je pense que le resultat sera le même.
 
Si on regarde le message d'erreur on voit ça :
 

Citation :

'c\\\'est super sa marche pas'


 
Je pense que la magic_quote est déjà à ON non ?

Reply

Marsh Posté le 28-01-2005 à 08:33:35    

C'est parce que ça base est Access je pense.
Il ne faut pas faire un addslashes mais remplacer ' par ''.

Reply

Marsh Posté le 28-01-2005 à 08:35:34    

Donc au lieu de :

Code :
  1. addslashes($critique)


 
Essaie ça :

Code :
  1. str_replace("'", "''", stripslashes($critique))

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed