• 10-08-2021, 21:08:18
    #1
    Merhaba,
    basit bir chat uygulaması kodlamaya çalışıyorum. Mesajları her 1 sny de bir çekmesini ayarladım ajax ile. Aynı şekilde post gönderirken sayfayı yenilememesi için de ajax ve js kullanmaya çalıştım ancak şöyle bir hata alıyorum ;

    Kodlarım :

    index.php 'de ki kısım

    <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.5.1/jquery.min.js"></script>
    <script src="./mesajgonder.js?5"></script>
    
    <script>
       setInterval(function() {
          updateCounter();
       }, 1000*1); // 1sn
     
       function updateCounter() {
          $.ajax({
             url: 'ajax-mesaj.php',
             success: function(output) {
                $('#ajaxmesaj').html(output);
             }
          });
       }
    </script>
    
                    <text id="ajaxmesaj" class="ajaxmesaj"><font color="gray">Yükleniyor...</font></text>        
                        </ul>
                    </div>
                    <br /><br />
                    <hr>
                    <form id="myForm" method="post">
                    <textarea data-emoji-picker="true" id="mesaj" name="mesaj" placeholder="Mesajınızı buraya yazınız"></textarea>
                    <input name="user_name" value="<?php echo $user_name; ?>" type="hidden" id="user_name">
                    <input name="user_id" value="<?php echo $user_id; ?>" type="hidden" id="user_id">
                    <p align="right" >
                    <button type="button" class="mesajgonder" onclick="SubmitFormData();" id="submitFormData" value="Submit">Gönder</button>
                    </p>
                    </form>
                    
                      <div id="results">
    
    </div>

    mesajgonder.js

    function SubmitFormData() {
        var mesaj = $("#mesaj").val();
        var email = $("#user_id").val();
        var phone = $("#user_name").val();
        $.post("mesajgonder.php?3", { mesaj: mesaj, user_id: user_id, user_name: user_name },
        function(data) {
         $('#results').html(data);
         $('#myForm')[0].reset();
        });
    }
    mesajgonder.php

    <?php
    include_once'config/Database.php';
    include_once'config/ParseProfile.php';
    
    ?>
    
    <?php
    
    $user_id = $_POST['user_id'];
    $user_name = $_POST['user_name'];
    $s_mesaj = $_POST['mesaj'];
    
    $db->exec("SET names utf8");
    
    if (empty($s_mesaj)) {
    echo "Mesaj Boş";
    die();
    }
    
    try {
        
    $baglanti = new PDO("mysql:host=localhost;dbname=SANSUR", "SANSUR ", "SANSUR ");
    $baglanti->exec("SET NAMES utf8");
    $baglanti->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
    
    $sorgu = $baglanti->exec("UPDATE users SET mesaj_sayi = mesaj_sayi +1 WHERE id=".$user_id."");
    $sorgu = $baglanti->prepare("INSERT INTO mesajlar(user_id, user_name, mesaj) VALUES(?, ?, ?)");
    $sorgu->bindParam(1, $user_id, PDO::PARAM_STR);
    $sorgu->bindParam(2, $user_name, PDO::PARAM_STR);
    $sorgu->bindParam(3, $s_mesaj, PDO::PARAM_STR);
    
    
    $sorgu->execute();
    
    echo "Mesaj Gitti";
    
    } catch (PDOException $e) {
    die($e->getMessage());
    }
    
    $baglanti = null;
    
    ?>

    Sorun nerede? nasıl düzeltebilirim yardımcı olabilir misiniz?

    Şimdiden teşekkürler
  • 10-08-2021, 22:08:38
    #2
    <script>
       setInterval(function() {
          updateCounter();
       }, 1000*1); // 1000*1 = 1000 demek zaten *1 gereksiz olmuş. bu süreyi 3000'e çıkartın.
       function updateCounter() {
          $.ajax({
             url: 'ajax-mesaj.php',
             async:false, // burayı ekleyin.
             success: function(output) {
                $('#ajaxmesaj').html(output);
             }
          });
       }
    </script>
  • 10-08-2021, 22:17:16
    #3
    her 1 saniyede 1 mesajları çekmek sistemi yorar, bunun yerine anlık mesajlaşma için nodejs, socket.io kullanmalısınız
  • 10-08-2021, 22:30:00
    #4
    Misafir; Hocam teamviewer üzerinden bağlanarak yardımcı oldu, kendisine ve cevap yazan herkese teşekkür ediyorum
    Hepinize iyi akşamlar.