veritabanını yedeklersen sorun olmaz
<input type="text" class="form-control" maxlength="30">
gibi kullanabilirsiniz.
Hocam bir süredir ben de bu konu hakkında çalışıyordum. Az önce tamamlayabildim. Hala test ediyorum, yaptığım sistem çok amatör bi o kadar da basit bir sistem daha gelişmişleri nodejs ile yapılabilir fakat böyle de çalışıyor. Zaman damgasıyla kullanıcı var mı yok mu varsa nasıl çevrimiçi tutabiliriz onu paylaşıyorum. Elimden geldiği kadar yapabildim. Sanada yardımcı olabilmek için kodlarımı paylaşıyorum.
Veritabanında user tablona "online" adında bir sütun oluştur. Daha sonra;
Kullanıcıyı sayfayı yenilediğinde oturum süresini uzatmak için bu kodları Header.php'ye kendine göre düzenledikten sonra yapıştır.
Kullanıcı adını ve Online durumunu istersen SESSION'a atayabilirsin. Ben henüz deneme/yanılma aşamasında olduğum için bir çok yeri düzenlemeden bıraktım. Henüz çakışmıyor bir hata ile karşılaşmadım. Karşılaşırsam haber veririm.
$username=$_SESSION['username'];
$_SESSION['online'];
$online=strtotime($_SESSION['online']);
$suan=time();
$fark=($suan-$online);
if ($fark>600) {
$zamanguncelle=$db->prepare("UPDATE user SET
online=:online
WHERE username='$username'");
$update=$zamanguncelle->execute(array(
'online' => date("Y-m-d H:i:s")
));
$_SESSION['online']=strtotime(date("Y-m-d H:i:s"));
}
Daha sonra kullanıcı login olduktan sonra ilk çevrimiçi kullanıcı olayını başlatmak için kullanıcıyı login ettiğin formun post olduğu sayfaya bu konu yapıştır.
$zamanguncelle=$db->prepare("UPDATE user SET
online=:online
WHERE username='$username'");
$update=$zamanguncelle->execute(array(
'online' => date("Y-m-d H:i:s")
));
$_SESSION['online']=strtotime(date("Y-m-d H:i:s"));
Son olarak çevirimiçi kullanıcıları listelemek için paylaştığım kodu kendine göre düzenleyip, kullan.
$ten_minutes_ago = time() - (60 * 10);
$datetime = date("Y-m-d H:i:s", $ten_minutes_ago);
$dm=$db->prepare("SELECT * FROM user WHERE online >= '$datetime'");
$dm->execute();
while($dups=$dm->fetch(PDO::FETCH_ASSOC)) {
echo $dups['username'];
echo '<br>';
}
Sorun benden kaynaklıymış. Meğersem birden fazla virgül bırakmışım hocam. Sorunu çözdüm, teşekkür ederim @themonster
@themonster yanıt için teşekkür ederim hocam. rtrim ile gelen verileri ayırmaya çalışıyorum ben de foreach döngüsü ile birlikte. yazdığınız kodla birebir benzer olduğu için sanırım göndermeme gerek yok.
Eklediğiniz kodu uyguladığım zaman yine listelenen son verinin sağında "," oluyor. Benim amacım ise çevrimiçi kullanıcıları listeleyip, birbirinden ayırıp son veriden virgül kaldırmak.
teşekkür ederim hocam çok yardımcı oldu
@omeryallcnn hocam peki şöyle bir durum oluştu.
Listelenen Son 10 Konu;
Ynt: Konu 2
Konu 2 -> Konu 2'ye yorum yapıldığı zaman direkt olarak Konu 2'nin üzerine, Örnekte'de Gösterdiğim gibi yanıt olarak geri dönüyor.
Konu 1 -> Fakat konu 1'e yorum yapıldığı zaman Ynt: Konu 1 en üste çıkması gerektiği hâlde listeleme alanında direkt Konu 1'in üzerine geliyor.
Benim yapmak istediğim şey ise;
Ynt: Konu 1
Konu 2
Konu 1
tarzında. Herhangi bir konuya yanıt geldiği zaman son yanıtı en üste alıp, ona göre listelemek. Sizin gönderdiğiniz kod ise bana sadece Konu 1'in veya diğer açılan konunun içerisine yorum yapıldığı zaman ona bağlı olarak üstüne çıkıyor.
Çok teşekkür ederim hocam sorunun kaynağı ve çözümünü direkt belirtmişsiniz :) Tam çözüm sağlandı tekrardan teşekkürler.
Evet bu konu ile ilgili ciddi bir bilgi yetersizliği söz konusu. YouTube'da Trendyol Api diye arattığımız zaman hep E-Ticaret yazılımlarının Api entegrasyonları nasıl yapılır tarzında videolar mevcut fakat hepsi kendi altyapılarına olan entegrasyonlardan bahsediyorlar. Gerek Trendyol gerek Aras Kargo gibi uygulamaların Api uygulaması nasıl yapıldığı ile ilgili net bir bilgi yok. Bu yüzden çok zorlanıyoruz.
Inner join ile işin içinden çıkılamaz bi hale getirdim durumu. vbulletin kaynak kodlarını inceledim ama pek istediğim sonucu alamadım. Fikir vermek isteyen var mı?