[JS] Script nodig dat van een ' " ' " maakt (SQL)

Pagina: 1
Acties:

  • Davidoff402
  • Registratie: Oktober 2000
  • Laatst online: 24-03-2022

Davidoff402

The more you tweak....

Topicstarter
Ik heb een probleem dat als ik in een textveld bijvoorbeeld het woord 's avonds intik, dat SQL dan struikelt over de '. hij wil dit niet opslaan in SQL database omdat er bij de INSERT INTO dan een quootje komt te staan en dat wil ie niet doen natuurlijk. Ik heb echter al wel een Javascriptje dat een komma naar een punt omzet (in b.v. getallen) maar weet nu niet hoe ik een aanpassing kan maken om alle quootjes goed te kunnen laten wegschrijven. Zou iemand mij hierbij kunnen helpen? Hieronder de code voor de komma omzetting. Na eventuele aanpassing zou deze dus ook de '-jes moeten omzetten naar "'"

function commatopunt(){



var teststring
var leftStr
var rightStr



teststring = document.frmHuppeldepup.Description.value


for(i = 0; i < teststring.length; i++)
{
if(teststring.charCodeAt(i)==44){ // 44 is comma
rightStr = teststring.substr(i+1,teststring.length-i)
leftStr = teststring.substr(0,i)
teststring = leftStr + String.fromCharCode(46) + rightStr // 46 is punt
i = i + 1
}
}//for
document.frmHuppeldepup.Description.value = teststring
}

</SCRIPT>

Sempron 3800+ 8k9a7i


  • Bever
  • Registratie: Maart 2001
  • Laatst online: 10-09 10:05
addslashes() dacht ik en als je het eruit haalt stripslashes()

ik kan er ook naastzitten.


/edit
mmm dit is php geen javascript. ff te snel nagedacht ;(

  • Pelle
  • Registratie: Januari 2001
  • Laatst online: 23:47

Pelle

🚴‍♂️

Dit kun je beter serverside oplossen. Elke scripting-taal heeft daar wel z'n eigen features voor. Als je PHP gebruikt dan kun je de functie addslashes() gebruiken, en voor het publiceren gebruik je stripslashes().

Perl en ASP zullen ook wel zo'n functionaliteit hebben. Van JSP weet ik dat je er zelf een functie voor moet schrijven, maar ik neem aan dat je dat niet gebruikt :)

  • Davidoff402
  • Registratie: Oktober 2000
  • Laatst online: 24-03-2022

Davidoff402

The more you tweak....

Topicstarter
:) Ik werk trouwens niet met PHP maar ASP. Ik heb al wel een javascript voor het "urenveld" die de comma omvormt. (zie boven) dus als ik zo'nzelfde script voor het toevoegen van "" kan gebruiken zou dat de oplossing zijn.

Sempron 3800+ 8k9a7i


  • drm
  • Registratie: Februari 2001
  • Laatst online: 09-06-2025

drm

f0pc0dert

allemaal fout :)

Je moet voor SQL (ansi, werkt ook in MySQL) de ' niet escapen met een slash maar met nog een quote

Oftewel:
code:
1
str = str.replace ( "'", "''" );

En of je dat nou serversided of clientsided wil oplossen, maakt imo niet zo gek veel uit.

Music is the pleasure the human mind experiences from counting without being aware that it is counting
~ Gottfried Leibniz


  • Davidoff402
  • Registratie: Oktober 2000
  • Laatst online: 24-03-2022

Davidoff402

The more you tweak....

Topicstarter
Owkee, tja, als ik er over nadenk inderdaad. "" werkt niet.
Maarja, de code moet het gehele textarea doorzoeken (60Char) en alle '-jes vervangen door '' Ik heb een beetje moeite met de code daarvoor

Sempron 3800+ 8k9a7i


  • Pelle
  • Registratie: Januari 2001
  • Laatst online: 23:47

Pelle

