lostyazilim
tr.link

PHP ve MYSQL de takıldığım nokta

9 Mesajlar 1.249 Okunma
acebozum
tr.link

denizbe3558 denizbe3558 WM Aracı Kullanıcı
  • Üyelik 16.02.2016
  • Yaş/Cinsiyet 27 / E
  • Meslek Web Developer
  • Konum İzmir
  • Ad Soyad S** A**
  • Mesajlar 277
  • Beğeniler 32 / 31
  • Ticaret 1, (%100)
Merhaba sosyal medya bölümü tasarlıyorum kendime

Aşağıdaki komutla aktif açık olan hesabın takip ettiği kişilerin id'lerini bir diziye atadım.

$takipettiklerim = array();
foreach($conn->query("SELECT * FROM takip WHERE takipeden= '$sessionid'") as $listele ){
array_push($takipettiklerim,$listele['takipedilen']);
}


Kodun Çıktısı

Array ( [0] => 1 [1] => 2 )

Aşağıdaki Komutla açık olan hesabın kaç kişiyi takip ettiğini öğrendim

$takipettiklerimsayisi = $conn->query("SELECT * FROM takip WHERE takipeden= '$sessionid'");
$takipettiklerimsayisi = $takipettiklerimsayisi->rowCount();


Ekran Çıktısı

2

foreach ile kullanicigonderileri tablosundan dizindeki id leri eşlesen gönderileri listemesini istiyorum

for ($i=0; $i <$takipettiklerimsayisi; $i++) {


foreach($conn->query("SELECT * FROM kullanicigonderileri WHERE gonderenid LIKE $takipettiklerim[$i] ORDER BY tarih DESC") as $listele ){
echo $listele['aciklama']."
";

}
}


bu komutu yazınca listeliyor ama örnek veriyorum önce kullanıcı id si 2 olanı tarih DESC e göre sıralıyor sonra kullanıcı id si 3 olanı tarih DESC e göre sıralıyor ben istiyorum ki önce 2yi sonra 3 ü değil tarihe göre sıralasın ama yapamadım yardımcı olursanız sevinirim
 

 

elektronikssl
webimgo

NickolaTesla NickolaTesla WM Aracı Kullanıcı
  • Üyelik 30.08.2017
  • Yaş/Cinsiyet 37 / E
  • Meslek Elektrik-Elektronik Mühendisi
  • Konum Ankara
  • Ad Soyad E** K**
  • Mesajlar 18
  • Beğeniler 3 / 2
  • Ticaret 0, (%0)
Siz son eklenen id den çekmeye çalışıyorsunuz (DESC) Mantığa göre ilk id'den başlayıp çekmeniz gerekiyor (ASC) for döngüsünde 0'dan başlıyorsunuz ve her seferinde arttırarak devam ediyorsunuz.Yani ilk sıradan başlayan id'yi siz son eklenenden çekmeye çalışıyorsunuz.Sorun oradan kaynaklanıyor.
 

 

denizbe3558 denizbe3558 WM Aracı Kullanıcı
  • Üyelik 16.02.2016
  • Yaş/Cinsiyet 27 / E
  • Meslek Web Developer
  • Konum İzmir
  • Ad Soyad S** A**
  • Mesajlar 277
  • Beğeniler 32 / 31
  • Ticaret 1, (%100)
NickolaTesla nasıl bir yol izlemem lazım yardımcı olma şansınız var mı
 

 

NickolaTesla NickolaTesla WM Aracı Kullanıcı
  • Üyelik 30.08.2017
  • Yaş/Cinsiyet 37 / E
  • Meslek Elektrik-Elektronik Mühendisi
  • Konum Ankara
  • Ad Soyad E** K**
  • Mesajlar 18
  • Beğeniler 3 / 2
  • Ticaret 0, (%0)
Aslında yazmıştım ne yapacağınızı.DESC yerine ASC dener misiniz?
 

 

wmaraci
wmaraci

