Число, броене

RiddleR

Registered
Добро утро,
измъчва ме едно нещо.

Значи да кажем,че имаме база всичко точно и изкарваме числото 30 от базата данни .

Как да направя така, че всеки ден това число на всеки 24 часа да става с едно по малко т.е. след 24 часа вече да не е 30 ами да е 29.

И друго, като стигне до 0 да променя друго поле в друга база ?
 
Мисля че по лесен вариянт от ози няма :

DEMEO

В твоя случай

$d=strotime("00:00:00")
if($d==time()){
пишеш какво требе да се случи и къде
}



Код:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
     <head>
          <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
          <title>TIME TO CHANGE</title>
     </head>
     <body>
          <b>
               echo $d=strtotime("sun 00:00:00");<br />
               Функцията стротиме ти дава уникстиме щамп на точноро време което ти трябва и така можеш да вземеш точния уникстиме щамп
               на каквото си поискаш и когато си поискаш и после във един иф само сравняваш дали тиме() сегашното време отговаря на това
               което на тебе ти трябва !!!
               echo date("D M Y G:i:s",$d);<br /><hr><br>
          </b>
          <?php
          echo $naw=time().' Сега е <br>';
          echo date("D - d /M/Y -- G:i:s",$naw).' Сега е <br><hr>';
          echo $d=strtotime("sun 00:00:00").' Когато трябва да стане промяната<br>';
          echo date("D - d/M/Y -- G:i:s",$d).' Когато трябва да стане промяната<br><hr>';
          $file = "chislo.txt";
          $fp = fopen($file , "r+");
          $chislo = (int)fread($fp, 1024);
          fclose($fp);
          echo '<hr>';
          echo $chislo.' -> Сегашната стойност на числото';
          echo '<hr>';
          if(strtotime("sun 00:00:00")==time()) {
               $file = "chislo.txt";
               $fp = fopen($file , "r+");
               $chislo = (int)fread($fp, 1024);

               echo $chislo.' -> Сегашната стойност на числото';

               $chislo++;
               if ( flock($fp,LOCK_EX) ) {
                    fseek($fp,0);
                    fwrite($fp, $chislo);
               }
               fclose($fp);
          }
          ?>
     </body>
</html>
 
За целта или ще ти трябват кронджобове, както ти казаха по-горе.
Или някакъв допълнителен маркер, с който да отбелязваш дали си променил за днес това поле (може да бъде съвсем обикновенно поле ENUM('1','2') или просто ако имаш поле за времето на ъпдейта.
Та това е като цяло цялата философия, останалото е няколко проверки.
Код:
 if ( $row['полето'] > $dnes ) {
и още една дали е вече на нула
Код:
if ( $row['полето'] > 0 )
:?:
 
да ви кажа , че и на идея си нямам как да го направя, да обесня по додробно.


Така значи става на въпрос за vip статуси на потребителите, слеед като прати смс, в базата се запизва, че тои е пратил за 30 дена вип, обаче проблема е че като изпратиш и това 30 си седи и не се променя.

в таблицата където записва дните, потребителя който е станал вип, съм добавил и база която да записва и датата на изпратения смс .
 
Е значи тея шашмалогии са напълно излишни, с това поле може да си "измериш" всичко :?:
Сподели само в какъв формат го записваш :?:
 
SELECT
DATEDIFF(DATE_ADD(data,INTERVAL 30 DAY),CURDATE()) AS remain
FROM
table
Ако резултата ти е отрицателно число, значи му е свършил випа, ако е положително - ще ти изведе колко дни ти остават :?:
По принцип, като записваш дата по този начин, нормално е полето да е тип DATE, но мисля че и с VARCHAR,CHAR не би трябвало да прави проблем.
 
Replace каза:
SELECT
DATEDIFF(DATE_ADD(data,INTERVAL 30 DAY),CURDATE()) AS remain
FROM
table
Ако резултата ти е отрицателно число, значи му е свършил випа, ако е положително - ще ти изведе колко дни ти остават :?:
По принцип, като записваш дата по този начин, нормално е полето да е тип DATE, но мисля че и с VARCHAR,CHAR не би трябвало да прави проблем.

Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in /home/starsbge/public_html/vip/index.php on line 90
дена.

Код:
SELECT DATEDIFF(DATE_ADD(data,INTERVAL 30 DAY),CURDATE()) AS remain FROM vexpire WHERE userid='$urow[id]'"));
 
Боцни заявката в phpMyAdmin и виж дали там ще ти изкара нещо ...
Иначе, това би трябвало да работи
$query = mysql_query("SELECT DATEDIFF(DATE_ADD(days,INTERVAL 30 DAY),CURDATE()) AS remain FROM vexpire WHERE userid='$urow[id]'")or die(mysql_error());
echo "Вашият VIP изтича след ".mysql_result($query,0,0)." дена.";
:idea:
 
Сега ми щукна още една идея:

Код:
$dnes = date("Y-m-d");
$query_banner = mysql_query("SELECT * FROM `vexpire` WHERE userid='$urow[id]' AND days_start<='$dnes' AND days_end>='$dnes' ORDER BY id DESC LIMIT 0,1") or die (mysql_error());

Записваш days_start - кога е получен В.И.П. и кога свършва тоест добавяш му 30 дни след, което с горната заявка си изкарваш резултата.

Но, ако трябва да се избира между този и примера на @Replace, неговия е по-добър. :?:
 

Back
Горе