🚴‍♂️

Op donderdag 14 februari 2002 12:14 schreef Davidoff het volgende:
:) Ik werk trouwens niet met PHP maar ASP. Ik heb al wel een javascript voor het "urenveld" die de comma omvormt. (zie boven) dus als ik zo'nzelfde script voor het toevoegen van "" kan gebruiken zou dat de oplossing zijn.
Heb even gezocht, en met de Replace functie in ASP moet je de '(een single quote) door een '' (twee single quotes) vervangen. Zie:

[topic=98741/1/25]
[topic=331807/1/25]
[topic=30289/1/25]

/edit
drm was sneller :(

  • Pelle
  • Registratie: Januari 2001
  • Laatst online: 23:47

Pelle

🚴‍♂️

Op donderdag 14 februari 2002 12:17 schreef drm het volgende:
Je moet voor SQL (ansi, werkt ook in MySQL) de ' niet escapen met een slash maar met nog een quote
Euhm, voor PHP&MySQL werkt een add/stripslashes toch ook :?

Heb je ergens een linkje toevallig, waar op het escapen van een singlequote door een andere quote singlequote wordt ingegaan?

Verwijderd

Voor Coldfusion is er de functie

PreserveSinglequotes()

  • drm
  • Registratie: Februari 2001
  • Laatst online: 09-06-2025

drm

f0pc0dert

Pelle:
Euhm, voor PHP&MySQL werkt een add/stripslashes toch ook :?
Het werkt wel, maar eigenlijk is het niet zo handig. Het grootste nadeel (vind ik zelf) is dat je eigenlijk voor een groot gedeelte overbodig zit te escapen met addslashes, bijvoorbeeld de dubbele quote (") hoeft helemaal niet geescaped te worden. Gevolg is dus, dat je een extra character (de slash) op slaat in je database die eigenlijk nergens goed voor is.
Heb je ergens een linkje toevallig, waar op het escapen van een singlequote door een andere quote singlequote wordt ingegaan?
hmm nee, heb ff gezocht maar duidelijke artikels erover kan ik niet vinden.

Ik heb wel gezien dat Oracle en MS SQL problemen krijgen wanneer je met een slash escapet. Volgens ANSI 92 moet je met een ' escapen, dus het is beter om jezelf dat aan te wennen, mocht je nog eens in een andere database-omgeving dan MySQL moeten werken.

Music is the pleasure the human mind experiences from counting without being aware that it is counting
~ Gottfried Leibniz


  • Willem
  • Registratie: Februari 2001
  • Laatst online: 20:13
Gordijnstok:
Voor Coldfusion is er de functie

PreserveSinglequotes()
Ja hoor, daar hebben we de Coldfusion prediker ook weer ;)

Motor (of auto) onderhoud bijhouden


  • drm
  • Registratie: Februari 2001
  • Laatst online: 09-06-2025

drm

f0pc0dert

Op donderdag 14 februari 2002 12:20 schreef Davidoff het volgende:
Owkee, tja, als ik er over nadenk inderdaad. "" werkt niet.
Maarja, de code moet het gehele textarea doorzoeken (60Char) en alle '-jes vervangen door '' Ik heb een beetje moeite met de code daarvoor
Daar moet je gewoon een standaard replace functie voor gebruiken. In Javascript kun je dat met String.replace doen:
code:
1
2
str = "'s avonds";
quoted = str.replace ( "'", "''" );

Music is the pleasure the human mind experiences from counting without being aware that it is counting
~ Gottfried Leibniz


  • Davidoff402
  • Registratie: Oktober 2000
  • Laatst online: 24-03-2022

Davidoff402

The more you tweak....

Topicstarter
Hoe kan ik dan in --> javascript <-- voordat ik het textveld doorgooi naar de database (dus tijdens de submit naar updatepagina) replacen?
Hier een wel hele korte versie van de updatepagina. Waar zou ik hier dan kunnen checken of de form("Description") een ' bevat en dit dan kan replacen met ''?


sSQL = "INSERT INTO Description, .... , .... "
sSQL = sSQL & "VALUES '" & Request.Form("Description")"& "', " "
sSQL = sSQL & ".,.....

Als het niet makkelijk in Javascript kan, dan moet er toch een makkelijke manier zijn om dit dan wel in ASP te doen?

Sempron 3800+ 8k9a7i


  • Pelle
  • Registratie: Januari 2001
  • Laatst online: 23:47

Pelle

🚴‍♂️

Op donderdag 14 februari 2002 12:52 schreef Davidoff het volgende:
Hoe kan ik dan in --> javascript <-- voordat ik het textveld doorgooi naar de database (dus tijdens de submit naar updatepagina) replacen?
Zie drm's reply van hierboven.
Hier een wel hele korte versie van de updatepagina. Waar zou ik hier dan kunnen checken of de form("Description") een ' bevat en dit dan kan replacen met ''?
Zie eerste linkje van mijn reply: [topic=98741/1/25]
code:
1
Replace(Request.Form("Description"), "'", "''")

  • Davidoff402
  • Registratie: Oktober 2000
  • Laatst online: 24-03-2022

Davidoff402

The more you tweak....

Topicstarter
Ik heb nu een javascrippie geschreven zie onderstaande.
Nu checkt ie elk karakter in m'n textveld en maakt dus van de ' een '' Dit is prima dus. Alleen 1 nadeel:

Als ik de pagina submit en het javascrippie gaat omvormen dan maakt ie van de ' netjes een ''. Als je naar het resultaat kijkt dan staat er altijd undefined voor:

ik ben 's avonds weg geeft het volgende resultaat na omvorming:

undefinedik ben 's avonds weg

Why?!? Wat heb ik fout gedaan:?

<SCRIPT language=javascript>
function commatopunt(){




var teststring
var CheckChar


teststring = document.frmAddProject.Description.value


for(i = 0; i <= teststring.length; i++)
{


if (teststring.substring(i-1,i) == "'")
{ CheckChar+="''"; }
else
{ CheckChar+=teststring.substring(i-1,i); }
}
document.frmAddProject.Description.value = CheckChar
}


</SCRIPT>

Sempron 3800+ 8k9a7i


  • Bever
  • Registratie: Maart 2001
  • Laatst online: 10-09 10:05
Op donderdag 14 februari 2002 14:45 schreef Davidoff het volgende:
Ik heb nu een javascrippie geschreven zie onderstaande.
Nu checkt ie elk karakter in m'n textveld en maakt dus van de ' een '' Dit is prima dus. Alleen 1 nadeel:

Als ik de pagina submit en het javascrippie gaat omvormen dan maakt ie van de ' netjes een ''. Als je naar het resultaat kijkt dan staat er altijd undefined voor:

ik ben 's avonds weg geeft het volgende resultaat na omvorming:

undefinedik ben 's avonds weg

Why?!? Wat heb ik fout gedaan:?
En als er geen ' in zit doet ie dat niet?

  • Davidoff402
  • Registratie: Oktober 2000
  • Laatst online: 24-03-2022

Davidoff402

The more you tweak....

Topicstarter
Op donderdag 14 februari 2002 14:47 schreef Bever het volgende:

[..]

En als er geen ' in zit doet ie dat niet?
Tja, dan doet ik het ook :(

Sempron 3800+ 8k9a7i


  • Bever
  • Registratie: Maart 2001
  • Laatst online: 10-09 10:05
debug 'm eens dan kun je zien wanneer ie die undefined toevoegd. :)

  • Bever
  • Registratie: Maart 2001
  • Laatst online: 10-09 10:05
of anders post ff de volledige source :) zal ik ff debuggen :)

  • RM-rf
  • Registratie: September 2000
  • Laatst online: 00:05

