webForumDet fria alternativet

Jämföra två datum

18 svar · 517 visningar · startad av lillebror

lillebrorMedlem sedan apr. 20041 597 inlägg
#1

Hej,

Jag skulle behöva lite hjälp med att formulera en WHERE-sats.

Jag håller på och utvecklar ett eget forum. För trådar och inlägg finns det en redigeringsfunktion precis som på wF. Nu vill jag att användaren skall ha möjlighet att ändra på sitt inlägg om något blev fel, inom en 5-minutersgräns utan att det syns i tråden att den har blivit redigerad. Om denna gräns passeras kommer ett fält i tråden att få en tidsstämpel när den senast blev redigerad och detta kommer att synas i tråden.

Har sökt efter olika MySQL-funktioner men har inte lyckats hitta någon som kan passa. En funktion jag använde mig av tidigare är DATEDIFF men med den fick jag inte till det.

Det berörda fältet är "postdate" som skall jämföras med now().

Några tips?

@ndersMedlem sedan juni 200032 969 inlägg
#2

dmbs / version?

lillebrorMedlem sedan apr. 20041 597 inlägg
#3

MySQL ver. 4

@ndersMedlem sedan juni 200032 969 inlägg
#4

Datediff i MySQL dök väl upp i v 4.1. I tidigare versioner kan du kika på funktionen subtime().

mvh

lillebrorMedlem sedan apr. 20041 597 inlägg
#5

Kan detta bli rätt:

INSERT INTO tblforumthread (edit) VALUES ('$editpoststamp') WHERE DATE_SUB(now(),INTERVAL 5 MINUTES) > postdate AND threadID = $threadID;

Skriver denna sats in datumet då posten editerades om detta gjordes mer än 5 min från det att posten skapades? :)

LarsGMedlem sedan dec. 200012 464 inlägg
#6

Den kommer alltid att ge fel. Du kan inte ange where för insert.

@ndersMedlem sedan juni 200032 969 inlägg
#7

INSERT skapar nya poster.
Du vill nog göra en UPDATE?

lillebrorMedlem sedan apr. 20041 597 inlägg
#8

@nders skrev:

INSERT skapar nya poster.

Så korkad jag e :e Visst är det en UPDATE jag vill göra. Då behöver jag bara byta ut INSERT mot UPDATE? Fungerar WHERE-villkoret för mitt ändamål?

@ndersMedlem sedan juni 200032 969 inlägg
#9

Det borde fungera för ditt ändamål. Gör en select med samma villkor, så ser du. :)

mvh

lillebrorMedlem sedan apr. 20041 597 inlägg
#10

Will do :)

lillebrorMedlem sedan apr. 20041 597 inlägg
#11

Kom på nu att det inte kommer fungera att ha detta villkor i själva SQL-satsen.

Jag måste väl jämföra datumet då posten skapades med den aktuella tiden i en if-sats innan för att avgöra vilken av två olika SQL-satser som skall exekveras beroende på om villkoret är uppfyllt? Finns det något motsvarande funktion (DATE_SUB())i PHP?

lillebrorMedlem sedan apr. 20041 597 inlägg
#12

Nån som känner till en sån funktion?

LarsGMedlem sedan dec. 200012 464 inlägg
#13

Varför kan du inte uppdatera kolumnen samtidigt som du uppdaterar inlägget?

lillebrorMedlem sedan apr. 20041 597 inlägg
#14

Hmm...Jag kanske tänker fel...Hur som helst verkar inte uttrycket fungera som jag vill ha det:

DATE_SUB(now(),INTERVAL 5 MINUTES) > postdate

Villkoret jag vill åstadkomma är att när man skrivit ett inlägg och redigerar det inom 5 minuter från det att det skapades så ska inte något värde skrivas till databasen. Hur gör jag detta?

Peter SMedlem sedan dec. 20025 483 inlägg
#15

Vad är det som inte fungerar? Förresten, skall det inte vara:

DATE_SUB(now(),INTERVAL 5 [b]MINUTE[/b])

?

lillebrorMedlem sedan apr. 20041 597 inlägg
#16

Oavsett om jag använder MINUTES eller MINUTE så uppdateras fältet lastedited vilket borde innebära att villkoret är sant även fast det inte hunnit gå 5 minuter från det att inlägget skapades. Det är något knas på uttrycket....Vet inte riktigt hur jag ska få till det...:OO

Peter SMedlem sedan dec. 20025 483 inlägg
#17

Vad är postdate för datatyp?

lillebrorMedlem sedan apr. 20041 597 inlägg
#18

Peter S skrev:

Vad är postdate för datatyp?

Datetime!

lillebrorMedlem sedan apr. 20041 597 inlägg
#19

Någon som vet hur en WHERE-sats skulle kunna se ut i SQL som ger en användare 5 min "ångertid" om denne skulle ha postat fel och vill redigera. Då skall dej inte synas att inlägget är redigerat. Hur skulle koden kunna se ut för det?

135 ms totalt · 3 externa anrop · v20260731065814-full.7de19299
0 ms — hämta forumlista (cache)
0 ms — hämta statistik (cache)
132 ms — hämta tråd, inlägg och bilagor (db)