Voor het veld omschrijving moet ik de CKeditor invoegen.
Dat is me gelukt maar wanneer ik dan op wijzigen druk dan doet hij niets.
Kan iemand zeggen wat ik verkeerd doe?
Een soortgelijk script werkte wel (maar dan zonder CKeditor)


<html>
<head>
    	<script src="CKEditor/ckeditor.js"></script>
	<script src="http://code.jquery.com/jquery.min.js">
</script>
	<?php
	if (isset($_POST['Omschrijving'])){
	echo '<pre>';	
	print_r( $_POST['Omschrijving']);	
	echo '</pre>';
	}
?>
</head>
<body>

<?php
// include functie verbinden met database + verbinden met vriendenboek
include 'VerbindenmetDB.php'
?>
<?php
//Querry
$query = "SELECT * FROM vrienden";
//Gegevens uit query halen
$result = mysqli_query($conn, $query) or die ("query fout".mysqli_error($conn));

//Resultaat op scherm
echo "<table border='1'>";
while ( $record=mysqli_fetch_array($result) ) {
	$ID=$record['ID'];
	$Voornaam=$record['Voornaam'];
	$Achternaam=$record['Achternaam'];
	$Omschrijving=$record['Omschrijving'];
	echo "<form id='Wijzigen' action='' method='post'><tr><td><input type='hidden' name='ID' id='ID' value='".$ID."'>
	</td><td><input type='text' name='Voornaam' id='Voornaam' value='".$Voornaam."'>
	</td><td><input type='text' name='Achternaam' id='Achternaam' value='".$Achternaam."'>
	</td><td><input type='text' name='Omschrijving' id='Omschrijving' value='".$Omschrijving."'>
	<form>
	<textarea class='ckeditor' id='Omschrijving' name='Omschrijving' rows='10' cols='80'> 
	" . $Omschrijving . "
	</textarea>
	<script>CKEDITOR.replace( 'Omschrijving' );</script>
	</form>
	</td><td><input type='Submit' name='Insert' value='Wijzigen'></td></tr></form>";
}
echo "</table>";

if (isset($_POST['Wijzigen'])) {
	$IDnieuw=$_POST['ID'];
	$Voornaamnieuw=$_POST['Voornaam'];
	$Achternaamnieuw=$_POST['Achternaam'];
	$Omschrijvingnieuw=$_POST['Omschrijving'];
	$query = "UPDATE vrienden
			SET Voornaam = '$Voornaamnieuw', Achternaam = '$Achternaamnieuw', Omschrijving = '$Omschrijvingnieuw'
			WHERE ID = '$IDnieuw' ";
	mysqli_query ($conn,$query) ;
	echo "gegevens zijn aangepast";
}


mysqli_free_result($result);

//Verbinding sluiten;
mysqli_close( $conn );
?>
</body>
</html>

Er bestaat geen $_POST met de naam (name)'Wijzigen'.

Het beste is altijd om te kijken of een formulier verstuurd is, dan in plaats van te kijken of een bepaalde formulierknop is aangeroepen.

gebruik dus in plaats van lijn 47, dit:

if($_SERVER['REQUEST_METHOD']=="POST") {


Daarnaast is het onnodig om lijn 48 t/m 51 aan te maken. Je kan prima in je query de $_POST['Achternaam'] etc. gebruiken.

Let daarbij ook op SQL-injection, waarmee anderen redelijk eenvoudig toegang kunnen krijgen tot je database door het aanpassen van de queries. Gebruik daarom de [php]mysqli_real_escape_string[/php]-functie op al je $_POST (en evt. $_GET, $_ENV en $_COOKIE)-variabelen.
Het werkt nog niet super (hij wijzigt nog niet) maar ik ben al op de goede weg.
Over die SQL injection weet ik. Dat is de volgende stap :) Bedankt iig voor de tip.
Zorg in ieder geval voor goede foutafhandeling op je query. Je kan prima met een if-else statement controleren of deze false teruggeeft (TRUE geeft hij namelijk nooit terug, maar een resource), en in dat geval toon je een foutmelding.

Of nog netter is om de OO versie van MySQLi te gebruiken, en je ->query() methode te extenden, zodat je altijd meteen foutafhandeling hebt. Het gaat wel een stapje verder!
- Ariën - op 08/12/2015 19:09:34
TRUE geeft hij namelijk nooit terug, maar een resource

Dat is niet helemaal waar, van php.net:
Returns FALSE on failure. For successful SELECT, SHOW, DESCRIBE or EXPLAIN queries mysqli_query() will return a mysqli_result object. For other successful queries mysqli_query() will return TRUE.

Bedankt voor de tips. Ik ben er uiteindelijk uit en hij werkt perfect.

Reageren