RM-rf

1 2 3 4 5 7 6 8 9

hou alsjeblieft op met een javascript dat strings aanpast voor een SQL-database, dat is 3x dom, clientside validatie is leuk om eventuele submits van ongeldige data te voorkomen, maar zaken als het escapen van strings om geldige db-input te krijgen mág gewoon niet.

dat doe je altijd serverside, verder is het zo dat speciale tekens niet vervangen worden maar escaped.. dus via een backslash.

dit zijn gewoon standaards waar je je aan hebt te houden als je goed wilt werken, daarvan afwijken is erg eigenwijs en levert je een slecht functionerend tot brak systeem op.
waarschijnlijk heeft de serverside toepassing die je gebruikt om in je database toe te voegen al een standaard escape of addslash functie: ga daarnar op zoek.

Intelligente mensen zoeken in tijden van crisis naar oplossingen, Idioten zoeken dan schuldigen


  • Davidoff402
  • Registratie: Oktober 2000
  • Laatst online: 24-03-2022

Davidoff402

The more you tweak....

Topicstarter
Als hij aan het einde van het javascrippie is dan zet ie ergens undefined neer.

dit is de code die hij daarna uitspuugt:

INSERT INTO [TabProblemTracing] ([OriginalProblemDate], [ResolutionDate], [HoursSpent], [ProblemDescription], [ProjectID], [Employee/OwnerID], [UregencyID], [StatusID], [ProblemSolved]) VALUES (' 2- 14- 2002', ' 2- 14- 2002', 4, 'undefinedDit is een test ''s avonds', 1833, 119, 1, 6, 0);

