Visualizzazione dei risultati da 1 a 10 su 10
  1. #1
    Utente di HTML.it
    Registrato dal
    Oct 2009
    Messaggi
    1,085

    scrivere carattere escape + doppio apice

    Ciao ..
    ho la necessità di scrivere in un campo del db (mysql), un carattere di escape (\) seguito da doppio apice .. in particolare:



    <p style=\"text-align: center;\">

    il problema è che il codice per eseguire la scrittura (update) sul db prevede il doppio apice che racchiude le istruzioni (almeno da quello che conosco io)

    codice:
       	$query = "UPDATE 0_dbweb                                                  
       	   	       SET BODY_NEW        = $body_corr_new,                                             
       	   	             FLAG_AGG_BODY = $flag_agg_body  
       	   	      WHERE id = $id";
    Quindi il doppio apice che mi ritrovo dentro al campo $body_corr_new mi scombussola le cose.
    Ho provato a racchiudere le istruzioni sql dentro all'apice singolo, ma mi dà errore:

    Colonna sconosciuta '$id'

    Grazie

  2. #2
    Utente di HTML.it L'avatar di Grino
    Registrato dal
    Oct 2004
    Messaggi
    739
    Consulta il manuale per la funzione

    mysql_escape_string($str)

    racchiudi i nomi delle variabili fra ' dopo l'uguale e sicuramente risolvi

    Ciao!

  3. #3
    Utente di HTML.it
    Registrato dal
    Oct 2009
    Messaggi
    1,085
    da quello che ho capito su 'mysql_escape_string($str)' ..
    in sostanza corrisponde al 'addslashes(stringa)'

    per quel che riguarda il mio problema ..
    ho risolto al doppio apice che ho dentro la stringa da scrivere nel campo db (usando il singolo apice per il nome della variabile - $body_corr_new ):

    codice:
       	$query = "UPDATE 0_dbweb                                                  
       	   	       SET BODY_NEW         = '$body_corr_new',                                             
       	   	             FLAG_AGG_BODY =  $flag_agg_body  
       	   	      WHERE id = $id";
    però adesso ho un altro problema ..
    non mi viene scritto l'escape contenuto nella stringa che gli passo:

    io gli passo
    <p style=\"text-align: center;\">PARTE II</p>
    e mi ritrovo scritto:
    <p style="text-align: center;">PARTE II</p>

    ah .. un'altra cosetta ..

    io in sostanza devo aggiungere (accodare) una stringa al campo del db già presente (un nuovo tag)
    se io vado a vedere il contenuto del vecchio campo, vedo che in certi punti (alla fine dei tag) si va a capo


    <p style=\"text-align: center;\">(Appunti) (*) </p>
    <p style=\"text-align: center;\">PARTE I</p>
    <p style=\"text-align: justify;\">1. I titoli civile</p>
    <p style=\"text-align: justify;\">10. Non materia. </p>


    cos'è che determina l'andare a capo ?
    perchè se io prendo il campo in questione (estratto con una select), lo metto in una variabile e ci aggiungo un altro tag ..
    ottengo che la parte vecchia rimane come prima (andando a capo), mentre la parte aggiunta si accoda alla fine ma senza andare a capo (cosa che io vorrei facesse)


    <p style="text-align: center;">(Appunti) (*) </p>
    <p style="text-align: center;">PARTE I</p>
    <p style="text-align: justify;">1. I titoli civile</p>
    <p style="text-align: justify;">10. Non materia. </p><p style="text-align: justify;">In fondo, già dottrina. </p>


    Grazie mille

  4. #4
    Utente di HTML.it L'avatar di Grino
    Registrato dal
    Oct 2004
    Messaggi
    739
    Originariamente inviato da JANUS70
    da quello che ho capito su 'mysql_escape_string($str)' ..
    in sostanza corrisponde al 'addslashes(stringa)'

    per quel che riguarda il mio problema ..
    ho risolto al doppio apice che ho dentro la stringa da scrivere nel campo db (usando il singolo apice per il nome della variabile - $body_corr_new ):

    codice:
       	$query = "UPDATE 0_dbweb                                                  
       	   	       SET BODY_NEW         = '$body_corr_new',                                             
       	   	             FLAG_AGG_BODY =  $flag_agg_body  
       	   	      WHERE id = $id";
    però adesso ho un altro problema ..
    non mi viene scritto l'escape contenuto nella stringa che gli passo:

    io gli passo
    <p style=\"text-align: center;\">PARTE II</p>
    e mi ritrovo scritto:
    <p style="text-align: center;">PARTE II</p>

    ah .. un'altra cosetta ..

    io in sostanza devo aggiungere (accodare) una stringa al campo del db già presente (un nuovo tag)
    se io vado a vedere il contenuto del vecchio campo, vedo che in certi punti (alla fine dei tag) si va a capo


    <p style=\"text-align: center;\">(Appunti) (*) </p>
    <p style=\"text-align: center;\">PARTE I</p>
    <p style=\"text-align: justify;\">1. I titoli civile</p>
    <p style=\"text-align: justify;\">10. Non materia. </p>


    cos'è che determina l'andare a capo ?
    perchè se io prendo il campo in questione (estratto con una select), lo metto in una variabile e ci aggiungo un altro tag ..
    ottengo che la parte vecchia rimane come prima (andando a capo), mentre la parte aggiunta si accoda alla fine ma senza andare a capo (cosa che io vorrei facesse)


    <p style="text-align: center;">(Appunti) (*) </p>
    <p style="text-align: center;">PARTE I</p>
    <p style="text-align: justify;">1. I titoli civile</p>
    <p style="text-align: justify;">10. Non materia. </p><p style="text-align: justify;">In fondo, già dottrina. </p>


    Grazie mille
    E' normale che ritrovi il " semplice nel risultato perchè \" produce alla fine il ". Se tu memorizzi in $var="<p style=\"text-align: center;\">PARTE II</p>"; in realtà la stringa racchiusa tra doppi apici risolve gli escape che possiamo dire essere presenti solo virtualmente e al momento opportuno diventano ". Se vuoi memorizzare il valore \" e non solo il " ti conviene all'interno di $var sostituire con una str_replace il valore '"' ovvero il doppio apice contenuto fra ' con '\"' oppure con "\\\"" che la stessa cosa del precedente.

    L'andare a capo viene ottenuto tramite \n nelle stringhe come nei file di testo quali txt o sorgenti html.

  5. #5
    Utente di HTML.it
    Registrato dal
    Oct 2009
    Messaggi
    1,085
    ho provato a sostituire il carattere come mi hai suggerito .. ma non funcsia !!


    str_replace('">', '\">', $body_prec);


    a dire il vero il problema sussiste solo per il DB, perchè se il campo lo scrivo in un file (con o senza "str_replace"), viene scritto tutto correttamente.

    Qualcuno mi aiuti per piacere !

  6. #6
    Non ti avevo gia' risposto in un altro thread simile?

    Comunque se vuoi registrare nel database questa stringa:
    codice:
    <p style=\"text-align: center;\">PARTE II</p>
    passagli questa:
    codice:
    <p style=\\"text-align: center;\\">PARTE II</p>
    perche' tu debba metterci i backslash pero' e' un altro discorso.

  7. #7
    Utente di HTML.it
    Registrato dal
    Oct 2009
    Messaggi
    1,085
    finalmente ci sono riuscito ..

    però ne devo aggiungere 2 di escape ..

    codice:
    <p style=\\\"text-align: center;\\\">PARTE II</p>

  8. #8
    Utente di HTML.it
    Registrato dal
    Oct 2009
    Messaggi
    1,085
    e se volessi modificare il contenuto del campo facendo in modo che non vada più a capo .. come dovrei fare ?



    <p style=\"text-align: center;\">(Appunti ) (*) </p>
    <p style=\"text-align: center;\">PARTE I</p>
    <p style=\"text-align: justify;\">1. I titoli civile</p>
    <p style=\"text-align: justify;\">10. Non materia. </p>


    <p style=\"text-align: center;\">(Appunti ) (*) </p>
    <p style=\"text-align: center;\">PARTE I</p>
    <p style=\"text-align: justify;\">1. I titoli civile</p>
    <p style=\"text-align: justify;\">10. Non materia. </p>


    in ..


    <p style=\"text-align: center;\">(Appunti ) (*) </p> <p style=\"text-align: center;\">PARTE I</p> <p style=\"text-align: justify;\">1. I titoli civile</p> <p style=\"text-align: justify;\">10. Non materia. </p>


    Grazie

  9. #9
    Utente di HTML.it
    Registrato dal
    Jul 2010
    Messaggi
    65
    Ma perchè salvi l'html dentro il database?

    cmq ...
    Codice PHP:
    $page="<p style=\"text-align: center;\">([i]Appunti[/i] ) (*) 
    </p> <p style=\"text-align: center;\">PARTE I
    </p> <p style=\"text-align: justify;\">1. [i]
    I titoli civile[/i]</p> <p style=\"text-align: justify;\">10. 
    Non materia. </p> "
    ;
    echo 
    $page
    Così te lo scrive su una sola riga, puoi andare a capo dove cuoi e impaginartelo per ben indentando, quando dai un echo della variabile, il client vede tutto il codice su una sola linea.

    Se invece devi spezzare il codice in più celle semplicemente printalo in linea :

    Codice PHP:
    $sql =(selectdato 1dato2 ecc..)
    (...)

    echo 
    $sql['dato1'].$sql['dato2']; 

  10. #10
    Utente di HTML.it
    Registrato dal
    Oct 2009
    Messaggi
    1,085
    forse non mi son spiegato ..
    quello indicato è un solo campo, che se io scrivo in un file di testo mi viene scritto in più righe.
    Evidentemente quando è stato scritto è stato inserito un carattere di 'a capo' alla fine di ogni tag.
    Cosa che ho fatto anch'io quando ho aggiunto un tag allo stesso campo (vedi problema affronato in precedenza nel post)

    Ora io ho l'esigenza di eliminare tali caratteri di 'a capo'

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.