• De afgelopen dagen zijn er meerdere fora waarop bestaande accounts worden overgenomen door spammers. De gebruikersnamen en wachtwoorden zijn via een hack of een lek via andere sites buitgemaakt. Via have i been pwned? kan je controleren of jouw gegeven ook zijn buitgemaakt. Wijzig bij twijfel jouw wachtwoord of schakel de twee-staps-verificatie in.

contenteditable veld met ajax in database verwerken

Status
Niet open voor verdere reacties.

Poelsnip

Gevestigd lid
Lid geworden
24 sep 2013
Berichten
483
Waarderingsscore
0
Ik ben bezig met een tamelijk simpele agenda/todolijst in php+sqlite. Werkt allemaal prima... toevoegen, aanpassen, verwijderen.
Nu wil het zo maken dat je op een datumveld of omschijving klikt en de aanpassing dan via ajax aangepast wordt. Er is genoeg te vinden op het internet alleen blijken de meeste gebruik te maken van jquery en ik wil het in plain javascript voor elkaar zien te krijgen.

Met ajax heb ik niet veel gedaan, af en toe wat code knippen en plakken om divs te vernieuwen.
Mijn idee is het het ongeveer zoals onderstaande structuur moet worden. Misschien kan iemand me een duw in de juiste richting geven.

page.php:
Code:
<table>
...
<tr class="today">
	<td id="dateid-72" name="dateid-72" contentEditable="true" onblur="doDate(72)">20 Apr 2014</td>
	<td id="timeid-72" name="timeid-72" contentEditable="true" onblur="doTime(72)">00:00</td>
	<td id="taskid-72" name="taskid-72" contentEditable="true" onblur="doTask(72)">Een nieuwe taak</td>
	<td>
	<a href="edit.php?id=72" >edit</a> <!-- deze kan weg als ajax werkt -->
        <a href="action.php?do=change&id=72">change</a> <!-- status veranderen -->
	<a href="action.php?do=del&id=72">del</a> <!-- verwijderen -->
</td>
...
</table>

actions.php
Code:
if post = doTask(id) {
	$sql = "UPDATE 
			todo
			SET
			task = :task
			WHERE
			id = :id";
	
	$stmt = $db->prepare($sql);
	
	$stmt->bindParam(':task', $_POST['taskid-id']);
	$stmt->bindParam(':id', $_POST['id']);
	...
}

function.js
Code:
function doTask(id) {
	$.ajax({
			type: "POST",
			url: "actions.php?id=id",
			data: $task,
			success: function(){
				// hier een boodschap?
				}
		}); 
	return false;
}


---------- Bericht toegevoegd op 22:23 ---------- Vorige bericht was op 22:52 ----------

Nou, ik ben al een stuk opgeschoten. Ik heb een werkend systeem met mysql. :)

HTML:
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title></title>
<link rel="stylesheet/css" href="style.css">
<script type="text/javascript">
   
function doThis() {
	var request = new XMLHttpRequest();
	
	// waarde uit de div halen
	var ts = document.getElementById('task1').innerHTML;
	
	// data verzamelen voor verzenden... file.php?task=
	var data = "task="+ts;
	
	request.open('POST', 'actions.php', true);
	request.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded; charset=UTF-8');
	request.send(data);
	
	// klaar? Dan melding tonen
	request.onreadystatechange = function() {
		if (request.readyState == 4 && request.status==200) {
			document.getElementById('message').innerHTML = request.responseText;
		}
	}
}

</script>
</head>

<body>

<div id="task1" name="task1" contentEditable="true" onblur="doThis()">Hier komt de tekst...</div>
<div id="message"><div>

</body>
</html>

PHP:
<?php
	 if (isset($_POST['task'])) {
		$des = trim($_POST['task']); 
		
		$db = '';
		$dbuser = '';
		$dbpass = '';
		$dbhost = '';

		$conn = mysql_connect($dbhost, $dbuser, $dbpass);
		if(! $conn )
		{
		  die('Could not connect: ' . mysql_error());
		}
		
		$sql = "UPDATE cont_edit SET tekst = '". $des ."' WHERE naam='naam'";

		mysql_select_db('test');
		$retval = mysql_query( $sql, $conn );
		if(! $retval )
		{
		  die('Could not update data: ' . mysql_error());
		}
		echo "Updated data successfully\n";
		mysql_close($conn);
		
    }
?>

Nu nog omzetten naar sqlite en dan uitpuzzelen hoe dit slim te verwerken is in een lijst met todo's.
 
Laatst bewerkt door een moderator:
Status
Niet open voor verdere reacties.
Steun Ons

Nieuwste berichten

Terug
Bovenaan