PHP скрипт проблем

bganonymous

Registered
Имам следния PHP скрипт, но ми се появява грешка: "Parse error: syntax error, unexpected 'else' (T_ELSE) in...". :( Знам какво означава грешката, но не знам къде бъркам в PHP кода:
Код:
<?php
if(isset($_POST['submit'])) {
$my_username = $urow['username'];
$my_id = $urow['id'];
$my_points = $urow['points'];
$time_now = time();
$rand_points = rand(1, 10);
$new_points = $my_points + $rand_points;
$random_points_sql = mysql_query("SELECT * FROM `random_points` WHERE username = '$my_username', user_id = '$my_id'");
while($rndmpnts = mysql_fetch_array($random_points_sql)) {
$calculate = $rndmpnts['time_last'] + $time_now;
if ($calculate > $time_now) { echo "<div class='alert-box error'><span>Грешка:</span> Може да теглите случайни точки ...!</div>"; }
else {
mysql_query("UPDATE `users` SET points = '$new_points' WHERE username = '$my_username', user_id = '$my_id'");
mysql_query("UPDATE `random_points` SET `time_last` = '$time_now' WHERE `username` = '$my_username', `user_id` = '$my_id'");
}
}
else {
mysql_query("UPDATE `users` SET points = '$new_points' WHERE `username` = '$my_username', `user_id` = '$my_id'");
mysql_query("INSERT into `random_points`(`username`, `user_id`, `time_last`, `points_last`) VALUES ('$my_username', '$my_id', '$time_now', '$rand_points')");
}
}
?>
 
Доколкото виждам имаш един IF с два ELSЕ ...
Така няма да стане трябва да е
Код:
if ( условие ) {
    // правиш нещо
} elseif ( условие ) {
    // правиш друго нещо
} else {
    // трето нещо
}
 
Ако си подреждаше кода нямаше да имаш такъв проблем.

PHP:
if(isset($_POST['submit'])) {
	$my_username = $urow['username'];
	$my_id = $urow['id'];
	$my_points = $urow['points'];
	$time_now = time();
	$rand_points = rand(1, 10);
	$new_points = $my_points + $rand_points;
	$random_points_sql = mysql_query("SELECT * FROM `random_points` WHERE username = '$my_username', user_id = '$my_id'");

	while($rndmpnts = mysql_fetch_array($random_points_sql)) {
		$calculate = $rndmpnts['time_last'] + $time_now;
		
		if ($calculate > $time_now) { 
			echo "<div class='alert-box error'><span>Грешка:</span> Може да теглите случайни точки ...!</div>"; 
		}
		else {
			mysql_query("UPDATE `users` SET points = '$new_points' WHERE username = '$my_username', user_id = '$my_id'");
			mysql_query("UPDATE `random_points` SET `time_last` = '$time_now' WHERE `username` = '$my_username', `user_id` = '$my_id'");
		}
	}
	else {
		mysql_query("UPDATE `users` SET points = '$new_points' WHERE `username` = '$my_username', `user_id` = '$my_id'");
		mysql_query("INSERT into `random_points`(`username`, `user_id`, `time_last`, `points_last`) VALUES ('$my_username', '$my_id', '$time_now', '$rand_points')");
	}
}

Мисля, че така можеш лесно да си намериш грешката.
 
Както казах не можеш да напишеш if ... else .. else ... втория else трябва да е elseif(условие). В случая ти имаш ако $calculate > $time_now -> грешка. Значи за elseif може да сложиш условие, че $calculate < $time_now -> ъпдейт, а ако и двете фейлнат последния else. Тествай го така.
Само един въпрос: Има ли вариант $calculate = $time_now и ако да, какво ще се случи тогава?

Код:
<?php
if(isset($_POST['submit'])) {
$my_username = $urow['username'];
$my_id = $urow['id'];
$my_points = $urow['points'];
$time_now = time();
$rand_points = rand(1, 10);
$new_points = $my_points + $rand_points;
$random_points_sql = mysql_query("SELECT * FROM `random_points` WHERE username = '$my_username', user_id = '$my_id'");

    while($rndmpnts = mysql_fetch_array($random_points_sql)) {
        $calculate = $rndmpnts['time_last'] + $time_now;
        if ($calculate > $time_now) {
            echo "<div class='alert-box error'><span>Грешка:</span> Може да теглите случайни точки ...!</div>";
        }
        else if ($calculate < $time_now){
            mysql_query("UPDATE `users` SET points = '$new_points' WHERE username = '$my_username', user_id = '$my_id'");
            mysql_query("UPDATE `random_points` SET `time_last` = '$time_now' WHERE `username` = '$my_username', `user_id` = '$my_id'");
        }
        else {
                mysql_query("UPDATE `users` SET points = '$new_points' WHERE `username` = '$my_username', `user_id` = '$my_id'");
                mysql_query("INSERT into `random_points`(`username`, `user_id`, `time_last`, `points_last`) VALUES ('$my_username', '$my_id', '$time_now', '$rand_points')");
        }
    }
}
Моля да ме поправи някой ако греша.
 

Back
Горе