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...
PHP ir MySQL programavimas, SQL užklausos, duomenų bazės, PHP scriptai, pagalba, diskusijos, pamokos ir straipsniai.
You are not logged in. Please login or register.
PHP ir MySQL → PHP → 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...
č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 (-;
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)
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.
Ok, o dar dėl to expire_date, nežinau kaip tą DATA_ADD naudoti, bet iš paaiškinimų supratau jog taip ?
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
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."'
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" :)
O man ir nereiks iš tikro daryti, bet unix'us nete paversti galima į datą... taip kad dėl šito nematau problemos :)
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
PHP ir MySQL → PHP → Php - Mysql
Powered by PunBB, supported by Informer Technologies, Inc.