2016-03-30 8 views
0

Ich bin mir nicht sicher, ob dies möglich ist, aber ich suche nach einer Möglichkeit, den gesamten Status meiner Webseite zu speichern, ohne jedes Element explizit in einer Datenbank zu speichern.Ganzes DOM in Mysql speichern

Zum Beispiel, ich dynamisch erstellen Schaltflächen, Kontrollkästchen, Text usw., bis die Webseite wie es aussieht. Kann ich das DOM als String oder Blob in einer Datenbank speichern und später analysieren, um die Webseite zurück zu bekommen?

Ich habe versucht, Dinge wie:

var doc = document.documentElement.outerHTML; 

dann die Zeichenfolge Datenbank speichern, aber es funktioniert nicht.

Ich verwende einen AJAX-Aufruf an eine PHP-Skript mysql zu schreiben:

jQuery.ajax({ 
      type: "POST", 
      url: 'connect/database.php', 
      dataType: 'json', 
      data: {functionname: 'connect_to_database', arguments: [user_id, user, doc] }, 
      success: function (obj, textstatus) { 
      if(!('error' in obj)) { 
      } 
      else { 
      console.log(obj.error); 
      } 
      } 
      }); 

PHP wie folgt aussehen:

// connection script 
        $servername = "XXX"; 
        $username = "XXX"; 
        $password = "XXX"; 
        $dbname = "XXX"; 

        $user_id = $_POST['arguments'][0]; 
        $user = $_POST['arguments'][1]; 
        $string = $_POST['arguments'][2]; 

        // create connection 
        $conn = new mysqli($servername, $username, $password, $dbname); 
        // Check connection 
        if ($conn->connect_error) { 
         die("Connection failed: " . $conn->connect_error); 
        } 

         $sql = "INSERT INTO table (user_id, user, string) VALUES ('$user_id', '$user', '$string')"; 
        # $sql = "UPDATE crows_nest SET json_string='$configuration' WHERE user = '$user'"; 

        if ($conn->query($sql) === TRUE) { 
         echo "New record created successfully"; 
        } else { 
         echo "Error: " . $sql . "<br>" . $conn->error; 
        } 
        $conn->close(); 
+0

Was funktioniert nicht? 'document.documentElement.outerHTML' gibt eine Zeichenfolge zurück. Speichern Sie es einfach in der Datenbank. – thangngoc89

+0

@ thangngoc89 es spart nicht. Ich habe den Typ mysql auf longtext gesetzt. – Cybernetic

+0

JSON.Stringify nimmt ein Objekt und konvertiert es in eine Zeichenfolge. Keine Notwendigkeit, das zu tun, da das Dokument bereits eine Zeichenfolge ist – thangngoc89

Antwort

1

Verwenden Sie eine vorbereitete Erklärung zu vermeiden Probleme mit Sonderzeichen in dem Dokument Zeichenfolge.

$stmt = $conn->prepare("INSERT INTO table (user_id, user, string) VALUES (?, ?, ?)"); 
$stmt->bind_param("iss", $user_id, $user, $string); 
if ($stmt->execute()) { 
    echo "New record created successfully."; 
} else { 
    echo "Error: " . $sql . "<br>" . $conn->error; 
} 
+0

Das war es. Vielen Dank. – Cybernetic