Jquery Text Edit със DB

Weezy

Registered
Здравейте,

някой може ли сподели това как би могло да стане, поноже на тема jquery съм много гол.
Става на въпрос за това в DB-то имам 1 новина, която я изкарвам в сайта, но за по-лесно реших, че за редактиране ще е с Jquery, но така и не попаднах на качествен и работещ код в интернет или поне аз не успях да го нагодя. Та някой може ли да сподели как би могло да стане да редактирам даденият текст, който се намира в индекса и да се запазва? Smile +1

Jquery код:
[js]
$(document).ready(function() {

$("#save").click(function (e) {
var content = $('#editable').html();

$.ajax({
url: '?m=savenews',
type: 'POST',
data: {
content: content
},
success:function (data) {

if (data == '$id')
{
$("#status")
.addClass("success")
.html("Data saved successfully")
.fadeIn('fast')
.delay(3000)
.fadeOut('slow');
}
else
{
$("#status")
.addClass("error")
.html("An error occured, the data could not be saved")
.fadeIn('fast')
.delay(3000)
.fadeOut('slow');
}
}
});

});

$("#editable").click(function (e) {
$("#save").show();
e.stopPropagation();
});

$(document).click(function() {
$("#save").hide();
});

});
[/js]

Това ми взима новината и изпраща заявка към ?m=savenews
Код:
<div id="wrap">

		<div id="status"></div>
		
		<div id="content">
		
		<div id="editable" contentEditable="true">
		<?php
			//get data from database.
			$id = $_GET['id'];
$sql = mysql_query("SELECT * FROM news ORDER BY id");
$row = mysql_fetch_array($sql);


echo $row['new'];
?>		
		</div>	
		
		<button id="save">Save</button>
		</div>

	</div>

Ето и ?m=savenews, от койт си мисля, че идва и грешката. :)
Код:
<?php

$id = $_GET['id'];
	$new = $_POST['new']; //get posted data
	$content = mysql_real_escape_string($content);	//escape string	
	
	$sql = "UPDATE news SET new = '$new' WHERE id = '$id' ";
	
	if (mysql_query($sql))
	{
		echo 1;
	}
?>
 
заявката подава content .. а в ъпдейт заявката имаш new - което не го подаваш .
също така не подаваш и ID а трябва .

<input type="hidden" id="theid" value="<?php echo $_GET['id'];?>">
<div id="editable" contentEditable="true">

$id= $_POST['theid']; //get posted data
$content = $_POST['content']; //get posted data
$content = mysql_real_escape_string($content); //escape string
$sql = "UPDATE news SET new = '$content' WHERE id = '$id' ";


