TOMahawk85
Erfahrenes Mitglied
Hallo,
ich wollte für die Arbeit eine datenbankgestützte Tabelle erstellen, die sobald der Inhalt einer Zelle geändert wird, die Änderung in die Datenbank überträgt. Unter http://phppot.com/php/php-mysql-inline-editing-using-jquery-ajax/ habe ich gefunden, was ich brauchte.
Es funktioniert auch einwandfrei - außer ich will HTML-Tags, oder genauer gesagt "<" und ">", in die Datenbank übertragen. Sobald eines dieser beiden Zeichen in einer Zelle steht, wird alles ab diesen Zeichen in der Datenbank gelöscht.
Ich habe schon versucht das Problem mit "htmlspecialchars()" und "htmlentities()" in der "saveedit.php" zu lösen, hatte damit aber keinen Erfolg.
Da Ajax auch ein Teil dieses Editors ist und ich im Gegensatz zu PHP wenig bis keine Ahnung davon habe, weis ich nicht, ob es nicht vielleicht daran liegt.
Unten habe ich mal den kompletten Code (so viel ist es ja nicht) eingefügt. Es kann ja eigentlich nur an der "saveedit.php" oder der "dbcontroller.php" liegen.
Es würde mich freuen, wenn mir ein Experte verraten kann, wodurch mein Problem verursacht wird. Und das Problem mus gelöst werden, da die Arbeit mit HTML-Tags essentiell wichtig ist.
Mit freundlichen Grüßen,
TOMahawk
index.php
dbcontroller.php
saveedit.php
ich wollte für die Arbeit eine datenbankgestützte Tabelle erstellen, die sobald der Inhalt einer Zelle geändert wird, die Änderung in die Datenbank überträgt. Unter http://phppot.com/php/php-mysql-inline-editing-using-jquery-ajax/ habe ich gefunden, was ich brauchte.
Es funktioniert auch einwandfrei - außer ich will HTML-Tags, oder genauer gesagt "<" und ">", in die Datenbank übertragen. Sobald eines dieser beiden Zeichen in einer Zelle steht, wird alles ab diesen Zeichen in der Datenbank gelöscht.
Ich habe schon versucht das Problem mit "htmlspecialchars()" und "htmlentities()" in der "saveedit.php" zu lösen, hatte damit aber keinen Erfolg.
Da Ajax auch ein Teil dieses Editors ist und ich im Gegensatz zu PHP wenig bis keine Ahnung davon habe, weis ich nicht, ob es nicht vielleicht daran liegt.
Unten habe ich mal den kompletten Code (so viel ist es ja nicht) eingefügt. Es kann ja eigentlich nur an der "saveedit.php" oder der "dbcontroller.php" liegen.
Es würde mich freuen, wenn mir ein Experte verraten kann, wodurch mein Problem verursacht wird. Und das Problem mus gelöst werden, da die Arbeit mit HTML-Tags essentiell wichtig ist.
Mit freundlichen Grüßen,
TOMahawk
index.php
Code:
<?php
require_once("dbcontroller.php");
$db_handle = new DBController();
$sql = "SELECT * from list_content";
$faq = $db_handle->runQuery($sql);
?>
<html>
<head>
<title>PHP MySQL Inline Editing using jQuery Ajax</title>
<script src="http://code.jquery.com/jquery-1.10.2.js"></script>
<script>
function showEdit(editableObj) {
$(editableObj).css("background","#FFF");
}
function saveToDatabase(editableObj,column,id) {
$(editableObj).css("background","#FFF url(loaderIcon.gif) no-repeat right");
$.ajax({
url: "saveedit.php",
type: "POST",
data:'column='+column+'&editval='+editableObj.innerHTML+'&id='+id,
success: function(data){
$(editableObj).css("background","#FDFDFD");
}
});
}
</script>
</head>
<body>
<table class="tbl-qa">
<tr>
<th class="table-header">Answer</th>
</tr>
<?php
foreach($faq as $k=>$v) {
?>
<tr class="table-row">
<td contenteditable="true" onBlur="saveToDatabase(this,'description','<?php echo $faq[$k]["sku"]; ?>')" onClick="showEdit(this);"><?php echo $faq[$k]["description"]; ?></td>
</tr>
<?php
}
?>
</table>
</body>
</html>
dbcontroller.php
Code:
<?php
class DBController {
private $host = "localhost";
private $user = "bla";
private $password = "blabla";
private $database = "blablabla";
function __construct() {
$conn = $this->connectDB();
if(!empty($conn)) {
$this->selectDB($conn);
}
}
function connectDB() {
$conn = mysql_connect($this->host,$this->user,$this->password);
return $conn;
}
function selectDB($conn) {
mysql_select_db($this->database,$conn);
}
function runQuery($query) {
$result = mysql_query($query);
while($row=mysql_fetch_assoc($result)) {
$resultset[] = $row;
}
if(!empty($resultset))
return $resultset;
}
function numRows($query) {
$result = mysql_query($query);
$rowcount = mysql_num_rows($result);
return $rowcount;
}
}
?>
saveedit.php
Code:
<?php
require_once("dbcontroller.php");
$db_handle = new DBController();
$result = mysql_query("UPDATE list_content set " . $_POST["column"] . " = '".$_POST["editval"]."' WHERE sku=".$_POST["id"]);
?>