• 29-12-2022, 15:00:19
    #1
    Sorun çözülmüştür. @QuarkChain; arkadaşa yardımları için teşekkür ederim.

    Merhabalar,

    Bir duyuru sistemi yazıyorum.
    Bu sistemde bulunan "Duyuru Ekle" bölümünde CKeditor kullanıyorum fakat şu şekilde saçma bir sorun ile karşı karşıyayım.
    Editöre yazdığım içerik sadece belli bir kısmını yazıp, veritabanına kaydediyor. Diğer kısımlar nereye gidiyor, nereye uçuyor anlamadım.
    "tail -f" ile error.log dosyasını takip ettiğimde anlık olarak bir hata düştüğünüde göremiyorum.

    Soruna ait 20 saniyelik bir video var izlerseniz daha detaylı olarak anlayacaksınız;

    https://disk.yandex.com.tr/i/LrgmBobxrp_9uA

    Bu içeriği şu kod ile gönderiyorum;

    <!DOCTYPE html>
    <html>
    <head>
        <meta charset="utf-8">
        <meta name="viewport" content="width=device-width, initial-scale=1">
        <title>ENTES | Duyuru Yönetimi</title>
        <link href="https://cdn.jsdelivr.net/npm/bootstrap@5.3.0-alpha1/dist/css/bootstrap.min.css" rel="stylesheet" integrity="sha384-GLhlTQ8iRABdZLl6O3oVMWSktQOp6b7In1Zl3/Jr59b6EGGoI1aFkw7cmDA6j6gD" crossorigin="anonymous">
      <script type="text/javascript" src="https://cloud.entes.com.tr/test_turan/duyuru/assets/ckeditor/ckeditor.js"></script>
      <script type="text/javascript" src="https://cloud.entes.com.tr/test_turan/duyuru/assets/ckfinder/ckfinder.js"></script>
    
    </head>
    <body>
    
    <?php
      require_once('config.php');
      include('../bolumler/menu.php');
    ?>
    
    <div class="container">
    
      <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
        $sql = "SELECT c.id, c.name
                FROM categories c
                INNER JOIN user_category_access uca ON c.id = uca.category_id
                WHERE uca.user_id = ?";
    
        $stmt = $conn->prepare($sql);
        $stmt->bind_param('i', $user_id);
        $stmt->execute();
    
        $result = $stmt->get_result();
    
        echo '<select class="form-select" id="category_id" name="category_id">';
        while ($row = $result->fetch_assoc()) {
          echo '<option value="' . $row['id'] . '">' . $row['name'] . '</option>';
        }
        echo '</select>';
      ?>
    
        <input class="btn btn-success" type="submit" name="submit" value="Ekle">
    
      </form>
    <!-- Düzenleme formunu gizli -->
    <form id="edit-announcement-form" style="display:none;">
      <!-- Düzenlenecek duyurunun ID'sini tutan bir gizli alan ekleyin -->
      <input type="hidden" id="edit-announcement-id">
      <!-- Düzenlenecek duyurunun başlığını gösteren bir alan ekleyin -->
      <label for="edit-title">Başlık:</label>
      <input type="text" id="edit-title">
      <!-- Düzenlenecek duyurunun içeriğini gösteren bir alan ekleyin -->
      <label for="edit-content">İçerik:</label>
      <textarea id="edit-content"></textarea>
      <!-- Düzenleme işlemini tamamlamak için bir düğme ekleyin -->
      <button type="submit">Düzenle</button>
    </form>
    
    </div>
    
    <script src="https://code.jquery.com/jquery-3.6.0.min.js"></script>
    <script>
        // Form submit olayına bir dinleyici ekleyin
        document.getElementById('post-form').addEventListener('submit', addAnnouncement);
    
    
    
        function addAnnouncement(e) {
          CKEDITOR.instances['body'].updateElement();
          // Form verilerini alın
          var title = document.getElementById('title').value;
          var body = document.getElementById('body').value;
          var category_id = document.getElementById('category_id').value;
    
          // Eğer title veya body boş ise, bir uyarı mesajı gösterin
          if (title == "" || body == "") {
            alert("Başlık ve içerik alanları boş bırakılamaz!");
            return;
          }
    
          // 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 dosya içeriğim;

    <?php
    
    require_once('config.php');
    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);
    
    ?>
  • 29-12-2022, 15:04:06
    #2
    Mysql de karakter sayısını kontrol ediniz.
    Edit : Veri tipini longtext seçin
  • 29-12-2022, 15:05:28
    #3
    wehwet adlı üyeden alıntı: mesajı görüntüle
    Mysql de karakter sayısını kontrol ediniz.
    İlk aklıma gelen yer orası oldu, kontrol ettim ama body içeriğim text olarak gözüküyor herhangi bir karakter sınırı yok.
  • 29-12-2022, 15:06:14
    #4
    veriyi girdiğiniz yerin karakter sayısını kontrol etmenizde fayda var hocam
  • 29-12-2022, 15:07:01
    #5
    Muhammed_AG adlı üyeden alıntı: mesajı görüntüle
    veriyi girdiğiniz yerin karakter sayısını kontrol etmenizde fayda var hocam
    Bir üstteki mesajımda tablo yapımın görüntüsü ekledim.
    İlk aklıma gelen benimde o oldu fakat text yapısında ve herhangi bir karakter sınırı bulunmuyor.
  • 29-12-2022, 15:08:14
    #6
    turansonkaya adlı üyeden alıntı: mesajı görüntüle
    Bir üstteki mesajımda tablo yapımın görüntüsü ekledim.
    İlk aklıma gelen benimde o oldu fakat text yapısında ve herhangi bir karakter sınırı bulunmuyor.
    Veri tipini longtext yapınız
  • 29-12-2022, 15:10:35
    #7
    Hocam ilk önce veritabanına kaydetmeden herhangi bir yere echo ile yazdırmayı deneyin zaten veritabanına gelen ile aynı sonuç alırsanız sorun kodlardadır
  • 29-12-2022, 15:11:16
    #8
    wehwet adlı üyeden alıntı: mesajı görüntüle
    Veri tipini longtext yapınız
    "LONGTEXT" olarak düzelttim fakat sonuç yine aynı son eklediğim 2 kayıt aşağıdaki gibi;
  • 29-12-2022, 15:14:35
    #9
    Config.php dene var gelen post verileri bir yerde filtreliyorolabilir