• 27-12-2022, 12:28:56
    #1
    Selamlar,
    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);
    
    ?>
  • 27-12-2022, 12:31:06
    #2
    🌐 𝘀𝗼𝗰𝗶𝗳𝗹𝘆.𝗰𝗼𝗺
    var title = document.getElementById('title').value;

    üzerine bunu ekleyin;

    CKEDITOR.instances['body'].updateElement();
  • 27-12-2022, 12:32:46
    #3
    Hocam //form verilerili alın comment'inin hemen altına;
    for ( instance in CKEDITOR.instances ){
         CKEDITOR.instances[instance].updateElement();
    }
    ekleyip dener misiniz?
  • 27-12-2022, 12:38:38
    #4
    tolgasen adlı üyeden alıntı: mesajı görüntüle
    var title = document.getElementById('title').value;

    üzerine bunu ekleyin;

    CKEDITOR.instances['body'].updateElement();
    Mhmmd adlı üyeden alıntı: mesajı görüntüle
    Hocam //form verilerili alın comment'inin hemen altına;
    for ( instance in CKEDITOR.instances ){
         CKEDITOR.instances[instance].updateElement();
    }
    ekleyip dener misiniz?
    @tolgasen; Teşekkür ederim, şuan düzeldi.
    Duyuru_ekle_islem.php dosyasını her POST ettiğimde otomatik olarak belirtilen kişiye/kişilere mail gönderiyorum.
    IMG eklediğim zaman PHP sayfasında sorunsuz bir şekilde görebiliyorum fakat gelen mail'de resimler "nn" şekilde gözüküyor.




    $ozet = '
      <center><img style="text-align: center;" src="https://cloud.entes.com.tr/test_turan/duyuru/assets/img/entes-logo-mail.png"></center>
      <center><table>
        <td valign="middle" align="center" style="width: 400px; padding-top: 20px;">
          <h2 style="font-family: Arial;">'. $title .'</h2>
        </td>
        <td></td>
      </table></center>
      <center><table>
        <td valign="middle" align="center" style="padding-top:20px; width: 400px;">
          <p style="font-family: Arial;">'. $body .'</p>
        </td>
      </table></center>
      <center><table>
        <td valign="middle" align="center" style="width: 400px;">
          <a href="cloud.entes.com.tr" style="font-family: Arial;">Devamını Oku</a>
        </td>
      </table></center>
    ';
    
    // Import PHPMailer classes into the global namespace 
    use PHPMailer\PHPMailer\PHPMailer; 
    use PHPMailer\PHPMailer\Exception; 
     
    // Include PHPMailer library files 
    require 'src/Exception.php'; 
    require 'src/PHPMailer.php'; 
    require 'src/SMTP.php'; 
    //require 'index.php';
    
    // Create an instance of PHPMailer class 
    $mail = new PHPMailer;
    
    // UTF-8
    $mail->CharSet = 'UTF-8';
    $mail->Encoding = 'base64';
    
    // SMTP configuration
    //$mail->IsSMTP();          //Çalışmazsa etkinleştir.
    $mail->Host     = '******';
    $mail->SMTPAuth = true;
    $mail->Username = '******';
    $mail->Password = '******';
    $mail->SMTPSecure = 'tls';
    $mail->Port     = 587;
    
    // Sender info 
    $mail->setFrom('****** ', '****** Duyuru Sistemi'); 
     
    // Add a recipient 
    $mail->addAddress('****** '); 
    
    // Email subject 
    $mail->Subject = 'Duyuru: '. $title .''; // İleti konusu
     
    // Set email format to HTML 
    $mail->isHTML(true); 
    
    // Email body content 
    $mailContent = '';
    
    $mail->Body  = $ozet;
    
    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.';
    }
  • 27-12-2022, 13:03:22
    #5
    🌐 𝘀𝗼𝗰𝗶𝗳𝗹𝘆.𝗰𝗼𝗺
    body içerisinde \n yazanları <br> ile replace etmelisin.

    https://www.w3schools.com/php/func_s...tr_replace.asp
  • 27-12-2022, 17:45:25
    #6
    tolgasen adlı üyeden alıntı: mesajı görüntüle
    body içerisinde n yazanları <br> ile replace etmelisin.

    https://www.w3schools.com/php/func_s...tr_replace.asp
    Teşekkürler.
    Text editör'de yine bir sorun var maalesef.
    Aşağıdan detayını görebilirsiniz.