wmaraci reklam
lidertakipci

Php sorularım (cevaplayabilecek birisi?)

17 Mesajlar 2.023 Okunma
advertseo
wmaraci reklam

Pyrotoxin Pyrotoxin WM Aracı Kullanıcı
  • Üyelik 12.08.2012
  • Yaş/Cinsiyet 33 / E
  • Meslek Php Yazilimci
  • Konum İzmir
  • Ad Soyad F** Ö**
  • Mesajlar 42
  • Beğeniler 10 / 6
  • Ticaret 0, (%0)
mantığın üç aşşağı beş yukarı bu şekilde olması gerekiyor. buradaki basit mantık görevin istekleri ile üyenin yeteneklerini kıyaslamak yeteneği yeterli ise işlem yaptır tablosunu güncelle değilse hata bas.

html kısmı

Enerji
150
(6 dk sonra +10)

Sağlık
100


Seviye
6











function gorevAl()
{
//post ile isteği gönderiyoruz
$.post("gorevsorgula.php",$('#formGorev').serialize() ,function(sonuc){

if(!sonuc) {return alert('Sunucu Hatası!') }
//basarili alani true donerse islem yaptir donmezse hata bastir
if(sonuc.basarili){
//alanları yeni verilerle guncelle
$('#textEnerji').html(sonuc.enerji)
$('#textSaglik').html(sonuc.saglik)
$('#textSeviye').html(sonuc.seviye)
}else{
//hata mesaji bas
alert(sonuc.hata)
}
},'json').fail( function() {
alert('Sunucu hatası!')
})
}


php kısmı

$veri = array();

//gelen veriyi integer tipinde aldık
$inputGorev = int($_POST['gorev']);

// select * from gorevler where gorevsira = $inputGorev
//gelen işleme göre görev bilgilerini al
$sqlGetirGorev = Gorevler::find($inputGorev);

//görev varmı diye bak yoksa hata mesajı bas
if(empty($sqlGetirGorev))
//hata mesajı oluştur
$veri['hata'] = 'Görev Bulunamadı';
endif;

//oturum açan üyenin bilgilerini al
$sessionUye = $_SESSION['uye'];

//seviye kontrolu
if($sessionUye['seviye'] >= $sqlGetirGorev['seviye']):
$veri['hata'] = 'Üzgünüm görevi yerine getirecek seviyeye sahip değilsiniz';
endif;

/*
Aynı şekilde diğer kiriter kontrollerinide yapın
...
...
...
...
*/

//sistemle ilgili hata yoksa
if(empty($veri['hata']))

//yeni seviyeyi hesapla
$yeniSeviye = $sessionUye['seviye'] + $sqlGetirGorev['kazanc'];

//yeni sağlık bilgisini hesapla
$yeniSaglik = $sessionUye['saglik'] - 10;

//.... diğer kriterler

//update uyeler set seviye = $yenisEviye, saglık = $yeniSaglik ... where uyesira = $sessionUye['uyesira']
//üyeler tablosuna yeni sağlık seviye ... bilgilerini gir tabloyu güncelle
Uyeler::where('uyesira', $sessionUye['uyesira'])->update(array(
'saglik' => $yeniSeviye,
'seviye' => $yeniSaglik,
//.... diğer kriterleriniz
));

//kriterleri diziye at
$veri['saglik'] = $yeniSaglik;
$veri['seviye'] = $yenisEviye;

//true mesajı oluştur
$veri['basarili'] = 'İşleminiz başarılı';
endif;


//diziyi json formatında ekrana bas
return json_encode($veri);

MarshallXY

kişi bu mesajı beğendi.

wmaraci
reklam

MarshallXY MarshallXY WM Aracı Kullanıcı
  • Üyelik 31.10.2013
  • Yaş/Cinsiyet 38 / E
  • Meslek Yazılım ve Veritabanı Uzmanı S
  • Konum Kocaeli
  • Ad Soyad T** P**
  • Mesajlar 298
  • Beğeniler 59 / 56
  • Ticaret 2, (%100)

Pyrotoxin adlı üyeden alıntı

mantığın üç aşşağı beş yukarı bu şekilde olması gerekiyor. buradaki basit mantık görevin istekleri ile üyenin yeteneklerini kıyaslamak yeteneği yeterli ise işlem yaptır tablosunu güncelle değilse hata bas.

html kısmı

Enerji
150
(6 dk sonra +10)

Sağlık
100


Seviye
6











function gorevAl()
{
//post ile isteği gönderiyoruz
$.post("gorevsorgula.php",$('#formGorev').serialize() ,function(sonuc){

if(!sonuc) {return alert('Sunucu Hatası!') }
//basarili alani true donerse islem yaptir donmezse hata bastir
if(sonuc.basarili){
//alanları yeni verilerle guncelle
$('#textEnerji').html(sonuc.enerji)
$('#textSaglik').html(sonuc.saglik)
$('#textSeviye').html(sonuc.seviye)
}else{
//hata mesaji bas
alert(sonuc.hata)
}
},'json').fail( function() {
alert('Sunucu hatası!')
})
}


php kısmı

$veri = array();

//gelen veriyi integer tipinde aldık
$inputGorev = int($_POST['gorev']);

// select * from gorevler where gorevsira = $inputGorev
//gelen işleme göre görev bilgilerini al
$sqlGetirGorev = Gorevler::find($inputGorev);

//görev varmı diye bak yoksa hata mesajı bas
if(empty($sqlGetirGorev))
//hata mesajı oluştur
$veri['hata'] = 'Görev Bulunamadı';
endif;

//oturum açan üyenin bilgilerini al
$sessionUye = $_SESSION['uye'];

//seviye kontrolu
if($sessionUye['seviye'] >= $sqlGetirGorev['seviye']):
$veri['hata'] = 'Üzgünüm görevi yerine getirecek seviyeye sahip değilsiniz';
endif;

/*
Aynı şekilde diğer kiriter kontrollerinide yapın
...
...
...
...
*/

//sistemle ilgili hata yoksa
if(empty($veri['hata']))

//yeni seviyeyi hesapla
$yeniSeviye = $sessionUye['seviye'] + $sqlGetirGorev['kazanc'];

//yeni sağlık bilgisini hesapla
$yeniSaglik = $sessionUye['saglik'] - 10;

//.... diğer kriterler

//update uyeler set seviye = $yenisEviye, saglık = $yeniSaglik ... where uyesira = $sessionUye['uyesira']
//üyeler tablosuna yeni sağlık seviye ... bilgilerini gir tabloyu güncelle
Uyeler::where('uyesira', $sessionUye['uyesira'])->update(array(
'saglik' => $yeniSeviye,
'seviye' => $yeniSaglik,
//.... diğer kriterleriniz
));

//kriterleri diziye at
$veri['saglik'] = $yeniSaglik;
$veri['seviye'] = $yenisEviye;

//true mesajı oluştur
$veri['basarili'] = 'İşleminiz başarılı';
endif;


//diziyi json formatında ekrana bas
return json_encode($veri);



Güzel yazmışsın eline sağlık
Pyrotoxin

kişi bu mesajı beğendi.

YazilimMimari YazilimMimari Eski adi: Turgay Can Kullanıcı
  • Üyelik 25.06.2012
  • Yaş/Cinsiyet 38 / E
  • Meslek Engineering Director
  • Konum İstanbul Avrupa
  • Ad Soyad T** C**
  • Mesajlar 771
  • Beğeniler 2 / 260
  • Ticaret 0, (%0)
"how to insert a row in a database with php"

insert,update,delete =) bol bol kullanacaksın
 

 

https://www.linkedin.com/in/turgaycan/
Kaliteli kod yazılır.. (Günlük/Saatlik ücreti ile)

Altay Altay MW Aracı Kullanıcı
  • Üyelik 04.07.2012
  • Yaş/Cinsiyet 28 / E
  • Meslek Öğrenci
  • Konum Antalya
  • Ad Soyad E** K**
  • Mesajlar 563
  • Beğeniler 111 / 121
  • Ticaret 11, (%100)

Gandak adlı üyeden alıntı

:) yani valla kusura bakma daha güzel nasıl anlatırım diye düşünüyorum ama işin içinden çıkamıyorum. :)

1- veritabanına üyeler tablosuna bir tane enerjisure diye bir satır aç
2- adam üye olduğunda adamın enerjisure satırına $zaman=time(); $zaman değerini ata
3- her sayfaya çektiğin bir sayfa aç mesela zamanlama.php diye
4- bu zamanlama.php sayfasını her sayfaya inculude olacak şekilde yani her sayfada çalışacak şekilde ayarla
5- bu zamanlama.php sayfasının içine
$yenizaman=time();
$eskizaman // bunu veritabanından çek üyenin
if($yenizaman<=($eskizaman+(60*10))){
$enerji+10;

son enerjiyi veritabanına kayıt et
}else{
//burayı boş bırak.
}


Hocam elinize sağlık, sayenizde ben de yararlandım. Fakat 5. adımda biraz hata olmuş sanki. Her 10 dakika da, 10 enerji verilecekse, güzel fakat bir sorun var. Ya bu sayfa her dakika değil de 1 saatte bir çalışıyorsa. Yani üye sayısı az, ve kod 1 saat sonra çalıştı. Kişinin normalde 60 enerjisi olması gerekirken 10 enerjisi oluyor.

Onun yerine; $eskizaman olarak son enerji verilme tarihi diyelim. Yani en son ne zaman üyeye enerji verilmiş.

$yenizaman=time();
$eskizaman //Veritabanından gelen değer.
$hesapla = $yenizaman - $eskizaman; // Son enerji verilişinden itibaren geçen süre.
if($hesapla > (60*10)){ //hesapla değeri 10dk dan büyük değil ise direk hiçbirşey yapılmasın.
$enerjiver = floor($hesapla / (10 * 60)); //şimdi hesapla değerini 10dk'ya bölüp onu bir alt sayıya yuvarlıyoruz. Yani sayı 3.4'de olsa 3.9'da olsa 3'e yuvarlanacak. Bu sayede kişi 35 enerji alması gerekirken 40 değil, 30 enerji alacak, yani tam olarak 10 ve 10'un katlarında, kendi payına düşeni alacak.
$enerjiver = $enerjiver * 10; // enerji ver değişkeni kaç 10 dakika geçtiğini gösteriyordu. Her 10 dakikada 10 enerji verdiğimiz için, 10 ile çarpıyoruz.

$enerji = $enerji + $enerjiver; // işte burada verilmesi gereken enerjimizi bulduk. Burada unutulmaması gereken nokta, $yenizaman değerini, veritabanından gelen eskizaman değerine girmek, yoksa kişi şimdi enerji almamış sayılacak ve bu sayede tekrar enerji alabilecektir.
}


Benim mantığım da bu, bu yöntem ile her sayfada bu kodu çağırman gerekmez, kişi tek başına kendisi bile enerjisini alabilir. 1 saat boyunca hiç kimse siteyi açmasa bile kişi 1 saat sonra gelip 60 enerjisini alabilir.

Kodlarda hata var mı yok mu denemedim ama mantık budur. Floor komtunu da anlatmaya çalıştım, anlaşılmayan yerler olursa lütfen belirt.
 

 

PHP Coder,
Kişisel Blog: http://evrimaltay.net
wmaraci
wmaraci

Gandak Gandak Web Master &amp; Yazar Kullanıcı
  • Üyelik 25.08.2013
  • Yaş/Cinsiyet 32 / E
  • Meslek Web Master &amp; Yazar
  • Konum Balıkesir
  • Ad Soyad M** K**
  • Mesajlar 230
  • Beğeniler 36 / 49
  • Ticaret 25, (%100)

Altay adlı üyeden alıntı



Benim mantığım da bu, bu yöntem ile her sayfada bu kodu çağırman gerekmez, kişi tek başına kendisi bile enerjisini alabilir. 1 saat boyunca hiç kimse siteyi açmasa bile kişi 1 saat sonra gelip 60 enerjisini alabilir.

Kodlarda hata var mı yok mu denemedim ama mantık budur. Floor komtunu da anlatmaya çalıştım, anlaşılmayan yerler olursa lütfen belirt.


Olabilir hocam ben aceleyle mantığını çözeyim dedim
 

 

ScreamTR ScreamTR Araki bulaki Kullanıcı
  • Üyelik 06.11.2013
  • Yaş/Cinsiyet 38 / E
  • Meslek web tasarım
  • Konum İzmir
  • Ad Soyad A** P**
  • Mesajlar 23
  • Beğeniler 2 / 6
  • Ticaret 0, (%0)
Eğer web tabanlı bir oyundan bahsediyorsak Ajax olmadan bu iş olmaz. Php + Ajax kullanımını araştırmalısın.
 

 

Gandak Gandak Web Master &amp; Yazar Kullanıcı
  • Üyelik 25.08.2013
  • Yaş/Cinsiyet 32 / E
  • Meslek Web Master &amp; Yazar
  • Konum Balıkesir
  • Ad Soyad M** K**
  • Mesajlar 230
  • Beğeniler 36 / 49
  • Ticaret 25, (%100)

ScreamTR adlı üyeden alıntı

Eğer web tabanlı bir oyundan bahsediyorsak Ajax olmadan bu iş olmaz. Php + Ajax kullanımını araştırmalısın.


Yani arkadaş aslında kodlama konusunda çok zayıf zaten bir kod vermektense ona mantığını öğretmek en güzeli zaten çoğu web masterında sorunu bu hep script düzenleyip web master oldum diyen çok arkadaş var onları küçümsemiyorum ama bu mantık işi mantığını kullanırsan update delete ınsert bile çoğu iş için yeterli kalıyor php konusunda tabi geliştirmek için ajax mutlaka ve mutlaka gerek
 

 

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