Basit HTML editor kullanıyordum daha sonra geliştirilmiş bir text editöre ihtiyacım olduğu için textarea'ya CKeditor'ü dahil ettim.
Formu POST ettiriyorum fakat textarea içerisine girmiş olduğum body içeriğini veritabanına yazmıyor.
Boş olarak kayıt ediyor.
Aşağıda ilgili kodları görebilirsiniz;
HTML formum:
<form id="post-form">
<label for="title">Başlık:</label><br>
<input class="form-control" type="text" id="title" name="title"><br>
<label for="body">İçerik:</label><br>
<textarea id="body" name="body"></textarea>
</br>
<label>Departman:</label>
<?php
// Kategorileri dropdown listesi olarak gösterin
$sql = "SELECT id, name FROM categories";
$result = mysqli_query($conn, $sql);
echo '<select class="form-select" id="category_id" name="category_id">';
while ($row = mysqli_fetch_assoc($result)) {
echo '<option value="' . $row['id'] . '">' . $row['name'] . '</option>';
}
echo '</select>';
?>
<input class="btn btn-success" type="submit" name="submit" value="Ekle">
</form>CKEditor javascript kodlarım; <script type="text/javascript">
var editor = CKEDITOR.replace( 'body', {
filebrowserBrowseUrl : '../assets/ckfinder/ckfinder.html',
filebrowserImageBrowseUrl : '../assets/ckfinder/ckfinder.html?type=Images',
filebrowserFlashBrowseUrl : '../assets/ckfinder/ckfinder.html?type=Flash',
filebrowserUploadUrl : '../assets/ckfinder/core/connector/php/connector.php?command=QuickUpload&type=Files',
filebrowserImageUploadUrl : '../assets/ckfinder/core/connector/php/connector.php?command=QuickUpload&type=Images',
filebrowserFlashUploadUrl : '../assets/ckfinder/core/connector/php/connector.php?command=QuickUpload&type=Flash'
});
CKFinder.setupCKEditor( editor, '../' );
</script>Formu POST ettiğim AJAX;<script>
// Form submit olayına bir dinleyici ekleyin
document.getElementById('post-form').addEventListener('submit', addAnnouncement);
function addAnnouncement(e) {
// Form verilerini alın
var title = document.getElementById('title').value;
var body = document.getElementById('body').value;
var category_id = document.getElementById('category_id').value;
// Ajax isteği oluşturun
var xhr = new XMLHttpRequest();
xhr.open('POST', 'duyuru_ekle_islem.php', true);
xhr.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
xhr.onload = function() {
if (this.status == 200) {
// Duyuru ekleme işleminin başarılı olup olmadığını kontrol edin
if (this.responseText == "Duyuru başarıyla eklendi") {
// Başarılı ise bir mesaj gösterin
alert("Duyuru başarıyla eklendi");
} else {
// Başarısız ise bir hata mesajı gösterin
alert("Hata: " + this.responseText);
}
}
}
// Form verilerini gönderin
var data = "title=" + title + "&body=" + body + "&category_id=" + category_id;
xhr.send(data);
e.preventDefault();
}
</script>Duyuru_ekle_islem.php dosyası;<?php
require_once('config.php');
ini_set('display_errors', 1); // Hata mesajlarını görüntülemeyi aktif hale getirin
error_reporting(E_ALL); // Tüm hata seviyelerini görüntüle
// Formdan gönderilen verileri alın
$title = mysqli_real_escape_string($conn, $_POST['title']);
$body = mysqli_real_escape_string($conn, $_POST['body']);
$category_id = mysqli_real_escape_string($conn, $_POST['category_id']);
if(!$mail->send()) {
// E-posta gönderilemedi
echo 'E-posta gönderilemedi: ' . $mail->ErrorInfo;
} else {
// E-posta başarıyla gönderildi
echo 'E-posta başarıyla gönderildi.';
}
// Verileri veritabanına ekleyen SQL sorgusunu oluşturun
$sql = "INSERT INTO announcements (title, body, category_id) VALUES ('$title', '$body', '$category_id')";
// SQL sorgusunu çalıştırın
if (mysqli_query($conn, $sql)) {
// Sorgu başarıyla çalıştırıldıysa, post eklendi
echo 'Post eklendi';
} else {
// Sorgu çalıştırılamadıysa, hata mesajını yazdırın
echo 'Post eklenemedi: ' . mysqli_error($conn);
}
// Veritabanı bağlantısını kapatın
mysqli_close($conn);
?>


