• 16-02-2024, 13:16:49
    #1
    Merhaba arkadaslar nerde yalnis yaptim bi turlu cozemiyorum yardimci olursaniz sevinirim


    cron.php
    <?PHP
    require __DIR__ . '/config.php';
    
    
    $basla = $spexcon->query("SELECT * FROM repacks ORDER BY id ASC");
                             
    foreach ($basla as $ff) {
        $id = $ff['id'];
    
        $bitis = $ff['btarih'];
    
    
        $simdiki_zaman = date('Y-m-d H:i:s');
        $sz = strtotime($simdiki_zaman);
    
    
    if($bitis > $sz){ 
    
    $upa = $spexcon->query("UPDATE repacks SET st='1' WHERE id='".$id."' AND st='0' ");
    }else{
    echo "Daha zamanin bitmesine var </br>";
    
    }
    
    }
    
    
    
    
    
    ?>
    yapmak istediyim sey su

    uye paket aliyor 45 gunluk-

    repacks tablesine strtotime ile btarih columuna ekliyorum st da 0 oluyor yani paket calisiyor

    simdi 45 gun bitdiginde bu paketi st 1 yapmak istiyorum

    bi turlu olmuyor
  • 16-02-2024, 13:23:21
    #2
    Öncelikle ilk çektiğiniz sorguyu değiştirmeniz performans açısından faydası var. Değişken isimleri daha anlamlı vermeniz kodu okumanız açısından daha yararlı olacaktır.


    <?PHP
    require __DIR__ . '/config.php';
    $simdiki_zaman = date('Y-m-d H:i:s');
    $repacks = $spexcon->query("SELECT * FROM repacks WHERE btarih >= '" . $simdiki_zaman . "' AND st = '0' ORDER BY id ASC");
                              
    foreach ($repacks as $repack) {
        $spexcon->query("UPDATE repacks SET st='1' WHERE id='" . $id . "'");
    }
  • 16-02-2024, 13:29:29
    #3
    yvolkan adlı üyeden alıntı: mesajı görüntüle
    Öncelikle ilk çektiğiniz sorguyu değiştirmeniz performans açısından faydası var. Değişken isimleri daha anlamlı vermeniz kodu okumanız açısından daha yararlı olacaktır.


    <?PHP
    require __DIR__ . '/config.php';
    $simdiki_zaman = date('Y-m-d H:i:s');
    $repacks = $spexcon->query("SELECT * FROM repacks WHERE btarih >= '" . $simdiki_zaman . "' AND st = '0' ORDER BY id ASC");
                              
    foreach ($repacks as $repack) {
        $spexcon->query("UPDATE repacks SET st='1' WHERE id='" . $id . "'");
    }

    denedim calismadi hocam

    Not: btarih deki data strtotime ile

    strtotime($simdiki_zaman) denedim simdiki_zamani yine calismadi

    sizin yazdiginiz sekilde hepsinin st 1 oldu


    strtotime ekledigimde degisen bisey olmadi



  • 16-02-2024, 16:00:22
    #4
    hayla cozulmus degil yardimci olucak varsa yazsin lutfen
  • 16-02-2024, 16:14:38
    #5
    bir denermisiniz:
    <?php
    require __DIR__ . '/config.php';
    $simdiki_zaman = time();
    $repacks = $spexcon->query("SELECT * FROM repacks WHERE btarih >= ".$simdiki_zaman." AND st = '0'");
                               
    foreach ($repacks as $repack) {
        $spexcon->query("UPDATE repacks SET st='1' WHERE id=".$repack["id"]);
    }
    ?>
  • 16-02-2024, 16:15:50
    #6
    DigitalHistory adlı üyeden alıntı: mesajı görüntüle
    hayla cozulmus degil yardimci olucak varsa yazsin lutfen
    aşağıdaki gibi denediğinizde çıktı ne oluyor acaba?
    echo $date = date('Y-m-d H:i:s');
    echo '-';
    echo strtotime($date);
  • 16-02-2024, 16:19:47
    #7
    VEDANTA adlı üyeden alıntı: mesajı görüntüle
    bir denermisiniz:
    <?php
    require __DIR__ . '/config.php';
    $simdiki_zaman = time();
    $repacks = $spexcon->query("SELECT * FROM repacks WHERE btarih >= ".$simdiki_zaman." AND st = '0'");
                              
    foreach ($repacks as $repack) {
        $spexcon->query("UPDATE repacks SET st='1' WHERE id=".$repack["id"]);
    }
    ?>
    calismadi hocam
    yvolkan adlı üyeden alıntı: mesajı görüntüle
    aşağıdaki gibi denediğinizde çıktı ne oluyor acaba?
    echo $date = date('Y-m-d H:i:s');
    echo '-';
    echo strtotime($date);
    2024-02-16 16:19:21-1708089561
  • 16-02-2024, 16:27:07
    #8
    Sütünlarını datetime olarak değiştirsen daha mantıklı olabilir

    Paket oluştururken yada satın alırken bitiş tarihini (btarih )

      $eklenme_tarihi = date('Y-m-d H:i:s');
      $datetime = new DateTime($eklenme_tarihi);
      $datetime->modify('+45 day');
      $bitis_tarihi = $datetime->format('Y-m-d H:i:s');
    olarak veritabanına kaydet

    update işlemini de döngü kullanmadan tek satırsa yapabilirsin böylece

    UPDATE repacks SET st='1' WHERE  btarih < now()
  • 16-02-2024, 16:27:48
    #9
    sorguyu yanlış yazmışım sanırım. aşağıdaki şekilde dener misin?
    <?PHP
    require __DIR__ . '/config.php';
    $simdiki_zaman = date('Y-m-d H:i:s');
    $repacks = $spexcon->query("SELECT * FROM repacks WHERE '" . $simdiki_zaman . "' >= btarih AND st = '0' ORDER BY id ASC");
    
    foreach ($repacks as $repack) {
    $spexcon->query("UPDATE repacks SET st='1' WHERE id='" . $id . "'");
    }