PC SOFT

PROFESSIONAL NEWSGROUPS
WINDEVWEBDEV and WINDEV Mobile

Home → WEBDEV 2024 → un inverse pour quote?   (WB9, php)
un inverse pour quote? (WB9, php)
Started by rasilly, Dec., 12 2005 3:53 PM - 4 replies
Posted on December, 12 2005 - 3:53 PM
Il y a quote qui est l’équivalent d’ addslashes en php, mais qu’en est-il de son contraire ?
- y a-il un équivalent de stripslashes ??
Posted on December, 13 2005 - 11:50 AM
Je ne me suis pas clairement exprimé:
Ma question est plutôt la suivante:

Comment faire une recherche de sélection sur une valeur qui a été rentrée dans une table en subissant l'action de quote (qui contenait donc une apostrophe)
entremembre est une chaîne
entremembre = "INSERT INTO membres("+...
"nom, " +...
"prenom , "+...
"adresse , "+...
"cp, "+...
"ville, "+...
"email , "+...
"confirmation )"+...
" VALUES ("+...
Quote(nom)+","+...
Quote(prenom)+","+...
Quote(adresse)+","+...
Quote(cp)+","+...
Quote(ville)+","+...
Quote(email)+","+...
Quote(confirmation)+")"

Info ("Vision du texte de la requête:", entremembre)

res_entremembre est un booléen
res_entremembre = SQLExec(entremembre,"REQENTREMEMBRE")

SI res_entremembre =1 ALORS
Info("enregistrement OK !")
SINON
SQLInfoGene("REQBIDON")
Info("erreur ajout membre",SQL.MesErreur)
FIN

Mais, ensuite il n’est pas possible de rechercher tous les membres qui auraient le même nom si ce nom contient une apostrophe :

nomatrouver ="SELECT membres.id, membres.nom, membres.email FROM membres "
nomatrouver = nomatrouver + "WHERE membres.nom ="
nomatrouver = nomatrouver +" "+Quote(nom)+" "
nomatrouver = nomatrouver +" AND membres .statut = '"+artificiel+"' "


Info("la requête de recherche par nom donne :", nomatrouver) //pour la vérification
res_nomatrouver est un booléen
res_nomatrouver = SQLExec(nomatrouver,"REQNOMATROUVER")

nb_compte est un entier
SI SQLReqExiste("REQNOMATROUVER ")=1 ALORS
nb_compte=0
SQLPremier("REQNOMATROUVER ")
TANTQUE PAS SQL.EnDehors

ListeAjoute(ListeNomIdem,SQLCol("REQNOMATROUVER ",2) )
SQLSuivant("REQNOMATROUVER ")
nb_compte++
FIN
Info("ce qui donne :",nb_compte +"membres homonymes")
FIN


La requête de sélection d’un mot qui a subi l’action de quote ne marche pas par une requête classique, ni quand on essaie l’action de quote(plus haut)

(Ces mots à apostrophes entrés dans la table avec l’action de quote, perdent leur antislash)
Nota : elle marche très bien pour les chaînes de caractères normales

Je pense ne pas être le seul à être concerné par le problème et je remercie par avance ceux qui pourront m’aider

G.
Posted on December, 13 2005 - 4:24 PM
rasilly a formulé la demande :
Je ne me suis pas clairement exprimé:
Ma question est plutôt la suivante:

Comment faire une recherche de sélection sur une valeur qui a été rentrée
dans une table en subissant l'action de quote (qui contenait donc une
apostrophe)


Où est le pb?
La fonction quote doit avoir pour fn de doubler les quotes ou préfixer
par / des caractères particuliers.
Mais cela n'influe pas sur la recherche.

FONCTION Quote(pCh)
// 1. Double les apostrophes dans la chaine
// 2. Entoure avec des apostrophes
Ch est une chaîne
Ch=pCh
Ch=SansEspace(Ch)
Ch = Remplace(Ch, "'", "''")
SI gBase=cMYSQL ALORS
Ch = Remplace(Ch, "\", "\\")
Ch = Remplace(Ch, RC, " \r\n")
Ch = Remplace(Ch, Caract(0), "\0")
FIN
RENVOYER "'"+Ch+"'"

ensuite un "INSERT INTO MATBLE (zon1,zon2
....)VALUES("+Quote(mazone)+","+Quote(mazone2) ..... +")"

avec un "select zon1 from MATBLE WHERE zon1="+Quote(mazone)

ça marchera si mazone contient "d'accord mec !"

entremembre est une chaîne entremembre = "INSERT INTO
membres("+... "nom, " +...
"prenom , "+...
"adresse , "+...
"cp, "+...
"ville, "+...
"email , "+...
"confirmation )"+...
" VALUES ("+...
Quote(nom)+","+...
Quote(prenom)+","+...
Quote(adresse)+","+...
Quote(cp)+","+...
Quote(ville)+","+...
Quote(email)+","+...
Quote(confirmation)+")"

Info ("Vision du texte de la requête:", entremembre)

res_entremembre est un booléen
res_entremembre = SQLExec(entremembre,"REQENTREMEMBRE")

SI res_entremembre =1 ALORS
Info("enregistrement OK !")
SINON
SQLInfoGene("REQBIDON")
Info("erreur ajout membre",SQL.MesErreur)
FIN

Mais, ensuite il n’est pas possible de rechercher tous les membres qui
auraient le même nom si ce nom contient une apostrophe :

nomatrouver ="SELECT membres.id, membres.nom, membres.email FROM membres "
nomatrouver = nomatrouver + "WHERE membres.nom ="
nomatrouver = nomatrouver +" "+Quote(nom)+" "
nomatrouver = nomatrouver +" AND membres .statut = '"+artificiel+"' "


Info("la requête de recherche par nom donne :", nomatrouver) //pour la
vérification res_nomatrouver est un booléen
res_nomatrouver = SQLExec(nomatrouver,"REQNOMATROUVER")

nb_compte est un entier
SI SQLReqExiste("REQNOMATROUVER ")=1 ALORS
nb_compte=0
SQLPremier("REQNOMATROUVER ")
TANTQUE PAS SQL.EnDehors

ListeAjoute(ListeNomIdem,SQLCol("REQNOMATROUVER ",2) )
SQLSuivant("REQNOMATROUVER ")
nb_compte++
FIN
Info("ce qui donne :",nb_compte +"membres homonymes")
FIN


La requête de sélection d’un mot qui a subi l’action de quote ne marche pas
par une requête classique, ni quand on essaie l’action de quote(plus haut)

(Ces mots à apostrophes entrés dans la table avec l’action de quote, perdent
leur antislash) Nota : elle marche très bien pour les chaînes de caractères
normales

Je pense ne pas être le seul à être concerné par le problème et je remercie
par avance ceux qui pourront m’aider

G.



--
Eric Roumégou
Webmaster des wtablettes
Posted on December, 13 2005 - 10:50 PM
En essayant juste avec une chaine j'obtiens :

Warning: No ending delimiter '/' found in c:\mes sites\rouvre\rouvre_web\fr\WD9.0\WD90VM.php on line 32

Est-ce étrange?
Posted on December, 16 2005 - 6:33 PM
Autant pour moi, les quote fonctionne très bien , l'erreur est à la concaténation à laquelle je dois dire que j'ai du mal à me faire !!

Merci pour votre aide!
G.