var theid= $('#theid').val();
var content = $('#editable').html();
.
.
$.ajax({ url: '?m=savenews',
type: 'POST',
data: 'content='+content+'&theid='+theidid, ....
 
vasilev каза:
заявката подава content .. а в ъпдейт заявката имаш new - което не го подаваш .
също така не подаваш и ID а трябва .

<input type="hidden" id="theid" value="<?php echo $_GET['id'];?>">
<div id="editable" contentEditable="true">

$id= $_POST['theid']; //get posted data
$content = $_POST['content']; //get posted data
$content = mysql_real_escape_string($content); //escape string
$sql = "UPDATE news SET new = '$content' WHERE id = '$id' ";


var theid= $('#theid').val();
var content = $('#editable').html();
.
.
$.ajax({ url: '?m=savenews',
type: 'POST',
data: 'content='+content+'&theid='+theidid, ....

Нещо не се получава, явно скрипта работи, но като дам Save и просто ми вади резултат от скрипта, че не е записано. Явно има нещо някъде.. пробвах ти скрипта, въртях го по всякакви други начини и не иска.. ;x
 
Също при success функцията:

Това: data == '$id' трябва да стане data == '1' или data == 1

Тъй като при успешна заявка ти връщаш "1".
 
Може да е от кавичките - аз имах подобен проблем - пишех '$ime_na_promenliva' и не ми се получаваше. Като махнах кавичките всичко тръгна. А и една променлива като е в единични кавички ' ако напишеш
echo '$web-tourist.net' , ще ти изкара $web-tourist.net, а не примерно линк.
 
Анонимен променливата "data" държи echo от файла със заявката. echo връща резултата във success функцията.
 
това е моя и работи :

jQuery.ajax({
type: "POST",
url: "/mobile/check.php",
data: 'starttime='+starttime+'&selecteduser='+selecteduser+'&interval='+interval,
cache: false,
success: function(response){
if(response == 1){
$('#min,#date,#hour').css('border', '3px #C33 solid');
$('#tick').hide();
$('#cross').fadeIn();
}else{
$('#min,#date,#hour').css('border', '3px #090 solid');
$('#cross').hide();
$('#tick').fadeIn();
}
}
});


както казаха това $id .. трябва да е 1 защото пост заявката ти връща едно при success .
 
Указа се, че кода си работи без грешка, просто нямало, кой да го нагласи като света, но накрая тръгна.. Има само един проблем, вади само 1 резултат, тоест зададено му е ID-1, а примерно ако искам да вкарам 3 резултата, ще искам да вада ID-1, ID-2 и ID-3... мъчих го сумата му време и не иска, и не иска.. :X Примерно да си записва по ID, като само го разпознава, но примерно да си вада което аз реша ID.. :)

Ето го джава скрипта...
[js]
$(document).ready(function() {

$("#save").click(function (e) {
var content = $('#editable').html();

$.ajax({
url: 'save.php',
type: 'POST',
data: {
content: content
},
success:function (data) {

if (data == '1')
{
$("#status")
.addClass("success")
.html("Data saved successfully")
.fadeIn('fast')
.delay(3000)
.fadeOut('slow');
}
else
{
$("#status")
.addClass("error")
.html("An error occured, the data could not be saved")
.fadeIn('fast')
.delay(3000)
.fadeOut('slow');
}
}
});

});

$("#editable").click(function (e) {
$("#save").show();
e.stopPropagation();
});

$(document).click(function() {
$("#save").hide();
});

});

[/js]

Това ми вади резултата
PHP:
		<?php
			//get data from database.
			include("db.php");
			$sql = mysql_query("select text from content where id='1'");
			$row = mysql_fetch_array($sql);			
			echo $row['text'];
		?>

това записва резултата
PHP:
<?php
	include("db.php");
	$content = $_POST['content']; //get posted data
	$content = mysql_real_escape_string($content);	//escape string	
	
	$sql = "UPDATE content SET text = '$content' WHERE id = '1' ";
	
	if (mysql_query($sql))
	{
		echo 1;
	}
?>
 
както написах в предишния пост - се подава и ID:


$id= $_POST['theid']; //get posted data
$content = $_POST['content']; //get posted data
$content = mysql_real_escape_string($content); //escape string
$sql = "UPDATE news SET new = '$content' WHERE id = '$id' ";


var theid= $('#theid').val();
var content = $('#editable').html();
.
.
$.ajax({ url: '?m=savenews',
type: 'POST',
data: 'content='+content+'&theid='+theidid, ....


в селекта също слагаш var theid= $('#theid').val();
 
за да се разбере кое не става - слагаш alert :)
за проверка дали не става нещо заради ajax заявката .. или от нещо друго .


преди

Код:
$.ajax({ url: '?m=savenews',
type: 'POST',
data: 'content='+content+'&theid='+theidid

дай един 
alert(content);
alert(theid);

така се разбира дали подаваш нещо или не .
друга пречка при мен беше че ID то не е само цифри а и букви и затова я направих така :


PHP:
$sql = "UPDATE content SET text = '".$content."' WHERE id = '".$theid."' "

съответното и в селекта .
 

Горе