Giriş Yap / Kayıt Ol

WM Aracı'na üyelikler tekrar açıldı! Kayıt olmak için TIKLAYIN!


1Beğeni

Cevap Yaz Favorilerime Ekle
Seçenekler Stil
Geri Git   Forum > > Veritabanları

Mysql group by ve join kullanımı chatbox TAKILDIM

  #1  
Okunmamış 11 Eylül 2019, 20:30
netman Adlı Üyenin Avatarı
netman
 
Üyelik Tarihi: 30 Ocak 2017
Yaş / Cinsiyet: 30 / Erkek
Meslek: Danışman
Ad, Soyad: Ke... İn...
Mesajlar: 492
Beğeniler: 127 / 83
Ticaret: 2, 100%
Merhaba, normal bir chatbox yapmaya çalışıyorum mesajların grup şeklinde listelendiği. Mesajları gönderen ve giden şeklinde çekiyorum mysql sorgu olarak çalışıyor fakat eksik bir nokta var yani olması gerektiği gibi değil.

uyeler > uye_id >uye_adi vs şekinde üyelerin bulunduğu tablom var mesajlar ise
om > om_id > om_gonderen_id > om_alici_id > om_mesaj> om_tarih şeklinde mesajları tuttuğum tablom var. Mysql sorgusunu şu şekilde yapıyorum.

GROUP BY om.om_tarih kısmını uyeler.uye_id yaptığımda olması gerektiği gibi geliyor fakat sadece 2 satır geliyor tüm mesajlar gelmiyor.

Kod:
SELECT * FROM om
JOIN uyeler
ON uyeler.uye_id=om.om_alici_id OR uyeler.uye_id=om.om_gonderen_id
WHERE om.om_gonderen_id =".$gonderen_id." OR om.om_alici_id =".$alici_id." OR om.om_alici_id =".$gonderen_id." OR om.om_gonderen_id =".$alici_id."
GROUP BY om.om_tarih
Bu şekilde tüm mesajlar istediğim gibi listeleniyor while içerisinde mesajları döndürürken sadece om.om_alici_id nin adı uye_adi şeklinde geliyor.

Yanlış bir sorgu çalıştırdığımın farkındayım, içinden çıkamadığım için bilen varsa yardımcı olursa sevinirim.

Yani demek istediğim tüm isimler aynı oluyor. Gelen mesaj da giden mesajda. Şu şekilde;

Konu netman tarafından (11 Eylül 2019, 20:55 ) değiştirilmiştir.
  #2  
Okunmamış 11 Eylül 2019, 20:35
RespectionS Adlı Üyenin Avatarı
PHP , C++ ve C#
 
Üyelik Tarihi: 14 Ağustos 2019
Cinsiyet: Erkek
Ad, Soyad: Se... Çu...
Mesajlar: 268
Beğeniler: 84 / 2
Ticaret: 1, 100%
Alıntı:
ON uyeler.uye_id=om.om_alici_id OR uyeler.uye_id=om.om_gonderen_id
hata burada gibi tam kodu görmeden pek bişey söyleyemeyeceğim tüm kodu buraya yapıştırın bir bakalım. İkisinide aynı çekiyor buraya çünkü ikisindede uye_id alıyorsunuz büyük ihtimal sorgu hatası burada
Yeryüzü, bize atalarımızdan miras kalmadı, çoçuklarımızdan ödünç aldık!
  #3  
Okunmamış 11 Eylül 2019, 20:42
RespectionS Adlı Üyenin Avatarı
PHP , C++ ve C#
 
Üyelik Tarihi: 14 Ağustos 2019
Cinsiyet: Erkek
Ad, Soyad: Se... Çu...
Mesajlar: 268
Beğeniler: 84 / 2
Ticaret: 1, 100%
sql sorgusunu şu şemaya çevirin

$_SESSION['uye_id'] = '';

Alıntı:
$GonderenID = SELECT * FROM uyeler where uye_id '$gonderenid';
$AliciID = SELECT * FROM uyeler where uye_id '$aliciid';

$Mesajlar = SELECT om_mesaj, om_tarih, om_uyeid FROM om where om_aliciid = '$AliciID';

mesajlarıda sonrasında while döngüsü ile yazdırabilirsiniz.
Alıcı ID ve Gönderen ID'i sessiondan veya çerezlerden alın. veritabanı sorgusu göndermenize gerek yok tabi üye girişi vb. varsa. bu şekilde değişkenlere tanımlayıp sorguları uygun yerlelere yerleştirirseniz böyle karmaşalara mağruz kalmazsınız yazdığınız kodlara göre bir mantık geliştirip kodları azaltabilirsiniz ben örnek verdim size bu şekilde.
Yeryüzü, bize atalarımızdan miras kalmadı, çoçuklarımızdan ödünç aldık!
  #4  
