Problemen met CKeditor

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Suzanne Brok

Suzanne Brok

08/12/2015 17:37:09
Quote Anchor link
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)

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
<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>

- Ariën -:
Gelieve in het vervolg bij code de [code][/code]-tags gebruiken.
Hier kan je meer lezen over de mogelijke opmaakcodes.
Alvast bedankt!
Gewijzigd op 08/12/2015 18:39:50 door - Ariën -
 
PHP hulp

PHP hulp

22/11/2024 22:37:01
 
- Ariën  -
Beheerder

- Ariën -

08/12/2015 18:45:54
Quote Anchor link
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:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
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 mysqli_real_escape_string-functie op al je $_POST (en evt. $_GET, $_ENV en $_COOKIE)-variabelen.
Gewijzigd op 08/12/2015 18:46:29 door - Ariën -
 
Suzanne Brok

Suzanne Brok

08/12/2015 19:05:32
Quote Anchor link
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.
 
- Ariën  -
Beheerder

- Ariën -

08/12/2015 19:09:34
Quote Anchor link
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!
 
Thomas van den Heuvel

Thomas van den Heuvel

08/12/2015 19:28:53
Quote Anchor link
- 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:
Quote:
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.
 
Suzanne Brok

Suzanne Brok

08/12/2015 19:36:50
Quote Anchor link
Bedankt voor de tips. Ik ben er uiteindelijk uit en hij werkt perfect.
 



Overzicht Reageren

 
 

Om de gebruiksvriendelijkheid van onze website en diensten te optimaliseren maken wij gebruik van cookies. Deze cookies gebruiken wij voor functionaliteiten, analytische gegevens en marketing doeleinden. U vindt meer informatie in onze privacy statement.