lostyazilim
tr.link

Mysql group by ve join kullanımı chatbox TAKILDIM

13 Mesajlar 2.683 Okunma
acebozum
tr.link

netman netman netman Kullanıcı
  • Üyelik 30.01.2017
  • Yaş/Cinsiyet 35 / E
  • Meslek Danışman
  • Konum İstanbul Avrupa
  • Ad Soyad H** K**
  • Mesajlar 730
  • Beğeniler 204 / 203
  • Ticaret 10, (%90)
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.


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;

 

 

// Acta est fabula
elektronikssl
webimgo

RespectionS RespectionS Üyeliği Durdurulmuş Banlı Kullanıcı
  • Üyelik 14.08.2019
  • Yaş/Cinsiyet 26 / E
  • Meslek Full-Stack Developer
  • Konum İstanbul Avrupa
  • Ad Soyad S** Ç**
  • Mesajlar 518
  • Beğeniler 1 / 188
  • Ticaret 5, (%100)
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
 

 

RespectionS RespectionS Üyeliği Durdurulmuş Banlı Kullanıcı
  • Üyelik 14.08.2019
  • Yaş/Cinsiyet 26 / E
  • Meslek Full-Stack Developer
  • Konum İstanbul Avrupa
  • Ad Soyad S** Ç**
  • Mesajlar 518
  • Beğeniler 1 / 188
  • Ticaret 5, (%100)
sql sorgusunu şu şemaya çevirin

$_SESSION['uye_id'] = '';

$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.
 

 

netman netman netman Kullanıcı
  • Üyelik 30.01.2017
  • Yaş/Cinsiyet 35 / E
  • Meslek Danışman
  • Konum İstanbul Avrupa
  • Ad Soyad H** K**
  • Mesajlar 730
  • Beğeniler 204 / 203
  • Ticaret 10, (%90)
PHP Kodları şu şekilde;

$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)) {

?>

" id=" ">









Tablolar şöyle;


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

 

 

// Acta est fabula
wmaraci
wmaraci

netman netman netman Kullanıcı
  • Üyelik 30.01.2017
  • Yaş/Cinsiyet 35 / E
  • Meslek Danışman
  • Konum İstanbul Avrupa
  • Ad Soyad H** K**
  • Mesajlar 730
  • Beğeniler 204 / 203
  • Ticaret 10, (%90)

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
 

 

// Acta est fabula

RespectionS RespectionS Üyeliği Durdurulmuş Banlı Kullanıcı
  • Üyelik 14.08.2019
  • Yaş/Cinsiyet 26 / E
  • Meslek Full-Stack Developer
  • Konum İstanbul Avrupa
  • Ad Soyad S** Ç**
  • Mesajlar 518
  • Beğeniler 1 / 188
  • Ticaret 5, (%100)
$AliciID = '1';

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


" id=" ">







Şu şekilde sorgu gönderip kullanabilirsiniz ama PDO geçin önerim size mysql artık tarihi eser oldu :D fetch_arrayda sorun olursa pdo geçip foreach döngüsüne alırsanız sorun ortadan kalkar
 

 

RespectionS RespectionS Üyeliği Durdurulmuş Banlı Kullanıcı
  • Üyelik 14.08.2019
  • Yaş/Cinsiyet 26 / E
  • Meslek Full-Stack Developer
  • Konum İstanbul Avrupa
  • Ad Soyad S** Ç**
  • Mesajlar 518
  • Beğeniler 1 / 188
  • Ticaret 5, (%100)

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.
 

 

netman netman netman Kullanıcı
  • Üyelik 30.01.2017
  • Yaş/Cinsiyet 35 / E
  • Meslek Danışman
  • Konum İstanbul Avrupa
  • Ad Soyad H** K**
  • Mesajlar 730
  • Beğeniler 204 / 203
  • Ticaret 10, (%90)

RespectionS adlı üyeden alıntı

Şu şekilde sorgu gönderip kullanabilirsiniz ama PDO geçin önerim size mysql artık tarihi eser oldu :D fetch_arrayda sorun olursa pdo geçip foreach döngüsüne alırsanız sorun ortadan kalkar


Ben biraz geriden geliyorum hocam :laugh: bi ara geçerim PDO'ya
 

 

// Acta est fabula

RespectionS RespectionS Üyeliği Durdurulmuş Banlı Kullanıcı
  • Üyelik 14.08.2019
  • Yaş/Cinsiyet 26 / E
  • Meslek Full-Stack Developer
  • Konum İstanbul Avrupa
  • Ad Soyad S** Ç**
  • Mesajlar 518
  • Beğeniler 1 / 188
  • Ticaret 5, (%100)

netman adlı üyeden alıntı

Ben biraz geriden geliyorum hocam :laugh: 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.
 

 

netman netman netman Kullanıcı
  • Üyelik 30.01.2017
  • Yaş/Cinsiyet 35 / E
  • Meslek Danışman
  • Konum İstanbul Avrupa
  • Ad Soyad H** K**
  • Mesajlar 730
  • Beğeniler 204 / 203
  • Ticaret 10, (%90)
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';



Kendiniz cevapladınız zaten :D önce ne gerek var dediniz sonra şöyle olacak : )
 

 

// Acta est fabula
Site Ayarları
  • Tema Seçeneği
  • Site Sesleri
  • Bildirimler
  • Özel Mesaj Al