Topic: PHP, SQL, dienu pridejimas

Sveiki. Buciau labai dekingas kad padetumete, nes baigiu nusikamuoti .. laugh.gif Vis bandau ir bandau bet nesigauna sad.gif

$dbr = date("Y-m-d");

    $sql = "SELECT trinti FROM lentele WHERE useris = jonas;
    $query = mysql_query($sql) or die(mysql_error());
    $row = mysql_fetch_assoc($query);
    
    $laikas = $row['trinti'];
    

$iki = $laikas + 30;  // Bandau prideti 30 dienu ( ir kitu budu bandes) nesigauna;[

$result = @mysql_query("UPDATE lentele SET laikas = '$dbr',trinti = '$iki'  WHERE useris=jonas);

Noriu kad prie esamos SQL laukelyje esancios datos (formatas YYYY/MM/DD) pridetu tam tikra dienu skiaciu (pvz.: 30d.)

Re: PHP, SQL, dienu pridejimas

Kam taip sudėtingai? Užtenka nueiti į MySQL dokumentaciją ir paskaityti apie funkcijas skirtas darbui su data/laiku. Ten tikrai yra funkcija, kuri prie norimos datos leis pridėti norimą kiekį dienų (-;

Tada užteks tik vienos užklausos: UPDATE ... SET ... WHERE ...

Taip pat turi suprasti, kad datose laiko pridėjimas nėra paprasta aritmetinė operacija, kaip matematikoje "+ 30" ir viskas. Datose reikia įvertinti ar persipildė mėnesis, metai ir t.t. ir pan. Todėl tiesiog pasinauok dokumentacija (-;

Re: PHP, SQL, dienu pridejimas

Taip suprantu, kad nera paprasta irasyti 30 , is dalies cia kaip avyzdys, nes daug ka isbandziau ir niekas neveike, tai tiesiog prasau jusu, ar kas nors galetu pataisyti shi koda? ;]

Re: PHP, SQL, dienu pridejimas

Tai tau aš jau parašiau, kur rasti tinkamą funkcija: http://dev.mysql.com/doc/refman/5.4/en/ … n_date-add

Visą kodą turėsi išmesti, pasilikti tik dvi eilutes (-;

5 (edited by 3peris 2009-12-14 17:36:01)

Re: PHP, SQL, dienu pridejimas

amm, o tai jai istrinsiu, tai kaip man istraukti is SQL esama data? Nes po to prie jos noriu akd prideti 30d.
bandziau dbr:

DATE_ADD( $laikas , INTERVAL 31 DAY);

Bet nieko ;/

Gal ir kvailus klausimus uzduotu, nes nlb ka ismanau apie programavima, tiesiog lb va prireike ;]

Re: PHP, SQL, dienu pridejimas

Tau reikalinga i6 PHP vykdyti užklausą duomenų bazėje, panašiai, kaip darei, bet tik vieną. SELECT nereikalinga, reikalinga tik UPDATE užklausa, kur tu iš karto gali atnaujinti esamo stulpelio turinį pridėdamas norimą laiko intervalą (-; Nesakau gatavo atsakymo, nes ne toks mano tikslas ir šio forumo aplamai. Tu arba mokiniesi arba moki kažkam pinigus už gatavus sprendimus (-;

Re: PHP, SQL, dienu pridejimas

Na as su UPDATE moku kad prideti 30 d. ar kiek nori, bet tai tik iseina 1 kart, o reikia kad kiekviena kart panaudojus scripta vis po 30d. didetu ta data, va shito tai nzn.

UPDATE lentele SET laikas = '$dbr',laikas_trinti = DATE_ADD(CURDATE(), INTERVAL 31 DAY)  WHERE user_email=jonas);

Tai shis Update atnaujinta nuo dabartinio laiko + 31 d., panaudojus vel, data lieka ta pati ir nedideja. Nzn kuria funkcija naudoti ;/

Re: PHP, SQL, dienu pridejimas

a) kodėl naudoji tą kintamąjį $dbr gali naudoti MySQL funckiją NOW().
b) taip suprantu tau reikia pridėti laiką ne prie esamo laiko, o prie to, kuris yra stulpelyje laikas;

Re: PHP, SQL, dienu pridejimas

a) nzn siaip ;D Seniau naudojau taip, bet testuodamas ivariai kaskaip palikau taip ;]
b) butent ;] Gal biski ne taip is pradziu paaiskinau :)

