salvare codice html in mysql

luigithen

Utente Attivo
31 Mar 2020
66
3
8
non saprei come spiegare al meglio per farmi capire , quello che vorrei ottenere è che se copio ed incollo un testo dal web mi salva tutto compreso la formattazione h4 strong p ecc ecc nel database

utilizzo tinymce che funziona correttamente ma solo su alcuni casi esempio

se copio ed incollo questo testo nessun problema viene salvato

HTML:
<h4>Template Simple</h4>
<p>Un template pensato per mettere in <b>Mostra</b> al meglio la vendita del tuo <b>prodotto</b>, dar modo al cliente di
visualizzare al meglio i contenuti con <b>immagini grandi</b> al quale cliccando sopra queste si possono ingrandire.</p>
<p>Un corpo centrale pieno di informazioni dove inserire le caratteristiche del prodotto in vendita con una lettura rapida e
veloce del contenuto inserito.</p>
<h4>Cosa Include:</h4>
<ul>
<li>Editor di testo</li>
<li>File Html & Css</li>
<li>Galleria Immagini</li>
<li>File scaricabile *</li>
</ul>
<h4>Template Simple</h4>
<p>Il Template per eBay che abbiamo realizzato supporto tutti i dispositivi con il quale un potenziale cliente si collega al
vostro negozio o asta, infatti questo template è 100% responsive. Sicuro e privo di codici non autorizzati da eBay.</p>
<p>Le immagini ed i testi utilizzati sono a solo scopo illustrativo e pertanto non rappresentano la vendita di questo
prodotto.</p>
<p>* se non vuoi utilizzare il nostro editor di testo ma desideri ricevere il file, ti preghiamo di inviarci una mail.</p>
se invece copio ed incollo questo testo non viene salvato

HTML:
<H2>Idropulitrice Nilfisk E 145.4-9 X-TRA</H2><P><STRONG><I>Art. 128471185</I></STRONG></P><P>&nbsp;</P><P>L'<STRONG>Idropulitrice Nilfisk E 145.4-9 X-TRA</STRONG> è un'idropulitrice <STRONG>monofase</STRONG>, facile da usare, adatta per la pulizia frequente di grandi aree. Inoltre può essere utilizzata per il lavaggio di auto, biciclette, e mobili da giardino, pulizia di terrazze, muretti o altre superfici di medie e grandi dimensioni.</P><P>Idropulitrice dotata di <STRONG>pompa in alluminio</STRONG> per un'elevata durata e <STRONG>motore a induzione da 2100 W</STRONG> per raggiungere una <STRONG>portata</STRONG> massima di <STRONG>500 l/h</STRONG> e una pressione di <STRONG>155 bar</STRONG>. Viene fornita con un avvolgitubo per riporre in ordine il tubo quando non in uso. Un'altra caratteristica pratica è la possibilità di utilizzare gli appositi vani per riporre ugelli, lancia e impugnatura direttamente sull'idropulitrice.</P><P>La connessione degli accessori è del tipo <STRONG>Clic &amp; Clean</STRONG>, facile da utilizzare e compatibile con tanti altri accessori opzionali. Gli ugelli in dotazione sono di due tipi: l'ugello <STRONG>Tornado PR</STRONG> (con regolazione della pressione) e l'ugello <STRONG>Powerspeed</STRONG> (ad alto impatto).</P><P>&nbsp;</P><H3><P>CARATTERISTICHE</P></H3><UL><LI>Avvolgitubo <LI><STRONG>Pompa in alluminio </STRONG><LI>Start/stop automatico <LI>Sistema aggancio accessori Click&amp;Clean <LI>Motore a induzione <LI><STRONG>Carrello integrato </STRONG><LI>Avvolgicavo alimentazione <LI>Monofase</LI></UL><P>&nbsp;</P><H3>IN DOTAZIONE</H3><UL><LI>Tubo ad alta pressione 9 m (art. 128500654) <LI>Pistola G4&nbsp;(art. 128500071) <LI>Lancia G2 C&amp;C (art. 128500073) <LI>Ugello Powerspeed (art. 128501153) <LI>Ugello Tornado PR (art. 128500854) <LI>Ugello Tubo (art. 128500676) <LI>Testina schiuma con barattolo (art. 128500077) <LI>Manuale di istruzioni</LI></UL><P>&nbsp;</P>
ho provato anche senza tinymce ed il risultato è sempre lo stesso il 1 lo salva ed il 2 no

script tinymce
JavaScript:
<script>
tinymce.init({
  selector: '#editor1',
  height: 400,
  menubar: false
});
</script>
php
PHP:
<?php
                                    require_once("include/database.php");
                                    $db_handle = new DBController();
                                    if(!empty($_POST["submitdesc"])) {
                                            $query = "UPDATE descrizione set descrizione = '".$_POST["descrizione"]."'";
                                            $result = $db_handle->executeQuery($query);
                                        if(!$result){
                                            $message = "Problem in Editing! Please Retry!";
                                        } else {
                                            header("Location:escrizione.php");
                                        }
                                    }
                                    $result = $db_handle->runQuery("SELECT * FROM descrizione");
                                    ?>