Sempron 3800+ 8k9a7i


  • Davidoff402
  • Registratie: Oktober 2000
  • Laatst online: 24-03-2022

Davidoff402

The more you tweak....

Topicstarter
Owkee! probleem opgelost. Na een beetje kijken had ik een foutje gemaakt. De code is nu:

<SCRIPT language=javascript>
function Quot(teststring){


var CheckChar = "";

teststring = document.frmAddProject.Description.value

for(i = 0; i <= teststring.length; i++)
{


if (teststring.substring(i-1,i) == "'")
{ CheckChar+="''"; }
else
{ CheckChar+=teststring.substring(i-1,i); }
}
document.frmAddProject.Description.value = CheckChar
}


</SCRIPT>

Misschien niet de mooiste manier (client-side) maar het werkt wel... Tnx Everybody

Sempron 3800+ 8k9a7i


  • drm
  • Registratie: Februari 2001
  • Laatst online: 09-06-2025

drm

f0pc0dert

RM-rf:
hou alsjeblieft op met een javascript dat strings aanpast voor een SQL-database, dat is 3x dom, clientside(...)
't kon ook nog ASP zijn ;)

En dan nog, ik heb er niets op tegen. Ik zou het zelf niet zo gauw doen, maar dat is weer een ander verhaal...

Music is the pleasure the human mind experiences from counting without being aware that it is counting
~ Gottfried Leibniz


  • Annie
  • Registratie: Juni 1999
  • Laatst online: 25-11-2021

Annie

amateur megalomaan

Op donderdag 14 februari 2002 15:52 schreef Davidoff:
Owkee! probleem opgelost. Na een beetje kijken had ik een foutje gemaakt. De code is nu:
[..]
Iets korter:
code:
1
2
3
4
5
6
7
<script language="javascript" type="text/javascript">
function Quot()
{
  var oInput = document.frmAddProject.Description;
  oInput.value = oInput.value.replace(/'/g, "''");
}
</script>

Today's subliminal thought is:


  • Davidoff402
  • Registratie: Oktober 2000
  • Laatst online: 24-03-2022

Davidoff402

The more you tweak....

Topicstarter
Wowie! :) Dus het kan een stukkie makkelijker!:p

Sempron 3800+ 8k9a7i

Pagina: 1