Jag har följande kod för att ändra antal gb på en användares profil + spara en logg om detta.
Men det sparas en logg fast att jag INTE har ändrat något. :q
Hur löser jag det, så att det endast sparas en logg när jag ändrar fältet ($_POST[upp]), och INTE annars?
:r
if ((isset($_POST['upp'])) && (($upp = $_POST['upp']) != ($curupp = $user['uploaded'])))
{
$modcomment = gmdate("Y-m-d") . " - Uppl. ändrat från '" .round($curupp/1073741824, 2). "' GB till '$upp' GB av " . $CURUSER['username'] . ".\n" . $modcomment;
$upp2 = $upp*1073741824;
$updateset[] = "uploaded = " . sqlesc($upp2);
}
Ingen som vet? :(
EDIT:
if ((isset($_POST['upp'])) && (($upp = $_POST['upp']) != ($curupp = $user['uploaded'])))
..betyder väl att koden ska köras om $_POST[upp] inte är likamed (=) $user[uploaded]?
Tänker jag rätt?
Om ja, så verkar det inte fungera riktigt.
Databasen uppdateras ändå fast att jag INTE har ändrat $_POST[upp].
aasahMedlem sedan mars 20034 471 inlägg Hmm testa två saker:
- Jobba inte med tilldelning och jämförelse i samma uttryck:
if (isset($_POST['upp']) && $_POST['upp'] != $user['uploaded']) { //Jämför
$upp = $_POST['upp']; //Tilldela
$curupp = $user['uploaded']; //Tilldela
//osv...
}
Annars vet jag inte riktigt vad det är för värden du jämför. Ev skickar tilldelningen i sig ut ett värde för att indikera att det gick tex, och i så fall jämför du inte det du hade tänkt dig.
- Undersök olikhet med !== inte !=.
'' != 0 är falskt, medan '' !== 0 är sant eftersom den senare även jämför typer.