Kom ihåg mig?
Home Menu

Menu


Uppdatera tid i mysql + php

Ämnesverktyg Visningsalternativ
Oläst 2008-01-02, 02:31 #1
PaLL3 PaLL3 är inte uppkopplad
Nykomling
 
Reg.datum: Jan 2008
Inlägg: 25
PaLL3 PaLL3 är inte uppkopplad
Nykomling
 
Reg.datum: Jan 2008
Inlägg: 25
Hej,
Jag har fått en del strul med ett script som som försöker få att fungera som jag vill,
inte det lättaste när man inte är så bra på att scripta..

Detta är vad jag har just nu:
Kod:
$query="SELECT expire FROM min_tabell WHERE user = '$infos[1]'";
$result=mysql_query($query);
while($row=mysql_fetch_array($result))
{

if (time()>$row['expire'])
 {
 $query = mysql_query("UPDATE min_tabell SET expire = NOW() + INTERVAL 31 DAY WHERE user = '$infos[1]'") or die(mysql_error());
 }
elseif (time()<$row['expire'])
 {
 $query = mysql_query("UPDATE min_tabell SET expire = expire + INTERVAL 31 DAY WHERE user = '$infos[1]'") or die(mysql_error());
 }
}
Jag försöker alltså uppdatera "expire" i en tabell med hjälp av if och elseif. Mitt stora problem är då att jag vet inte riktigt hur jag ska få till det hela. Som det är nu kör den bara den första queryn oavsett vilka kriterier som är uppfyllda. Och om tiden just nu är mindre än vad expire är så ska den bara lägga till ytterligare 31 dagar + den befintliga tiden.
Och jag vet att mina kodsnuttar säkert ser för j**liga ut, men det är därför jag vänder mig hit för assistans.

Någon som kan komma med förslag är mycket uppskattat.

Tack på förhand
PaLL3
PaLL3 är inte uppkopplad   Svara med citatSvara med citat
Oläst 2008-01-02, 11:42 #2
Magnus_A Magnus_A är inte uppkopplad
Klarade millennium-buggen
 
Reg.datum: May 2006
Inlägg: 2 604
Magnus_A Magnus_A är inte uppkopplad
Klarade millennium-buggen
 
Reg.datum: May 2006
Inlägg: 2 604
Mysqli och objektorientering är att föredra, men det kan du göra nästa gång.
Du kan använda villkor i en query om du vill. men i ditt fall så är det ännu enklare. Du vill lägga till det högsta värdet av expire+31 dagar och nu+31 dagar. Då använder du MAX(värde 1,värde2)
Vad jag inte förstår är om du vill updatera en enskild user i taget eller om det är ett led i en updatering av en större grupp. Om det bara är en i taget så räcker det med en enda fråga. Om du vill loopa dig igenom en trave användare så går det också, även om man kan använda subquerys för att kringgå förbudet mot att söka och uppdatera samtidigt i samma tabell.
Sen bör du använda date_add.
Så här blir din fråga:
"Update min_tabell SET expire=max( date_add(expire, interval 31 day) , date_add(now(),interval 31 day)) WHERE user = '$infos[1]' "
eller " interval 1 month " om du vill lägga till exakt en månad.

mvh
(edit stavfel)
Magnus_A är inte uppkopplad   Svara med citatSvara med citat
Oläst 2008-01-02, 12:21 #3
PaLL3 PaLL3 är inte uppkopplad
Nykomling
 
Reg.datum: Jan 2008
Inlägg: 25
PaLL3 PaLL3 är inte uppkopplad
Nykomling
 
Reg.datum: Jan 2008
Inlägg: 25
Tack för ditt snabba svar, elpris..

Jag ska bara uppdatera en användare i taget. Men det verkar som om den queryn inte funkar. Inget uppdateras.. =/
Jag vill bara ha expire uppdaterat med "expire = expire + INTERVAL 1 MONTH" om datumen som redan finns i expire är mer än nu. I annat fall ska den nuvarande expire bara uppdateras med dagens datum "+ INTERVAL 1 MONTH".
*EDIT* har fått den att köras pga att jag glömde en sista ')'. doh..
Men nu får jag;
"You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ' date_add(now(), interval 31 day)) WHERE user = 'användare'' at line 1"

Mvh
PaLL3
PaLL3 är inte uppkopplad   Svara med citatSvara med citat
Oläst 2008-01-02, 13:16 #4
Magnus_A Magnus_A är inte uppkopplad
Klarade millennium-buggen
 
Reg.datum: May 2006
Inlägg: 2 604
Magnus_A Magnus_A är inte uppkopplad
Klarade millennium-buggen
 
Reg.datum: May 2006
Inlägg: 2 604
Mitt fel. pröva med GREATEST istället för MAX
Magnus_A är inte uppkopplad   Svara med citatSvara med citat
Oläst 2008-01-02, 13:21 #5
PaLL3 PaLL3 är inte uppkopplad
Nykomling
 
Reg.datum: Jan 2008
Inlägg: 25
PaLL3 PaLL3 är inte uppkopplad
Nykomling
 
Reg.datum: Jan 2008
Inlägg: 25
Hade du varit här nu skulle jag gett dig en puss....
Så nu hade du tur

MVH
PaLL3
PaLL3 är inte uppkopplad   Svara med citatSvara med citat
Svara


Aktiva användare som för närvarande tittar på det här ämnet: 1 (0 medlemmar och 1 gäster)
 

Regler för att posta
Du får inte posta nya ämnen
Du får inte posta svar
Du får inte posta bifogade filer
Du får inte redigera dina inlägg

BB-kod är
Smilies är
[IMG]-kod är
HTML-kod är av

Forumhopp


Alla tider är GMT +2. Klockan är nu 10:12.

Programvara från: vBulletin® Version 3.8.2
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Svensk översättning av: Anders Pettersson
 
Copyright © 2017