Avatar billede Nicklas_J Nybegynder
31. januar 2010 - 13:26 Der er 9 kommentarer og
1 løsning

1 indlæg pr. 2 minut

Hej.
Som overskriften lyder så har jeg prøvet uden held at lave et "1 indlæg pr 2 minut". Altså at man kun kan poste 1 indlæg hver anden minut, i samme tråd(fID)
<?php
Her er hvad jeg har lavet:
$oldtimecheck = mysql_query("SELECT dato FROM member_threads WHERE navn = '".mysql_real_escape_string($pusername)."' AND fID = '".$fID."'") or die(mysql_error());
        $oldtimec = mysql_fetch_array($oldtimecheck);
        $oldtime = $oldtimec["dato"];
        $timenow = date('d/m/Y G:i:s');
if($oldtime < ($timenow - 120)) {
echo "Vent venligst 2 minutter, eller redigér dit seneste";
}
?>

Hvad har jeg gjort forkert? På forhånd tak!
Avatar billede repox Seniormester
31. januar 2010 - 13:40 #1
Der er sikkert flere aspekter i det; du har garanteret anvendt dit eget dato-format i databasen?

Udover det, så skal vi lige kigge lidt på din logik; tænk lige over det her regnestykke:
23/12/2010 23:59:59 - 120
Er det er regnestykke der giver meget mening?
Avatar billede Slettet bruger
31. januar 2010 - 13:46 #2
Afhængigt af, hvordan din database ser ud, kan det gøres på flere forskellige måder. Det letteste er nok at opbevare et timestamp i et int-felt i databasen, og så bruge en query som denne:

mysql_query("SELECT dato FROM member_threads WHERE navn = '".mysql_real_escape_string($pusername)."' AND fID = '".$fID."' AND dato > " . time() - 120)


Så er det bare at tjekke, om der kom nogle resultater, og så fortælle brugeren, at han/hun altså lige må vente lidt.
Avatar billede Nicklas_J Nybegynder
31. januar 2010 - 13:47 #3
Nej, det er så rigtigt!
Og ja, dato formatet er som du skrev i 23/12/2010 23:59:5.
Hvordan skal dette gøres?
Avatar billede Slettet bruger
31. januar 2010 - 14:00 #4
#3, simpelt nok, ændr datoformatet til et timestamp (int) eller en MySQl dato (date). Så behøver du ikke alt for meget PHP-kode. (Selvom det selvfølgelig også kan lavet med dit eget format.)
Avatar billede repox Seniormester
31. januar 2010 - 14:04 #5
Et anvendeligt dato format angives således:


$realDate = date("Y-m-d H:i:s");



Nå du gerne vil anvende det format til noget, kan du konvertere det til et UNIX timestamp - som er en standard der angiver antallet af sekunder siden UNIX epoken - til at få det format du som du har behov for gennem funktionen strtotime().



$realDate = date("Y-m-d H:i:s"); // datostrengen i det angivede format er sikkert hentet fra databasen

echo date("d/m/Y G:i:s", strtotime($realDate));



Og da strtotime() fint kan konvertere formatet Y-m-d H:i:s til sekunder, så giver også mening at du kan anvende tallet 120 til at angive de to minutter:



$realDate = $dato_fra_databasen; //Eksempelvis fra brugerens sidste indlæg

//time() angiver et UNIX timestamp for tiden lige nu.
if( (strtotime($realDate) + 120) > time() )
{
  echo "Vent venligst 2 minutter, eller redigér dit seneste";
}




Håber det gav mening.
Avatar billede Nicklas_J Nybegynder
31. januar 2010 - 17:57 #6
Hej.
Tak for respons.
Betyder det så jeg skal bruge H:i:s istedet for G:i:s?
Avatar billede repox Seniormester
31. januar 2010 - 18:14 #7
Hvis du skal følge standarden, så ja.
Avatar billede Nicklas_J Nybegynder
31. januar 2010 - 18:29 #8
Nu virker det! Smid et svar.

Og hvis du vil, må du meget gerne fortælle mig, hvorfor man skulle bruge H:i:s, fremfor G:i:s for at få det til at virke.

Tak!
Avatar billede repox Seniormester
31. januar 2010 - 18:41 #9
Det er faktisk ret simpelt.
G giver dig et 24 timers timetal uden et foranstillet 0.
Men H foranstiller et 0, hvis du er i timerne 0-9.

Og da standarden formes som:
ÅÅÅÅ-MM-DD TT:MM:SS

Så hvis du angiver det med G, ville formatet være fejlbehæftet:
2010-23-12 7:59:59

Og med H ville det så være som krævet:
2010-23-12 07:59:59
Avatar billede Nicklas_J Nybegynder
31. januar 2010 - 18:47 #10
Tak!! Perfekt forklaring!
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester