@sandul23

Почему не выводится текст echo?

Есть очень интересная проблема,решение к которой я подобрать, к сожалению, не смог(А,нет,есть одно,снести всё к чертям)

Есть вот такой код:
$UL = $user['level'] + 1;
$XP = $user['exp']; 
$Lvls = mysql_query('SELECT * FROM `levels` WHERE `Number` ='.$UL.';');
$Lvl = mysql_fetch_array($Lvls);
$exp_in = $Lvl['Exp'];
if($exp_in <= $XP){ 
echo('<div class="block center">Новый уровень!<br>Награда:'.$user['level'].' <img src="/images/coin.png"> </div>');
mysql_query("update `users` set `exp` = 0, `level` = `level` + 1, `coin` = `coin` + ".$user['level']." where `id` = ".$user['id']."");
}

Коротко о работе: при достижении определенной отметки опыта(вытаскивается из БД), у пользователя он обнуляется,прибавляется один к уровням,добавляется валюта. И самое главное:должна выводиться надпись об уровне. Запрос происходит,всё работает как надо,однако надпись не выводиться. Если поместить за пределы блока if,всё прекрасно работает. Если менять первое в условии,ничего не происходит. Однако если поменять значение второй переменной/заменить её например на простое число,надпись выводится. Также если ставить напрямую $user[exp],то надпись также не выводится. Я вообще не понимаю,как это может влиять на работу вывода.
  • Вопрос задан
  • 529 просмотров
Решения вопроса 1
ThunderCat
@ThunderCat Куратор тега PHP
{PHP, MySql, HTML, JS, CSS} developer
у вас там много конечно что не по уму, я так перечислю, а вы уже смотрите что делать (в идеале все исправить, конечно же).
1) mysql_query: Данный модуль устарел, начиная с версии PHP 5.5.0, и удалён в PHP 7.0.0. Используйте нормальный PDO или mysqli драйвер бд.

2) Используйте подготовленные выражения в запросах, а не дырявое решето вместо них...

3) Используйте нормальный стиль форматирования и именования переменных, читайте PSR для ознакомления с принятым форматированием кода. Все эти $XP, $exp_in, $Lvls... Кровь из глаз...

4) Сначала получайте все данные, затем выводите разметку, вставляя заранее вычисленные значения. Не делайте кашу из вычислений, запросов и вывода разметки.

5) echo не требует скобок, хотя они и не влияют на его работу.

6) Если что-то работает не так, как вы ожидаете - 99% где то в переменных не то, что вы думаете. По этому var_dump() ваш лучший друг на ближайшие 2-3 года.

var_dump([$exp_in, $XP]);
if($exp_in <= $XP){ 
var_dump(1);
...
var_dump(2);
...

Тем более работа с БД выполняется успешно
Как вы это проверяете?
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы