İyinet'e Hoşgeldiniz!

Türkiye'nin En Eski Webmaster Forum'una Hemen Kayıt Olun!

Kayıt Ol!

Tarihe 1, 3, 6, 12 ay eklemek

atay

0
İyinet Üyesi
Katılım
29 Ekim 2005
Mesajlar
3,592
Reaction score
37
$tarih değişkeninin içine 20070613 gibi tersden yazılmış tarih geliyor. sure değişkeni 1, 3, 6 veya 12 olarak değişiyor ve bu sayılar ay olarak yeni tarihe ekleniyor.

kodun bir yerinde hata yaptım sanırım ve doğru sonuç vermiyor, baya bi saatten beri uykusuzum bu kodu bitirmedende işi bitiremiyorum, kafamda durdu. yardımlara açığım :)

PHP:
<?
$sure=$_POST[sure];
$tarih=$_POST[tarih];
$bugun=substr($tarih,6,2);
$buay=substr($tarih,4,6);
$buyil=substr($tarih,0,4);
						  
if ($sure == 12) {
$yeniyil=$buyil+1;					  
$viptarih=$yeniyil.$buay.$bugun;
}
else {
$kalanay=12-$buay;
if ($kalanay == 0) {
$yeniyil=$buyil+1;					    
$viptarih=$yeniyil.$sure.$bugun;
}
elseif ($sure > $kalanay) {
$yeniay=$sure-$kalanay;
$yeniyil=$buyil+1;
$viptarih=$yeniyil.$yeniay.$bugun;
}  
elseif ($kalanay > $sure) {
$yeniay=$buay+$sure;
$viptarih=$buyil.$yeniay.$bugun;
}
elseif ($kalanay == $sure) {
$viptarih=$buyil."12".$bugun;
}
}
echo "Bu ay ".$tarih."<br>";
echo "Vip Bitiş".$viptarih."<br>";
?>
 

atay

0
İyinet Üyesi
Katılım
29 Ekim 2005
Mesajlar
3,592
Reaction score
37
sorunu anladım,
$buay=substr($tarih,4,6);
değil
$buay=substr($tarih,4,2);
olmalıydı, gözden kaçırdığım ufak bir hata :)
 

atay

0
İyinet Üyesi
Katılım
29 Ekim 2005
Mesajlar
3,592
Reaction score
37
kodun son ve çalışan hali şu şekilde, belki ileride lazım olan olur:

PHP:
$sure=htmlkodla($_POST[sure]);
$tarih=$_POST[tarih];
//$tarih = date("Ymd");
$bugun=substr($tarih,6,2);
$buay=substr($tarih,4,2);
$buyil=substr($tarih,0,4);						  
if ($sure == 12) {
$yeniyil=$buyil+1;
$viptarih=$yeniyil.$buay.$bugun;
}
else {
$kalanay=12-$buay;
if ($kalanay == 0) {
$yeniyil=$buyil+1;
if (10 > $sure) {
$viptarih=$yeniyil."0".$sure.$bugun;
}
else {
$viptarih=$yeniyil.$sure.$bugun;
}
}
elseif ($sure > $kalanay) {
$yeniay=$sure-$kalanay;
$yeniyil=$buyil+1;
if (10 > $yeniay) {
$viptarih=$yeniyil."0".$yeniay.$bugun;
}
else {
$viptarih=$yeniyil.$yeniay.$bugun;
}
}  
elseif ($kalanay > $sure) {
$yeniay=$buay+$sure;
if (10 > $yeniay) {
$viptarih=$buyil."0".$yeniay.$bugun;
}
else {
$viptarih=$buyil."0".$yeniay.$bugun;
}
}
elseif ($kalanay == $sure) {
$viptarih=$buyil."12".$bugun;
}
}
echo "Bu ay ".$tarih."<br>";
echo "Vip Bitiş".$viptarih."<br>";
 

Caesar

0
İyinet Üyesi
Katılım
5 Haziran 2006
Mesajlar
1,894
Reaction score
7
+1 ay için
PHP:
$tarih=date("dmY",strtotime("+1 month"));
+3 ay için
PHP:
$tarih=date("dmY",strtotime("+3 months"));
+10 gün için
PHP:
$tarih=date("dmY",strtotime("+10 days"));

Geçen yıl
PHP:
$tarih=date("dmY",strtotime("-1 year"));

sen dünyayı yeniden feth etmişin
 

atay

0
İyinet Üyesi
Katılım
29 Ekim 2005
Mesajlar
3,592
Reaction score
37
keşke yazmasaydın bu kısayolu, o kadar uğraştığım için pişmanlık duyuyorum :D
 

sitemedya

0
İyinet Üyesi
Katılım
11 Kasım 2004
Mesajlar
284
Reaction score
0
Bu yazacağım, postu hortlatmaya değecek :)

Caesar'in yazdığı kodlar güzel ancak hata olmasına neden olabilir.
Şöyle ki: Server Türkiyede değil ise, saat farkı olacak. Örneğin Amerikada olan serverdaki türkçe siteye, Türkiye'den girenler için saat farkından dolayı hatalı sonuc verebilen 7 veya 8 saatlik bir aralık olacaktır.
Bunu engellemek için, Caesar'ın verdiği kodun öncesinde aşağıdaki kodu kullanmak daha iyi olur.

PHP:
date_default_timezone_set("Europe/Istanbul");

Diğer şehirler için buraya tıklayın.
 

Türkiye’nin ilk webmaster forum sitesi iyinet.com'da forum üyeleri tarafından yapılan tüm paylaşımlardan; Türk Ceza Kanunu’nun 20. Maddesinin, 5651 Sayılı Kanununun 4. maddesinin 2. fıkrasına göre, paylaşım yapan üyeler sorumludur.

Üst