Topic: Php - Mysql

Sveiki, kaip padaryti jog php failas prisijungtų prie mysql, ir tikrintų kiekvieną eilutę, jei kurioj nors eilutėj expire_date < NOW(), tada sth parametrą toj eilutėj pakeisti į 0...

Re: Php - Mysql

čia gal susiję: http://www.mysql.lt/forumas/viewtopic.php?id=1568

šiaip ko tu konkrečiai nemoki:
a) prisijungti prie DB;
b) "tikrinti visas eilutes";
c) atlikti duomenų atnaujinimą (UPDATE);
d) visi išvadinti variantai (-;

3 (edited by addinol 2011-01-14 17:55:19)

Re: Php - Mysql

B. Aš buvau padaręs pagal neto pamoką, nu ten žodžiu tie pagrindiniai dalykai buvo parašyta, tai tikrino tik 1 viršutinę eilutę...

Ir turbūt ir UPDATE Nemokėčiau padaryti pagal tą visų tikrinimą...

čia biškį kitaip padariau su kaikieno pagalba:

<?php
$link = mysql_connect("host", "user", "password");
if (!$link)
{
    die("Could not connect: ".mysql_error());
}
else
{
    $db_selected = mysql_select_db('database', $link);
    if (!$db_selected)
    {
        die("Can't use database: ".mysql_error());
    }
    else
    {
        $sql="UPDATE table SET sth='0' WHERE expire_date < NOW()";
        $query=mysql_query($sql) or die(mysql_error());
        printf("Records updated: %d", mysql_affected_rows());
    }
}
?>

+ aš nebuvau padaręs su errorais, būtų pas mane blogai veikę ;D

Beje dar vienas klausimas dėl pasitikslinimo, ar expire_date gerai gaunu:

expire_date=DATA_ADD(NOW(), INTERVAL 7 DAY)

Re: Php - Mysql

Dabar ką čia parašei atrodo logiška ir turėtų veikti, nebent gauni kažkokių klaidų pranešimų ir yra smulkių sintaksės ar logikos klaidų. Bet principe viskas ok. šiuo atveju UPDATE tikrins visos lentelės įrašus, ir tie, kurie atitiks sąlygą bus atnaujinti.

Re: Php - Mysql

Ok, o dar dėl to expire_date, nežinau kaip tą DATA_ADD naudoti, bet iš paaiškinimų supratau jog taip ?

Re: Php - Mysql

Galiu išduoti paslaptį - kaip veikia visokios sistemos būna parašyta dokumentacijoje (-;

Konkreti funkcija: http://dev.mysql.com/doc/refman/5.5/en/ … n_date-add

Re: Php - Mysql

Ar geriau naudoti NOW() funkciją, ar time() kuris saugoja laiką unix'u... ir būtų kažkas tokio:

$laikas = time() + 2592000;

UPDATE lala SET expire_date='".$laikas."'

Re: Php - Mysql

Tai nėra geriau. Problema kils tada kai reikės kapstytis duomenų bazėje ir ko nors ieškoti. Timestamp nėra labai "human-readable" :)

MongoDB Certified Developer
MongoDB Certified DBA
Zend Certified Engineer

Re: Php - Mysql

O man ir nereiks iš tikro daryti, bet unix'us nete paversti galima į datą... taip kad dėl šito nematau problemos :)

10 (edited by zygis 2011-01-16 12:48:54)

Re: Php - Mysql

Na atėjus problemai prisiminsi šį postą ir toliau naudosi stulpelių tipus pagal paskirtį :)
juolab konversijas gali atlikti ir su php http://php.net/manual/en/function.strtotime.php

MongoDB Certified Developer
MongoDB Certified DBA
Zend Certified Engineer