Okunmamış 11 Eylül 2019, 20:43
netman Adlı Üyenin Avatarı
netman
 
Üyelik Tarihi: 30 Ocak 2017
Yaş / Cinsiyet: 30 / Erkek
Meslek: Danışman
Ad, Soyad: Ke... İn...
Mesajlar: 492
Beğeniler: 127 / 83
Ticaret: 2, 100%
PHP Kodları şu şekilde;

PHP- Kodu:
<?php
        $alici_id 
'1';
        
$gonderen_id '120';
$chatquery mysql_query("
SELECT * FROM om
JOIN uyeler
ON uyeler.uye_id=om.om_alici_id OR uyeler.uye_id=om.om_gonderen_id
WHERE om.om_gonderen_id ="
.$gonderen_id." OR om.om_alici_id =".$alici_id." OR om.om_alici_id =".$gonderen_id." OR om.om_gonderen_id =".$alici_id."
GROUP BY om.om_tarih "
);

    while(
$chat mysql_fetch_array($chatquery)) {

    
?>

    <div class="kt-chat__message <?php if ($chat['om_gonderen_id'] == $alici_id) echo " kt-chat__message--right "?>" id=" <?php echo $chat['om_id']; ?>">
        <div class="kt-chat__user">
            <span class="kt-media kt-media--circle kt-media--sm"> 
                                        <img src="./assets/media/users/100_12.jpg" alt="image">   
                                    </span>
            <a href="#" class="kt-chat__username">
                <?php  echo $chat['uye_adi']; ?>
                    </span>
            </a>
            <span class="kt-chat__datetime"> <?php echo once($chat['om_tarih']); ?></span>
        </div>
        <div class="kt-chat__text kt-bg-light-success">
            <?php echo $chat['om_mesaj']; ?>

        </div>
    </div>

    <?php ?>
Tablolar şöyle;


++++++++++++++++++++++++++++++++++++++++++++++

  #5  
Okunmamış 11 Eylül 2019, 20:45
netman Adlı Üyenin Avatarı
netman
 
Üyelik Tarihi: 30 Ocak 2017
Yaş / Cinsiyet: 30 / Erkek
Meslek: Danışman
Ad, Soyad: Ke... İn...
Mesajlar: 492
Beğeniler: 127 / 83
Ticaret: 2, 100%
Alıntı:
RespectionS Adlı Üyeden Alıntı
sql sorgusunu şu şemaya çevirin

$_SESSION['uye_id'] = '';



Alıcı ID ve Gönderen ID'i sessiondan veya çerezlerden alın. veritabanı sorgusu göndermenize gerek yok tabi üye girişi vb. varsa. bu şekilde değişkenlere tanımlayıp sorguları uygun yerlelere yerleştirirseniz böyle karmaşalara mağruz kalmazsınız yazdığınız kodlara göre bir mantık geliştirip kodları azaltabilirsiniz ben örnek verdim size bu şekilde.
EDİT: Bu şekilde çok fazla sorgu olacak zaten join bunun için yok mu zaten?
İşler duruma geldiğinde session ve get ile değerleri alacağım zaten hocam sadece şuan bu şekilde çalışması kısmında sorun yaşıyorum
Konu netman tarafından (11 Eylül 2019, 20:47 ) değiştirilmiştir.
  #6  
Okunmamış 11 Eylül 2019, 21:02
RespectionS Adlı Üyenin Avatarı
PHP , C++ ve C#
 
Üyelik Tarihi: 14 Ağustos 2019
Cinsiyet: Erkek
Ad, Soyad: Se... Çu...
Mesajlar: 268
Beğeniler: 84 / 2
Ticaret: 1, 100%
Alıntı:
<?php
$AliciID = '1';

$MesajSorgu = mysql_query("SELECT * FROM om WHERE om_alici_id = '$AliciID'");
?>

<?php while($chat = mysql_fetch_array($MesajSorgu)) { ?>
<div class="kt-chat__message <?php if ($chat['om_gonderen_id'] == $alici_id) echo " kt-chat__message--right "; ?>" id=" <?php echo $chat['om_id']; ?>">
<div class="kt-chat__user">
<span class="kt-media kt-media--circle kt-media--sm">
<img src="./assets/media/users/100_12.jpg" alt="image">
</span>
<a href="#" class="kt-chat__username"><?php echo $chat['uye_adi']; ?>
</span>
</a>
<span class="kt-chat__datetime"> <?php echo once($chat['om_tarih']); ?></span>
</div>
<div class="kt-chat__text kt-bg-light-success">
<?php echo $chat['om_mesaj']; ?>
</div>
</div>
<?php } ?>
Şu şekilde sorgu gönderip kullanabilirsiniz ama PDO geçin önerim size mysql artık tarihi eser oldu fetch_arrayda sorun olursa pdo geçip foreach döngüsüne alırsanız sorun ortadan kalkar
Yeryüzü, bize atalarımızdan miras kalmadı, çoçuklarımızdan ödünç aldık!
  #7  
Okunmamış 11 Eylül 2019, 21:03
RespectionS Adlı Üyenin Avatarı
PHP , C++ ve C#
 
Üyelik Tarihi: 14 Ağustos 2019
Cinsiyet: Erkek
Ad, Soyad: Se... Çu...
Mesajlar: 268
Beğeniler: 84 / 2
Ticaret: 1, 100%
Alıntı:
netman Adlı Üyeden Alıntı
EDİT: Bu şekilde çok fazla sorgu olacak zaten join bunun için yok mu zaten?
İşler duruma geldiğinde session ve get ile değerleri alacağım zaten hocam sadece şuan bu şekilde çalışması kısmında sorun yaşıyorum
Hocam sql sorgusunun fazla olmasını kafanıza takıyorsanız zaten bu işi framework ile geliştirmeniz ve pdoda yazmanız şart.
Yeryüzü, bize atalarımızdan miras kalmadı, çoçuklarımızdan ödünç aldık!
  #8  
Okunmamış 11 Eylül 2019, 21:06
netman Adlı Üyenin Avatarı
netman
 
Üyelik Tarihi: 30 Ocak 2017
Yaş / Cinsiyet: 30 / Erkek
Meslek: Danışman
Ad, Soyad: Ke... İn...
Mesajlar: 492
Beğeniler: 127 / 83
Ticaret: 2, 100%
Alıntı:
RespectionS Adlı Üyeden Alıntı
Şu şekilde sorgu gönderip kullanabilirsiniz ama PDO geçin önerim size mysql artık tarihi eser oldu fetch_arrayda sorun olursa pdo geçip foreach döngüsüne alırsanız sorun ortadan kalkar
Ben biraz geriden geliyorum hocam bi ara geçerim PDO'ya
  #9  
Okunmamış 11 Eylül 2019, 21:09
RespectionS Adlı Üyenin Avatarı
PHP , C++ ve C#
 
Üyelik Tarihi: 14 Ağustos 2019
Cinsiyet: Erkek
Ad, Soyad: Se... Çu...
Mesajlar: 268
Beğeniler: 84 / 2
Ticaret: 1, 100%
Alıntı:
netman Adlı Üyeden Alıntı
Ben biraz geriden geliyorum hocam bi ara geçerim PDO'ya
ve çok fazla mantık hatası var gibi geldi birde anlayamadığım nokta mesajları alıcı id göre çekmeniz gerekirken gönderen id alıcı id o bu şu niye çekiyorsunuz insert ederken zaten tüm bilgiler giriliyor mesajların görüntülendiği sayfada yalnızca where ile alici id gelen mesajları listelemeniz yeterli he şöyle bir şey var ona ait gonderenden gelen mesajları almak için ekstra şunu yapacaksınız $GonderenID = '102';

OR om_gonderen_id = '$GonderenID';

bunu eklersiniz sorguya olur biter.
Yeryüzü, bize atalarımızdan miras kalmadı, çoçuklarımızdan ödünç aldık!
  #10  
Okunmamış 11 Eylül 2019, 21:13
netman Adlı Üyenin Avatarı
netman
 
Üyelik Tarihi: 30 Ocak 2017
Yaş / Cinsiyet: 30 / Erkek
Meslek: Danışman
Ad, Soyad: Ke... İn...
Mesajlar: 492
Beğeniler: 127 / 83
Ticaret: 2, 100%
Alıntı:
ve çok fazla mantık hatası var gibi geldi birde anlayamadığım nokta mesajları alıcı id göre çekmeniz gerekirken gönderen id alıcı id o bu şu niye çekiyorsunuz insert ederken zaten tüm bilgiler giriliyor mesajların görüntülendiği sayfada yalnızca where ile alici id gelen mesajları listelemeniz yeterli
Alıntı:
he şöyle bir şey var ona ait gonderenden gelen mesajları almak için ekstra şunu yapacaksınız $GonderenID = '102';

OR om_gonderen_id = '$GonderenID';

Kendiniz cevapladınız zaten önce ne gerek var dediniz sonra şöyle olacak : )
Cevap Yaz Favorilerime Ekle


Konuyu toplam 1 kişi okuyor. (0 üye ve 1 Ziyaretçi)
 
Seçenekler
Stil
Normal Normal

Geri Git   Forum > Veritabanları


Yetkileriniz
Konu açma yetkiniz: Yok
Cevap Yazma Yetkiniz Yok
Eklenti yükleme yetkiniz: Yok
Mesajınızı değiştirme yetkiniz: Yok

BB code: Açık
İfadeler: Açık
[IMG] Kodları: Açık
HTML kodu: Kapalı




Tüm Zamanlar GMT +3 Olarak Ayarlanmış. Şu anki Zaman: 09:53.