• 19-04-2015, 04:24:16
    #1
    Arkadaşlar, veritabanımdaki bir tabloya türü datetime olan bir sütun açtım. Yine bu input türü datetime olan formdan tarihi kaydetmeye çalışıyorum ancak veritabanına tarih "0000-00-00 00:00:00" şeklinde giriyor..

    Örnek veritabına kayıt esnasında kullandığım kodlar..

    ÇÖZÜLDÜ

    <?php
    	if($_POST){
    	$gelecektarih = $_POST["gelecektarih"];
    	$ekle = mysql_query("INSERT INTO slaytlar (gelecektarih) VALUES ('$gelecektarih')");
    							
        devam eden kodlar ...
    	}
    	?>
    
    			<form action="" id="form_sample_1" method="post" class="form-horizontal" enctype="multipart/form-data">
    
    				<div class="control-group">
    				  <label class="control-label">Tarih</label>
    				  <div class="controls">
    					<input type="datetime" name="gelecektarih" size="15" value="2013-09-13 16:49:44">
    				  </div>
    				</div>
    			</form>
    Sorunumun devamında da yapmak istediğimi belirtip fikir üretebilecek arkadaş olursa çok sevinirim..

    İşin genelinde gelecek tarihe zamanlanmış konu girmek istiyorum, yapmayı düşündüğüm de eklediğim dosyaları onaya bırakıp, bu gelecek tarih ve zaman şimdiki zamana eşitlendiğinde onayda kalan dosyanın sütun değerini "0" dan "1"e dönüştürecek. Bu sorgulamanın kodlarını da ya index sayfama ekleyip ya da bir cronla çalıştırmayı düşünüyorum. Bu düşündüğümü gerçekleştirme şansım var mı yoksa boşa mı kürek çekiyorum


    Alttaki kodla da konuyu aktifleştireceğim ancak sanırım bu sefer tüm onayda olanlar aktifleşecek. Velhasıl diğer sütundaki gelecektarihe göre sorgu yapıp şimdiki tarihe eş değer olduğunda ilgili konuyu aktifleştirmek gerekiyor da nasıl yapacağımı bulamadım.. Şu an eklediğim dosyalar onay sütunu "0" olarak yayınlanmadan bekliyor..

    ÇÖZÜLDÜ

    Mysql event

    CREATE EVENT onay
    ON SCHEDULE EVERY 1 HOUR 
    DO 
    UPDATE slaytlar SET onay = 1 
    WHERE gelecektarih <= NOW() && onay = 0;
  • 19-04-2015, 12:26:50
    #2
    ylv
    Üyeliği durduruldu
    slideshare adlı üyeden alıntı: mesajı görüntüle
    Arkadaşlar, veritabanımdaki bir tabloya türü datetime olan bir sütun açtım. Yine bu input türü datetime olan formdan tarihi kaydetmeye çalışıyorum ancak veritabanına tarih "0000-00-00 00:00:00" şeklinde giriyor..

    Örnek veritabına kayıt esnasında kullandığım kodlar..

    <?php
    	if($_POST){
    	$gelecektarih = (int)$_POST["gelecektarih"];
    	$ekle = mysql_query("INSERT INTO slaytlar (gelecektarih) VALUES ('$gelecektarih')");
    							
        devam eden kodlar ...
    	}
    	?>
    
    			<form action="" id="form_sample_1" method="post" class="form-horizontal" enctype="multipart/form-data">
    
    				<div class="control-group">
    				  <label class="control-label">Tarih</label>
    				  <div class="controls">
    					<input type="datetime" name="gelecektarih" size="15" value="2013-09-13 16:49:44">
    				  </div>
    				</div>
    			</form>
    Sorunumun devamında da yapmak istediğimi belirtip fikir üretebilecek arkadaş olursa çok sevinirim..

    İşin genelinde gelecek tarihe zamanlanmış konu girmek istiyorum, yapmayı düşündüğüm de eklediğim dosyaları onaya bırakıp, bu gelecek tarih ve zaman şimdiki zamana eşitlendiğinde onayda kalan dosyanın sütun değerini "0" dan "1"e dönüştürecek. Bu sorgulamanın kodlarını da ya index sayfama ekleyip ya da bir cronla çalıştırmayı düşünüyorum. Bu düşündüğümü gerçekleştirme şansım var mı yoksa boşa mı kürek çekiyorum


    Alttaki kodla da konuyu aktifleştireceğim ancak sanırım bu sefer tüm onayda olanlar aktifleşecek. Velhasıl diğer sütundaki gelecektarihe göre sorgu yapıp şimdiki tarihe eş değer olduğunda ilgili konuyu aktifleştirmek gerekiyor da nasıl yapacağımı bulamadım.. Şu an eklediğim dosyalar onay sütunu "0" olarak yayınlanmadan bekliyor..


    mysql_query("update slaytlar set onay='1'");
    $gelecektarih = (int)$_POST["gelecektarih"];

    2013-09-13 16:49:44 verisini integer tipine casting ederseniz olmaz.

    mysql_query("update slaytlar set onay='1'");

    sorguya şart gireceksiniz.
    sql > update slaytlar set onay='1' where gelecektarih<=NOW() && onay='0'

    cronjob yerine mysql event kullanabilirsin.

    create event asdasd on schedule every 1 minute
    do
    begin
    update slaytlar set onay='1' where gelecektarih<=NOW() && onay='0'
    end;

    kolay gelsin.
  • 19-04-2015, 14:37:49
    #3
    ylv adlı üyeden alıntı: mesajı görüntüle
    $gelecektarih = (int)$_POST["gelecektarih"];

    2013-09-13 16:49:44 verisini integer tipine casting ederseniz olmaz.

    mysql_query("update slaytlar set onay='1'");

    sorguya şart gireceksiniz.
    sql > update slaytlar set onay='1' where gelecektarih<=NOW() && onay='0'

    cronjob yerine mysql event kullanabilirsin.

    create event asdasd on schedule every 1 minute
    do
    begin
    update slaytlar set onay='1' where gelecektarih<=NOW() && onay='0'
    end;

    kolay gelsin.

    Üstadım müthişsin

    Şu an verdiğin kod sayesinde resmen gelecek tarihe konu ekleyebiliyorum. Eklediğim tüm konular admin onayına kalıyor ve verdiğin kod çalıştığında gelecek tarihi sütunundaki tarih ve saat günümüz tarih ve saatinden küçük ve eşit olduğunda konu aktifleşiyor. Burda işte bir olumsuz durum üyelerin eklediği onaya kalan konularında bu yolla kontrol edilmeden aktifleşmesiydi, onuda veritabanındaki gelecektarihi sütununu üyeler için sabit bir değer yani günümüzden 10 yıl sonrası gibi bir tarih atadım, dolayısıyla onların konuları ben incelemeden onaylanmasına da fırsat vermemiş oldum.. Valla müthiş oldu, teşekkürler gerçekten..

    Son bir sorum olacak, bu kodun çalıştırılması için mysql event dediniz, acaba mysl event mı, yoksa cron job ya da index sayfasından otomatik çalışması mı db yi daha az yorar, ona göre en az masrafsızı neyse ona yöneleyim
  • 19-04-2015, 15:11:28
    #4
    Üyeliği durduruldu
    slideshare adlı üyeden alıntı: mesajı görüntüle
    Üstadım müthişsin

    Şu an verdiğin kod sayesinde resmen gelecek tarihe konu ekleyebiliyorum. Eklediğim tüm konular admin onayına kalıyor ve verdiğin kod çalıştığında gelecek tarihi sütunundaki tarih ve saat günümüz tarih ve saatinden küçük ve eşit olduğunda konu aktifleşiyor. Burda işte bir olumsuz durum üyelerin eklediği onaya kalan konularında bu yolla kontrol edilmeden aktifleşmesiydi, onuda veritabanındaki gelecektarihi sütununu üyeler için sabit bir değer yani günümüzden 10 yıl sonrası gibi bir tarih atadım, dolayısıyla onların konuları ben incelemeden onaylanmasına da fırsat vermemiş oldum.. Valla müthiş oldu, teşekkürler gerçekten..

    Son bir sorum olacak, bu kodun çalıştırılması için mysql event dediniz, acaba mysl event mı, yoksa cron job ya da index sayfasından otomatik çalışması mı db yi daha az yorar, ona göre en az masrafsızı neyse ona yöneleyim
    Mutlu olmanıza sevindim valla ben de

    Event daha az yorar düşüncesindeyim.
  • 19-04-2015, 16:01:11
    #5
    ylv
    Üyeliği durduruldu
    slideshare adlı üyeden alıntı: mesajı görüntüle
    Üstadım müthişsin

    Şu an verdiğin kod sayesinde resmen gelecek tarihe konu ekleyebiliyorum. Eklediğim tüm konular admin onayına kalıyor ve verdiğin kod çalıştığında gelecek tarihi sütunundaki tarih ve saat günümüz tarih ve saatinden küçük ve eşit olduğunda konu aktifleşiyor. Burda işte bir olumsuz durum üyelerin eklediği onaya kalan konularında bu yolla kontrol edilmeden aktifleşmesiydi, onuda veritabanındaki gelecektarihi sütununu üyeler için sabit bir değer yani günümüzden 10 yıl sonrası gibi bir tarih atadım, dolayısıyla onların konuları ben incelemeden onaylanmasına da fırsat vermemiş oldum.. Valla müthiş oldu, teşekkürler gerçekten..

    Son bir sorum olacak, bu kodun çalıştırılması için mysql event dediniz, acaba mysl event mı, yoksa cron job ya da index sayfasından otomatik çalışması mı db yi daha az yorar, ona göre en az masrafsızı neyse ona yöneleyim
    tartışmasız mysql event hem performans açısından hem mantıki açıdan. yapıcağız iş sadece veritabanı ile alakası ile event, php ile başka işlerde gerektiriyorsa cronjob kullanıcaksın.

    yazacağın event içerisinde prosedür fonk. vs her işlemi yapabilirsin. üye mi değil mi için

    create event asdasd on schedule every 1 minute
    do
    begin
    set @uyemi = (select count(*) from table); //üye kontrol işlemin
    if @uyemi=0 then
    update slaytlar set onay='1' where gelecektarih<=NOW() && onay='0'
    end if;
    end;

    bu yazdığım tam olarak olmaz update işlemi birden fazla satır geleceği için cursor işlemi yapıcaksın.

    declare bitti boolean default false;
    declare slayt cursor for sql sorgun update işlemi gerçekleşecek;
    declare continue handler for not found set bitti:true;

    sonra repeat veya while döngüsü içerisinde

    bitti yi kontrol ederek fetch işlemi yapıcaksın. üye ise güncelle felan. hepsini yazamıyorum şu an..

    nette örnekler bulabilirsin takıldığın yerde yazarsın hallederiz

    kolay gelsin.
  • 19-04-2015, 18:04:16
    #6
    ylv adlı üyeden alıntı: mesajı görüntüle
    tartışmasız mysql event hem performans açısından hem mantıki açıdan. yapıcağız iş sadece veritabanı ile alakası ile event, php ile başka işlerde gerektiriyorsa cronjob kullanıcaksın.

    yazacağın event içerisinde prosedür fonk. vs her işlemi yapabilirsin. üye mi değil mi için

    create event asdasd on schedule every 1 minute
    do
    begin
    set @uyemi = (select count(*) from table); //üye kontrol işlemin
    if @uyemi=0 then
    update slaytlar set onay='1' where gelecektarih<=NOW() && onay='0'
    end if;
    end;

    bu yazdığım tam olarak olmaz update işlemi birden fazla satır geleceği için cursor işlemi yapıcaksın.

    declare bitti boolean default false;
    declare slayt cursor for sql sorgun update işlemi gerçekleşecek;
    declare continue handler for not found set bitti:true;

    sonra repeat veya while döngüsü içerisinde

    bitti yi kontrol ederek fetch işlemi yapıcaksın. üye ise güncelle felan. hepsini yazamıyorum şu an..

    nette örnekler bulabilirsin takıldığın yerde yazarsın hallederiz

    kolay gelsin.
    üstadım sayenizde yeni bir olayla daha tanıştık Şimdi alttaki kodları mysql alanından uygulayarak her saatte 1 olacak şekilde onay isminde mysql event başlattım . 1,2 deneme yaptım başarılı oldu. Diğer üye kontrol, döngülere falan girersem işin içinden çıkamam Bu kadarı benim için kafi, herşey istediğim gibi oldu.

    CREATE EVENT onay
    ON SCHEDULE EVERY 1 HOUR 
    DO 
    UPDATE slaytlar SET onay = 1 
    WHERE gelecektarih <= NOW() && onay = 0;
    Artık gelecek tarihli konu paylaşıp zamanı geldiğinde otomatik onaylanıp yayınlanıyor..

    Verdiğiniz destek ve yönlendirmeler için çok teşekkür ederim..

    Konu benim için kapanmıştır
  • 19-04-2015, 19:57:56
    #7
    ylv
    Üyeliği durduruldu
    slideshare adlı üyeden alıntı: mesajı görüntüle
    üstadım sayenizde yeni bir olayla daha tanıştık Şimdi alttaki kodları mysql alanından uygulayarak her saatte 1 olacak şekilde onay isminde mysql event başlattım . 1,2 deneme yaptım başarılı oldu. Diğer üye kontrol, döngülere falan girersem işin içinden çıkamam Bu kadarı benim için kafi, herşey istediğim gibi oldu.

    CREATE EVENT onay
    ON SCHEDULE EVERY 1 HOUR 
    DO 
    UPDATE slaytlar SET onay = 1 
    WHERE gelecektarih <= NOW() && onay = 0;
    Artık gelecek tarihli konu paylaşıp zamanı geldiğinde otomatik onaylanıp yayınlanıyor..

    Verdiğiniz destek ve yönlendirmeler için çok teşekkür ederim..

    Konu benim için kapanmıştır
    rica ederim iyi çalışmalar.