Konuyu görüntüle
IUCODERS FORUM > Programlama > PHP > substr() problemi - php
Yazar
miracc


avatar
Houston, TX
Kayıt: 07.01.2006
09.08.2006-03:17 #9310
Merhaba arkadaslar,

Sorunum garip bir sorun 2 saattir ugrasiyorum ama bulamadim.
Soyle ki : blog sitemde yazilarin tarihlerini vt den cektikten sonra 3 e bolup farkli yerlerde gun ay yil bilgilerini kullaniyorum.

Ay bilgisi 2 rakamdan olusuyo ve if lerle bunlari string e ceviriyorum. yani 01 ise oca, 02 ise sub gibi...
3 aydir kullaniyorum bu konuda bir problemle karsilasmadim ama agustos ayina girince ilk yazimda farkettim ki ay bilgisi gorunmuyor. bu durum sadece agustos ve eylul aylari icin gecerli diger aylar normal calisiyor.

tarih vt.de 2006-08-22 formatinda tutuluyor. ben bunu $month = substr($row["date"], 5, 2) seklinde aliyorum. dedigim gibi diger aylar sorunsuz calisiyor ama 08 ve 09 yani agustos eylul icin calismiyor.

neden olabilir???





blog.miracc.com


Yazar
kellad


avatar
istanbul
Kayıt: 21.01.2006
09.08.2006-09:14 #9311
Bence hata if 'li satırlarda olabilir.
Agustos ve eylül için, yazdığın cümleden sonuç dönmüyor mu? Break point ve watch felan koyup kontrol ettin mi? Eğer o satırdan sonuç dönmüyorsa sistemde garip bir hata var demektir.





Decompiling the code of universe.
Listening the cosmic background radiation.
Swimming in Inter Stellar Medium.
Yazar
orhan


avatar
istanbul
admin
Kayıt: 17.11.2005
09.08.2006-12:18 #9314
bu işi veritabanına yaptırabilirsin.
 

SELECT DATE_FORMAT(now(), '%W %M %Y %h %m') as tarih;
çıktısı:
Wednesday August 2006 12 08

yada
 

SELECT DATE_FORMAT(now(),'%d.%m.%Y-%H.%i') as tarih;
çıktısı
09.08.2006-12.12

bu örnekler çoğaltılabilir.
mysql deki date_format fonksiyonuna göz atabilirsin.





N/A
Yazar
bilgekayik


avatar

Kayıt: 12.01.2006
09.08.2006-23:27 #9335
sub_str kullanacağın ne güzel adamlar
explode() die bişi yapmışlar

$tarihh=explode("-",$row["date"]); de
ondan sona da $tarihh[0] $tarihh[1] $tarihh[2]

olarak yıl ay gün istediğin gibi kullanabilirsin

bu arada bence de burda deil problem

if inde olabilir

kolay gelsinn





BiLGEONLiNE.NET ?
Yazar
fonemi


avatar

Kayıt: 09.01.2007
14.01.2007-17:02 #13537
Explode kullanmak bence de daha mantıklı. Ocak şubat için de if'le uğraşmaya gerek yok, bir array'le çözebilirsin problemi.

<?php

$tarih = "2007-01-14";
$yenitarih = explode("-", $tarih);
$yil = $yenitarih[0];
$ay = $yenitarih[1];
$gun = $yenitarih[2];

$aylar = array("Ocak", "Şubat", "Mart", "Nisan", "Mayıs", "Haziran", "Temmuz", "Ağustos", "Eylül", "Ekim", "Kasım", "Aralık");

$ay_yaziyla = $aylar[$ay - 1];

echo $gun . " " . $ay_yaziyla . " " . $yil;

// Çıktı : 14 Ocak 2007
?>


Ama bence veritabanında date ya da datetime yerine int(10) kullan. Değer olarak da phpnin now(); fonskyionunu yazdır. çevireceğin zaman da date(format, timestamp); fonksiyonu işini görür.





Del.icio.us
Digg
Facebook
Furl
Google
Blink
Simpy
Spurl
Y! MyWeb