salvare codice html in mysql

luigithen

Utente Attivo
31 Mar 2020
84
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
 
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
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
 

Discussioni simili