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 Datediff i MySQL dök väl upp i v 4.1. I tidigare versioner kan du kika på funktionen subtime().
mvh
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 Den kommer alltid att ge fel. Du kan inte ange where för insert.
@ndersMedlem sedan juni 200032 969 inlägg INSERT skapar nya poster.
Du vill nog göra en UPDATE?
@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 Det borde fungera för ditt ändamål. Gör en select med samma villkor, så ser du. :)
mvh
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?
Nån som känner till en sån funktion?
LarsGMedlem sedan dec. 200012 464 inlägg Varför kan du inte uppdatera kolumnen samtidigt som du uppdaterar inlägget?
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 Vad är det som inte fungerar? Förresten, skall det inte vara:
DATE_SUB(now(),INTERVAL 5 [b]MINUTE[/b])
?
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 Vad är postdate för datatyp?
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?