database
PHP:
<?php
class DBController {
    private $host = "localhost";
    private $user = "zzzzz";
    private $password = "zzzzzz";
    private $database = "zzzzz";
    private $conn;

    function __construct() {
        $this->conn = $this->connectDB();
    }

    function connectDB() {
        $conn = mysqli_connect($this->host,$this->user,$this->password,$this->database);
        $conn -> set_charset("utf8");
        return $conn;
    }

    function runQuery($query) {
        $result = mysqli_query($this->conn,$query);
        while($row=mysqli_fetch_assoc($result)) {
            $resultset[] = $row;
        }
        if(!empty($resultset))
            return $resultset;
    }

    function numRows($query) {
        $result  = mysqli_query($this->conn, $query);
        $rowcount = mysqli_num_rows($result);
        return $rowcount;
    }

    function executeQuery($query) {
        $result  = mysqli_query($this->conn, $query);
        return $result;
    }
}
?>
form con tinymce
PHP:
                                <form method="post" action="">
                    <div class="col-sm-12">
                      <br>
                                        <textarea class='tiny-mce' id='editor1' name="descrizione"><?php echo $result[0]["descrizione"]; ?></textarea>
                  </div>

                <div class="col-sm-12">
                <br>
              <input type="submit" name="submitdesc" id="submitdesc" class="btn btn-primary" value="Modifica / Aggiorna" />
                  </div>
                                </form>
form senza tinymce
PHP:
<form class="form-label-left input_mask" method="post" action="">
                  <div class="col-sm-12">
                    <br>
                  <label for="descrizione">da usare solo se non riesci ad incollare il testo sopra</label>
                  <input type="text" id="descrizione" class="form-control" name="descrizione" />
                </div>

              <div class="col-sm-12">
              <br>
            <input type="submit" name="submitenotiny" id="submitenotiny" class="btn btn-outline-dark" value="Salva / Aggiorna" />
                </div>
              </form>
grazie
 

marino51

Utente Attivo
28 Feb 2013
2.931
166
63
Lombardia
il testo non viene salvato, quando al suo interno sono presenti dei caratteri che contrastano con la sintassi sql, ad esempio gli apici

a riprova, inserisci un apice all'interno del testo che viene salvato e vedrai che anch'esso verrà rifiutato

questo significa dover gestire i caratteri che possono provocare errori nella gestione sql
di seguito un esempio per gestire l'apice in mysql
PHP:
$set['slash']      = "\\";

function aggiornaDB($azione = "")
{
    global $conn, $set, $row, $message;

    $save = $row;
    $row  = FixSQL($row);

    switch ($azione)
    {
        case "conferma ins":
            $sql = "INSERT INTO film(movie_title) VALUES ("
                 . "  '" . $row['movie_title']  . "'"
                 . "  )";
            break;

        case "conferma mod":
            $sql = "UPDATE film SET"
                 . "  movie_title='"   . $row['movie_title']  . "'"
                 . "  WHERE film_id='" . $row['film_id']      . "'";
            break;
    }
    $row = $save;

function FixSQL( $params=array() )
{
    global $set;

    foreach ($params as $key => $value)
    {
        if ( strpos($value, "'") !== false )
        {
            $params[$key] = str_replace("'", $set['slash']."'", $value);
        }
    }
    return $params;
}
 
  • Like
Reactions: luigithen

luigithen

Utente Attivo
31 Mar 2020
66
3
8
il testo non viene salvato, quando al suo interno sono presenti dei caratteri che contrastano con la sintassi sql, ad esempio gli apici

a riprova, inserisci un apice all'interno del testo che viene salvato e vedrai che anch'esso verrà rifiutato

questo significa dover gestire i caratteri che possono provocare errori nella gestione sql
di seguito un esempio per gestire l'apice in mysql
PHP:
$set['slash']      = "\\";

function aggiornaDB($azione = "")
{
    global $conn, $set, $row, $message;

    $save = $row;
    $row  = FixSQL($row);

    switch ($azione)
    {
        case "conferma ins":
            $sql = "INSERT INTO film(movie_title) VALUES ("
                 . "  '" . $row['movie_title']  . "'"
                 . "  )";
            break;

        case "conferma mod":
            $sql = "UPDATE film SET"
                 . "  movie_title='"   . $row['movie_title']  . "'"
                 . "  WHERE film_id='" . $row['film_id']      . "'";
            break;
    }
    $row = $save;

function FixSQL( $params=array() )
{
    global $set;

    foreach ($params as $key => $value)
    {
        if ( strpos($value, "'") !== false )
        {
            $params[$key] = str_replace("'", $set['slash']."'", $value);
        }
    }
    return $params;
}
ti ringrazio molto