webForumDet fria alternativet

Byta användarnamn en gång på 3 veckor

PHP

8 svar · 392 visningar · startad av Melea

Medlem sedan juli 20033 147 inlägg
Frågan#1

Hejsan wF!

Har ett litet problem där man ska kunna byta användarnamn en gång på 3 veckor. Alltså en sorts datediff sats som jämför datumet i databasen, alltså det datumet man ändrade användarnamn och dagens datum. Några förslag på hur detta ska lösas? :)

Tack på förhand.

Medlem sedan mars 20007 896 inlägg
#2

Gör det direkt i en SQL-fråga. Jag gissar på att du använder MySQL. http://www.mysql.com/doc/en/Date_calculations.html

Medlem sedan juli 20033 147 inlägg
#3

Hm, skulle man inte kunna lösa det på något sånt här sätt?

$datediff = date("Y-m-d H:i:s", date("U") - 20*60);

$SQL = mysql_query("SELECT * FROM members WHERE username_edit < '$datediff'") or die (mysql_error());
$objRS = mysql_fetch_array($SQL);

Fast detta markerar ju bara användarnamn som ändrade användarnamnet för 20 minuter sen, hur ändrar jag till 21 dagar?

Mvh

Medlem sedan sep. 2001788 inlägg
#4
$datediff = date("Y-m-d H:i:s", mktime(date("H"), date("i"), date("s"), date("m"), date("d")-21, date("Y"));

Otestad kod som borde fungera.?

Medlem sedan juli 20033 147 inlägg
#5

Nja funkar inte riktigt... ändrade den till

$datediff = date("Y-m-d",mktime(0,0,0,date("m"),date("d")-21,date("Y")));

Men får ändå inte riktigt koll på det...

Om jag har en kolumn i databasen som är date och NULL om den är tom (tom är den om inte användarn ändrat användarnamn ngn gång).

Hur skriver jag nu If satsen, om jag bara vill visa formuläret där man byter användarnamn om den specifika användaren inte bytt användarnamn de senaste 3 veckorna? (mkt användarnamn :))

Tack på förhand

Mvh

Medlem sedan juli 20033 147 inlägg
#6

Jag löste det med följande:

$datediff1 = date("m",mktime(0,0,0,date("n"),date("j")-21,date("Y")));

$datediff2 = substr($rs['username_edit'],5,2);

	if($datediff1 >= $datediff2) {
	
		echo "Du kan nu ändra ditt användarnamn";
	
	} else {

		echo "Icke sa nicke!";

	}
Medlem sedan juli 20033 147 inlägg
#7

Tänkte att det var onödigt och skapa en ny topic så jag fortsätter här.

Glöm koden ovanför, den funkade uppenbarligen inte.

Såhär ser den nuvarande koden ut iallafall

$datum1 = Dagens datum - 21 dagar
$datum2 = Datumet i databasen sparat som DATETIME

    if($datum1 >= $datum2) {
    
        echo "Du kan nu ändra ditt användarnamn";
    
    } else {

        echo "Icke sa nicke!";

    }

Jag skrev date("Y-m-d H:i:s", date("j") - 21); men det funkade inge vidare. Hur skriver man? Kan någon förklara hur PHP:s datumfunktion funkar?
Aldrig fått pejl på det.

Medlem sedan dec. 2003153 inlägg
#8

date("Y-m-d H:i:s", date("j") - 21)
Detta blir ju fel eftersom date("j") skulle idag validera till 21. Alltså, 21 - 21 = 0 som skulle ge detta:
date ( $format , 0)

Gör såhär:
$datum1 = Nu - 21 dagar
$datum2 = Från databasen. Datum för senaste ändringen. Hämta ut detta med UNIX_TIMESTAMP(). btw, varför NULL som default? Om du sätter "join date" istället för NULL kan du ju alltid kolla datum...

$secondsPerDay = (60 * 60) * 24;
$days = 21;
$datum1 = time() - ($secondsPerDay * $days);

if ($datum1 > $datum2) {
echo "Byt!";
}else{
echo "Byt inte!";
}

Medlem sedan juli 20033 147 inlägg
#9

Härligt, tack så mycket!

264 ms totalt · 4 externa anrop · v20260731065814-full.a51de22e
120 ms — deklarationer (db)
0 ms — hämta statistik (cache)
137 ms — hämta tråd, inlägg och bilagor (db)
120 ms — ändringar (db)