-
Üyelik
25.06.2016
-
Yaş/Cinsiyet
36 / E
-
Meslek
Şoför
-
Konum
İzmir
-
Ad Soyad
S** C**
-
Mesajlar
9
-
Beğeniler
0 / 0
-
Ticaret
0, (%0)
Öncelikle herkese merhaba.
Projemden az buçuk bahsetmek istiyorum bir sistemde profil ziyaretçileri yaptım fakat her girişinde aynı kaydı devam ettiryor örnek verirsek tablodan
id - izyaret eden - ziyaretçi - ziyaret tarihi
1 30 2 ziyaretsaati
2 30 2 ziyaretsaati
3 30 2 ziyaretsaati
4 30 2 ziyaretsaati
ben bunun bu şekilde olmasını istemiyorum
misal 30 idli kullanıcı 2 idli kullancııyı ziyaret ettiğinde kontrol etsin daha önce bu şekilde bir kayıt olmuşmu eğer olmuşsa dsadece ziyaret saatini güncellesin ama baktıki kayıt yok yeni kayıt oluştursun bunu nasıl yapabilirim bana yardımcı olabilir misiniz.
Hepiniz aklınızı çıldırmışsınız.
-
Üyelik
12.08.2013
-
Yaş/Cinsiyet
28 / E
-
Meslek
Web Developer
-
Konum
Tekirdağ
-
Ad Soyad
V** K**
-
Mesajlar
294
-
Beğeniler
73 / 63
-
Ticaret
0, (%0)
ip adresini al eğer varsa ip adresi güncellettir
VBA Developer
-
Üyelik
25.06.2016
-
Yaş/Cinsiyet
36 / E
-
Meslek
Şoför
-
Konum
İzmir
-
Ad Soyad
S** C**
-
Mesajlar
9
-
Beğeniler
0 / 0
-
Ticaret
0, (%0)
o zaman yine else if ile çözücez mevzuyu
Hepiniz aklınızı çıldırmışsınız.
-
Üyelik
25.06.2016
-
Yaş/Cinsiyet
36 / E
-
Meslek
Şoför
-
Konum
İzmir
-
Ad Soyad
S** C**
-
Mesajlar
9
-
Beğeniler
0 / 0
-
Ticaret
0, (%0)
hsntngr adlı üyeden alıntı
Kşi başka aygıtlardan girebilir, işyerinden vs evden girebilir hocam bir çözüme ulaştırmıyor sanırım ip adresi.
on dublicate veya replace deseniz yine olmaz, iki koşul var.
Bana makul gelen iki query oluşturmak biri kontrol için diğeri ise update/create için.
İlk önce bir read sorgusu atarsınız. WHERE ziyaret_eden = 30 AND ziyaret_edilen = 2 der, böyle bir kayıt var mı yok mu ona bakarsınız..
daha sonra ilk sorgudan gelen veriyi kontrol edersiniz, eğer böyle bir kayıt varsa update, yoksa create işlemi yaparsınız.
Tek queryde yapılabilir mi bilmiyorum düşünmek lazım, şu an aklıma böyle bir çözüm geldi benim.
bunu nasıl yapabilirm bana yardımcı olabilir misiniz?
Hepiniz aklınızı çıldırmışsınız.
-
Üyelik
05.03.2015
-
Yaş/Cinsiyet
26 / E
-
Meslek
Full-Stack Web Developer
-
Konum
Ankara
-
Ad Soyad
M** M**
-
Mesajlar
25
-
Beğeniler
0 / 7
-
Ticaret
0, (%0)
Merhaba, öncelikle iyi çalışmalar mantığı anlaman açısından bir örnek yaptım. Kodlar içerisinde notlar yazdım. Takıldığın yerde yine sorabilirsin. Aşağıda yaptığım örnekte bir günde bir kez yapılan ziyateri sayacaktır. Cihaz, IP, Tarayıcı, vb.. faktörlerden etkilenmez doğru bir sayım olur.
// Şimdi bunun örneğini senin için php PDO ile yapıyorum. Mantığı anlarsın umarım...
/*
$query->$db ile başlayan $db değişkenim ben veri tabanı bağlantı
değişkeni olarak belirledim seninki ne ise onunda değiştirebilirsin.
*/
$ziyaretci_id = 1; // Profile giren kullanıcının idsi.
$ziyaret_edilen_id = 15; // Profilin sahibinin idsi.
$tarih = date("Y-m-d"); // Tarih formatı: 2018-12-5 olacaktır.
$query = $db->prepare("SELECT * from ziyetler WHERE ziyaretci=? && ziyaret_edilen_id=? && tarih=?");
$query->execute(array($ziyaretci_id,$ziyaret_edilen_id,$tarih));
if ($query->rowCount() >= 1) {
// Sorgu yaptık buradan eğer bu gün kullanıcı bu profili daha önce ziyaret etmiş ise güncelliyoruz.
// Burada biz saatlik bir dilim kullanmadık günlük kullandığımız için aynı gün yapılan ziyareti
// aslında güncellemek mantıklı değil fakat saatlik kullanırsan diye bu alanı bırakıyorum.
$query = $db->prepare("UPDATE ziyaretler SET tarih=? WHERE ziyaretci_id=? && ziyaret_edilen_id=?");
$update = $query->execute(array($tarih,$ziyaretci_id,$ziyaret_edilen_id));
if ($update) {
echo 'Son Ziyaret güncellendi.';
}
} else {
// Eğer birisi bu profili daha önce ziyaret etmiş ise ekliyoruz.
$query = $db->prepare("INSERT INTO ziyaretler SET ziyaretci_id=?,ziyaret_edilen_id=?,tarih=?");
$insert = $query->execute(array($ziyaretci_id,$ziyaret_edilen_id,$tarih));
if ($insert) {
echo 'Son Ziyaret eklendi.';
}
}
// Bu örnekte bir kullanıcı bir başka kullanıcıyı günde sadece bir ziyaretini sayar sayfa yenilemesi ip değişikliği cihaz değişikliği gibi faktörlerden etkilenmeden tekil ziyaretçi sayımı yapmış oluruz.
?>
-
Üyelik
25.06.2016
-
Yaş/Cinsiyet
36 / E
-
Meslek
Şoför
-
Konum
İzmir
-
Ad Soyad
S** C**
-
Mesajlar
9
-
Beğeniler
0 / 0
-
Ticaret
0, (%0)
MyYafes adlı üyeden alıntı
Merhaba, öncelikle iyi çalışmalar mantığı anlaman açısından bir örnek yaptım. Kodlar içerisinde notlar yazdım. Takıldığın yerde yine sorabilirsin. Aşağıda yaptığım örnekte bir günde bir kez yapılan ziyateri sayacaktır. Cihaz, IP, Tarayıcı, vb.. faktörlerden etkilenmez doğru bir sayım olur.
// Şimdi bunun örneğini senin için php PDO ile yapıyorum. Mantığı anlarsın umarım...
/*
$query->$db ile başlayan $db değişkenim ben veri tabanı bağlantı
değişkeni olarak belirledim seninki ne ise onunda değiştirebilirsin.
*/
$ziyaretci_id = 1; // Profile giren kullanıcının idsi.
$ziyaret_edilen_id = 15; // Profilin sahibinin idsi.
$tarih = date("Y-m-d"); // Tarih formatı: 2018-12-5 olacaktır.
$query = $db->prepare("SELECT * from ziyetler WHERE ziyaretci=? && ziyaret_edilen_id=? && tarih=?");
$query->execute(array($ziyaretci_id,$ziyaret_edilen_id,$tarih));
if ($query->rowCount() >= 1) {
// Sorgu yaptık buradan eğer bu gün kullanıcı bu profili daha önce ziyaret etmiş ise güncelliyoruz.
// Burada biz saatlik bir dilim kullanmadık günlük kullandığımız için aynı gün yapılan ziyareti
// aslında güncellemek mantıklı değil fakat saatlik kullanırsan diye bu alanı bırakıyorum.
$query = $db->prepare("UPDATE ziyaretler SET tarih=? WHERE ziyaretci_id=? && ziyaret_edilen_id=?");
$update = $query->execute(array($tarih,$ziyaretci_id,$ziyaret_edilen_id));
if ($update) {
echo 'Son Ziyaret güncellendi.';
}
} else {
// Eğer birisi bu profili daha önce ziyaret etmiş ise ekliyoruz.
$query = $db->prepare("INSERT INTO ziyaretler SET ziyaretci_id=?,ziyaret_edilen_id=?,tarih=?");
$insert = $query->execute(array($ziyaretci_id,$ziyaret_edilen_id,$tarih));
if ($insert) {
echo 'Son Ziyaret eklendi.';
}
}
// Bu örnekte bir kullanıcı bir başka kullanıcıyı günde sadece bir ziyaretini sayar sayfa yenilemesi ip değişikliği cihaz değişikliği gibi faktörlerden etkilenmeden tekil ziyaretçi sayımı yapmış oluruz.
?>
Merhaba öncelikle detaylı cevabınız için çok teşekkür ederim sadece merak ettiğim neden aslında güncellemek mantıklı değil fakat saatlik kullanırsan diye bu alanı bırakıyorum diye yazdınız mesela benim amacım ziyaretçi listesinde sıralama yaparken son ziyaret saatini ele almak yani kişi beş dk içinde 3 kerede profili ziyaret etse yeni kayıt açmaktansa varolan kaydın saatini güncellemek istiyorum
Hepiniz aklınızı çıldırmışsınız.
-
Üyelik
25.06.2016
-
Yaş/Cinsiyet
36 / E
-
Meslek
Şoför
-
Konum
İzmir
-
Ad Soyad
S** C**
-
Mesajlar
9
-
Beğeniler
0 / 0
-
Ticaret
0, (%0)
hsntngr adlı üyeden alıntı
Yukarıda
MyYafes hocam güzel bir şekilde açıklamış, o yüzden ben pas geçiyorum, kolay gelsin hocam :)
Bu arada
MyYafes hocam sanırım OP birebir kayıt aramıyor. ziyaret eden ve edilen id lerin uyuşması yeterli, eğer bir ziyaret varsa tarihini güncellemek istiyor.
düşüncelerime tercüman olduğunuz için teşekkür ederim @hsntngr (:
Hepiniz aklınızı çıldırmışsınız.