denizbe3558 denizbe3558 WM Aracı Kullanıcı
  • Üyelik 16.02.2016
  • Yaş/Cinsiyet 27 / E
  • Meslek Web Developer
  • Konum İzmir
  • Ad Soyad S** A**
  • Mesajlar 277
  • Beğeniler 32 / 31
  • Ticaret 1, (%100)
NickolaTesla onu yapsamda for döngüsü yüzünden sıra sıra çekiyor orada nasıl bir mantık yürütmem lazım
 

 

hakanozsoy hakanozsoy WM Aracı Kullanıcı
  • Üyelik 27.01.2017
  • Yaş/Cinsiyet 25 / E
  • Meslek Meslek yok
  • Konum İstanbul Anadolu
  • Ad Soyad H** Ö**
  • Mesajlar 67
  • Beğeniler 3 / 11
  • Ticaret 0, (%0)
Tarih sütünunda yer alan bilgi time cinsinden mi yoksa d.m.y cinsinden mi eğer d.m.y ise o dediğiniz olmaz time cinsinden olursa zaman ilerledigi icin time bilgisi de ilerler siralama icin de asc kullanirsaniz son tarihten baslar ilk tarihe döner üstten alta.
 

 

denizbe3558 denizbe3558 WM Aracı Kullanıcı
  • Üyelik 16.02.2016
  • Yaş/Cinsiyet 27 / E
  • Meslek Web Developer
  • Konum İzmir
  • Ad Soyad S** A**
  • Mesajlar 277
  • Beğeniler 32 / 31
  • Ticaret 1, (%100)
hakanozsoy gün ay yıl saat dakika saniye cinsinden hocam
 

 

hakanozsoy hakanozsoy WM Aracı Kullanıcı
  • Üyelik 27.01.2017
  • Yaş/Cinsiyet 25 / E
  • Meslek Meslek yok
  • Konum İstanbul Anadolu
  • Ad Soyad H** Ö**
  • Mesajlar 67
  • Beğeniler 3 / 11
  • Ticaret 0, (%0)
O zaman tablonuza tarih2 adli bir sütun ekleyin verileri ona göre çekin. Oraya time cinsinden girersiniz. Bende dediginiz yontemi denedim aslinda olmakta. Siz sorgunuzu asc yaptiginizda olmuyorsa tek alternatif yontem tarihleri time cinsinden kaydettirmenizdir.
denizbe3558

kişi bu mesajı beğendi.

denizbe3558 denizbe3558 WM Aracı Kullanıcı
  • Üyelik 16.02.2016
  • Yaş/Cinsiyet 27 / E
  • Meslek Web Developer
  • Konum İzmir
  • Ad Soyad S** A**
  • Mesajlar 277
  • Beğeniler 32 / 31
  • Ticaret 1, (%100)
hakanozsoy hocam ben anlatamadım galiba tarihe göre sıralamada sorun yok

foreach($conn->query("SELECT * FROM kullanicigonderileri WHERE gonderenid LIKE 1 OR gonderenid LIKE 2 ORDER BY tarih DESC") as $listele ){
echo $listele['aciklama']."
";

}


yaptığımda sorunsuz bir şekilde çekiyor

ama benim kod yapım böyle

for ($i=0; $i <$takipettiklerimsayisi; $i++) {


foreach($conn->query("SELECT * FROM kullanicigonderileri WHERE gonderenid LIKE $takipettiklerim[$i] ORDER BY tarih DESC") as $listele ){
echo $listele['aciklama']."
";
}
}


böyle yapıncada doğal olarak id 1 in gönderilerini sıralıyor sonra id 2 nin sıralıyor burada mantık hatam var ve nasıl yapcağımı bulamadım
 

 

wmaraci
wmaraci
Konuyu toplam 1 kişi okuyor. (0 kullanıcı ve 1 misafir)
Site Ayarları
  • Tema Seçeneği
  • Site Sesleri
  • Bildirimler
  • Özel Mesaj Al