Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 14

Discussione: Replace e virgolette

  1. #1
    Utente di HTML.it L'avatar di rosbon
    Registrato dal
    Feb 2001
    Messaggi
    194

    Replace e virgolette

    Salve, il problema che pongo è già stato ampiamente dibattuto, e da una ricerca
    che ho fatto ho letto molti post, ma non ho ancora trovato la soluzione al problema.
    La situazione è questa:
    recupero i dati da un form così: variabile = replace(request.form("variabile"), "'", "''").
    Fin qui tutto a posto, nel Db i dati vengono scritti regolarmente.
    Il problema sorge quando i dati sono estratti.
    Tutto ciò che ho scritto con l'apostrofo mi viene evidenziato successivamente con un
    doppio apostrofo, e se modifico quel dato l'apostrofo aumenta sempre di numero.
    C'è una soluzione per ovviare a questo aumento smisurato dell'apostro??
    Cioè considerato il controllo da effettuare con il replace, è possibile inserire i dati
    nel Db(Access) con il singolo apostrofo (') e non con il doppio ('')??
    Ros.

  2. #2
    Scusa...ma quando estrai i dati dal database non devi fare il replace, solo in inserimento o in aggiornamento devi usare la funzione che raddoppia gli apici
    Purtroppo bisogna imparare che il computer non sbaglia...fa solo quello che gli dici di fare

    www.netpolaris.it

  3. #3
    Strano. Nel DB i dati dovrebbero finirci con un solo apice.

  4. #4
    Utente di HTML.it L'avatar di rosbon
    Registrato dal
    Feb 2001
    Messaggi
    194
    Certo, certo.
    Io intendevo che solo in fase di scrittura o variazione utilizzo il replace.
    Quando estraggo i dati (es.D''Uva), la variabile mi viene scritta con il doppio apostrofo.
    Devo supporre che sono entrati con il doppio apice non trovi??
    Ros.

  5. #5
    Sono d'accordo con Mems a questo punto...sei certo di non fare il replace due volte? prova a postare il codice della pagina in cui fai il recupero dei dati e l'inserimento nel database...
    Purtroppo bisogna imparare che il computer non sbaglia...fa solo quello che gli dici di fare

    www.netpolaris.it

  6. #6
    Io fatto questa prova e a me nel db finisce un solo apice (nella form ho scritto Valle D'Aosta come dato da memorizzare.
    codice:
    <%@LANGUAGE="VBSCRIPT" CODEPAGE="1252"%>
    <%
    submit = request.serverVariables("REQUEST_METHOD") = "POST"
    page = request.serverVariables("PATH_INFO")
    
    set conn = server.createObject("ADODB.Connection")
    conn.open "Provider=Microsoft.Jet.OLEDB.4.0; Data Source = " & server.mapPath("\samples\db\db.mdb")	
    
    	if submit then
    	
    		dati = request.form("dati")
    		dati = replace(dati,"'","''")
    		
    		sql = "INSERT INTO tabella_dati(campo_dati) VALUES('" & dati & "')"	
    		conn.execute(sql)
    	
    	end if
    %>
    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
    <html>
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
    <title>Documento senza titolo</title>
    </head>
    
    <body>
    <form name="myForm" action="<%=page%>" method="post">
    <textarea name="dati" cols="30" rows="10"></textarea>
    <input type="submit" value="VAI">
    </form>
    <%
    	sql = "SELECT campo_dati FROM tabella_dati"
    	set rs = conn.execute(sql)
    	
    		if not rs.eof then
    		do until rs.eof
    		response.write rs("campo_dati") & "</br>"
    		rs.moveNext
    		loop
    		end if
    		
    	rs.close
    	set rs = nothing
    
    conn.close
    set conn = nothing
    %>
    </body>
    </html>

  7. #7
    Utente di HTML.it L'avatar di rosbon
    Registrato dal
    Feb 2001
    Messaggi
    194
    Ok lo semplifico un po':
    codice:
    variabile = replace(request.form("variabile"), "'", "''")
    
    Dim sql, rs
    
    sql = "Select * from prova"
    Set rs = Server.CreateObject("ADODB.Recordset")
    rs.open sql, conn, 3, 3
    
    
    'Aggiungi
    RS.AddNew
    rs.Fields("variabile") = variabile
    rs.update
    
    'Chiusura
    rs.Close
    Set rs=Nothing
    conn.close
    Set conn=Nothing
    Ok tutto qua. Questo è l'inserimento, e vi garantisco che quando evidenzio i dati l'apostrofo è doppio.
    Ros.

  8. #8
    Originariamente inviato da Shagrat
    Sono d'accordo con Mems a questo punto...sei certo di non fare il replace due volte? prova a postare il codice della pagina in cui fai il recupero dei dati e l'inserimento nel database...
    Sono certo che lui fa la replace dell'apice sia in inserimento/aggiornamento che in lettura, ovvero la fa sia in entrata che in uscita da db.
    Quando leggi i dati dal db non devi fare la replace del carattere apice.
    Il carattere apice viene rimpiazzato con due apici singoli perchè nel linguaggio SQL l'apice indica la chiusura di stringa.
    Se non vuoi usare la replace del carattere apice allora non usare le query di INSERT INTO, ma usa ADO, ovvero il recordset di ADO, utilizzando i metodi addNew e quindi update.

  9. #9
    Originariamente inviato da rosbon
    Ok lo semplifico un po':
    codice:
    variabile = replace(request.form("variabile"), "'", "''")
    
    Dim sql, rs
    
    sql = "Select * from prova"
    Set rs = Server.CreateObject("ADODB.Recordset")
    rs.open sql, conn, 3, 3
    
    
    'Aggiungi
    RS.AddNew
    rs.Fields("variabile") = variabile
    rs.update
    
    'Chiusura
    rs.Close
    Set rs=Nothing
    conn.close
    Set conn=Nothing
    Ok tutto qua. Questo è l'inserimento, e vi garantisco che quando evidenzio i dati l'apostrofo è doppio.
    AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA!
    Infatti. Fai la replace e poi usi ADO. Per questo nel DB ti ci finiscono due apici.
    Leva questo:
    codice:
    variabile = replace(request.form("variabile"), "'", "''")
    e lo rimpiazzi con questo:
    codice:
    variabile = request.form("variabile")

  10. #10
    ecco svelato l'arcano!

    Se usi ADO ti raddoppia già lui gli apici quindi lui ne trova due nella variabile e ne inserisce due nel database!

    codice:
    variabile = replace(request.form("variabile"), "'", "''")
    
    Dim sql, rs
    
    sql = "INSERT INTO prova SET varabile='"&variabile&"'"
    
    conn.execute sql
    conn.close
    oppure togli il raddoppiamento (si dice così?) degli apici
    Purtroppo bisogna imparare che il computer non sbaglia...fa solo quello che gli dici di fare

    www.netpolaris.it

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.