Re: PHP, SQL, dienu pridejimas

3peris wrote:

a) nzn siaip ;D Seniau naudojau taip, bet testuodamas ivariai kaskaip palikau taip ;]

Tai pakeisk į NOW() ir nereikės perdavinėti jokio kintamojo iš PHP;

3peris wrote:

b) butent ;] Gal biski ne taip is pradziu paaiskinau :)

Tai taip ir padaryk, nes pas tave dabr stulpeliui laikas suteikiama dabartinio laiko reikšmė, o stulpeliui laikas_trinti suteikiama dabartinio laiko (pabrėžiu: ne tai, kas yra stulpelyje laikas) ir +3x dienų reikšmė.

Re: PHP, SQL, dienu pridejimas

Visas scriptas man tinka tik del to "laikas trinti", nzn kaip man padaryti kad atnaujintu (pridetu) laika prie stulpelyje esancio - 'laikas_trinti' ... Man tik to ir tereikia

Re: PHP, SQL, dienu pridejimas

3peris wrote:

Visas scriptas man tinka tik del to "laikas trinti", nzn kaip man padaryti kad atnaujintu (pridetu) laika prie stulpelyje esancio - 'laikas_trinti' ... Man tik to ir tereikia

Tai ir pridėk prie stulpelyje laikas_trinti esančios reikįmes, o ne prie to prie ko dabar pridedi (-;

Re: PHP, SQL, dienu pridejimas

Tai va, o ka prideti? ten kur "trinti " ir "laikas_trinti" tas pats as pradziai pakeiciau pavadinimus...
Tai gali pasiulyti koki koda naudoti kad pridetu prie esamo stulepyje laiko pridetu dar laiko (dienu).
(jai gali prie to pirmo kodo pridek/pataisyk kaska kad veiktu, jai zn) ;]

Re: PHP, SQL, dienu pridejimas

Ką pridėti tu jau pats parašęs esi su funkcija DATE_ADD(), tik jos parametras pirmas turi būti ne dabartinis laikas, o tai kas yra stulpelyje laikas_trinti.

Re: PHP, SQL, dienu pridejimas

Tai shis kodas tinktu, kad prideti prie stulpelyje esancio laiko?

    $sql = "SELECT laikas_trinti FROM lentele WHERE user_email = jonas;
    $query = mysql_query($sql) or die(mysql_error());
    $row = mysql_fetch_assoc($query);
    
    $laikas = $row['laikas_trinti'];
    
$iki = $laikas + DATE_ADD(CURDATE(), INTERVAL 31 DAY);

Ar ne? Nes as nzn kaip prideti. Be to yg meginau taip tai lyg neveike..

16 (edited by minde 2009-12-15 16:28:25)

Re: PHP, SQL, dienu pridejimas

Neatidžiai skaitai, kas tau rašoma, tau turi užtekti:

$sql = "
   UPDATE lentele
   SET laikas_trinti = DATE_ADD(laikas_trinti, INTERVAL 31 DAY),
      laikas = NOW()
   WHERE user_email = jonas";
$query = mysql_query($sql) or die(mysql_error());

Ar pan.

Re: PHP, SQL, dienu pridejimas

Shitaip as ir pasidares. man taip netinka nes atnaujina 1 karta data, iskart prideda data su + dienu. O man reikia kad, na pvz.:
lenteleje "laikas_trinti" data yra  2009.12.01, panaudojus shi scripta pasidarytu 2010.01.01 , vel panaudojus dar pridetu (2010.02.01) ir t.t. O shitas dabartinis kur parasei jis visada ta pacia data issaugos (aisq priklauso nuo datos kada ta scripta naudosi, pvz. : shi skripta siandien naudociau ir visada "Update" darytu lenteleje "2010.01.15" , ryt panaudociau scripta data lenteleje butu tada "2010.01.16") ..

Re: PHP, SQL, dienu pridejimas

Pataisiau vieną laukelį (-;

Re: PHP, SQL, dienu pridejimas

Va cia kitas reikalas, veikia. Aciu tau labai. O cia rimtai paprastas sprendimas, bet kai neismanai tai sunku susigaudyti. Na dbr zinosiu ;]
Dar karta  Aciu.