Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1247 connectés 

  FORUM HardWare.fr
  Programmation
  PHP

  probleme de quote et de guillemet

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

probleme de quote et de guillemet

n°963246
cyberP@cal
Posté le 26-01-2005 à 22:56:14  profilanswer
 

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>';

mood
Publicité
Posté le 26-01-2005 à 22:56:14  profilanswer
 

n°963307
FlorentG
Posté le 27-01-2005 à 00:16:10  profilanswer
 

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

n°963356
ratibus
Posté le 27-01-2005 à 08:02:45  profilanswer
 

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.
 
;)

n°963401
FlorentG
Posté le 27-01-2005 à 09:42:25  profilanswer
 

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

n°963407
ratibus
Posté le 27-01-2005 à 09:46:36  profilanswer
 

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).

n°963414
FlorentG
Posté le 27-01-2005 à 09:54:13  profilanswer
 

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...

n°963425
ratibus
Posté le 27-01-2005 à 10:03:04  profilanswer
 

Tout à fait  :jap:

n°963923
cyberP@cal
Posté le 27-01-2005 à 18:07:37  profilanswer
 

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

n°964088
Xav_
The only one...
Posté le 27-01-2005 à 21:57:34  profilanswer
 

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
n°964097
duncan_mc_​leod
Posté le 27-01-2005 à 22:16:46  profilanswer
 

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...

mood
Publicité
Posté le 27-01-2005 à 22:16:46  profilanswer
 

n°964127
cyberP@cal
Posté le 27-01-2005 à 22:52:50  profilanswer
 

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:

n°964244
aleske
Posté le 28-01-2005 à 07:43:19  profilanswer
 

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  ;)

n°964250
Dj YeLL
$question = $to_be || !$to_be;
Posté le 28-01-2005 à 08:23:53  profilanswer
 

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 ?

n°964254
ratibus
Posté le 28-01-2005 à 08:33:35  profilanswer
 

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

n°964255
ratibus
Posté le 28-01-2005 à 08:35:34  profilanswer
 

Donc au lieu de :

Code :
  1. addslashes($critique)


 
Essaie ça :

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


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  PHP

  probleme de quote et de guillemet

 

Sujets relatifs
probleme avec variable[MFC/OPENGL] Problème de chargement de texture
[CSS] problème avec les id[Java] [LeJOS] Probleme de Listener en parallèle
Problème de droits d'un partageProbleme de l'executable
probleme dll[RESOLU]Probleme saut de page et colonnes
[DREAMWEAVER] Probleme d'affichage sous IE6.0Probleme passage de paramètres et fonction include
Plus de sujets relatifs à : probleme de quote et de guillemet


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR