Обработка результатов запроса к БД

Форум для тех кто начинает осваивать язык php.
sabadon
Сообщения: 3

Обработка результатов запроса к БД

Сообщение sabadon » Чт дек 24, 2015 10:59 am

Беру код примера

Код: Выделить всё

$query ="SELECT * FROM ======"
$parsed oci_parse($db_conn$query);
oci_execute($parsed);
$nrows oci_fetch_all($parsed$results);
for (
$i=0$i<$nrows;$i++)
{
 if (
$results['NAME'][$i] == 'ГРП')
 {
  
$r_g round($results['VALUE3'][$i]+$results['VALUE6'][$i]+$results['VALUE9'][$i],0);
 }
}
 

Выполняется и обрабатывается.
Переделываю немного:

Код: Выделить всё

$query ="SELECT * FROM ======";
$parsed oci_parse($db_conn$query);
oci_execute($parsed);
$nrows oci_fetch_all($parsed$results);
for (
$i=0$i<$nrows;$i++)
{
 if (
win_to_utf($results['NAME'][$i]) == 'ГРП')
 {
  
$r_g round(($results['VALUE3'][$i]+$results['VALUE6'][$i]+$results['VALUE9'][$i])/1000,1);
 }
}
 

В моем случае (случай 2) не выводится никаких значений, хотя база данных одна и данные присутствуют.
В чем может быть причина отсутствия значений?
Реклама
Аватара пользователя
Slash
Администратор
Сообщения: 2031
Поблагодарили: 62 раза

Re: Обработка результатов запроса к БД

Сообщение Slash » Чт дек 24, 2015 11:55 am

Изменения заметил только в девятой строчке:

Код: Выделить всё

$r_g round(($results['VALUE3'][$i]+$results['VALUE6'][$i]+$results['VALUE9'][$i])/1000,1); 

Тут прибавляете три переменных (очевидно числа), затем разделяете на тысячу и всё это округлить?
Будет понятнее и проще помочь если расскажите, что вообще должно получиться на выходе?
Может, ещё что то изменили, а я просто не увидел?
cefp
Сообщения: 333
Поблагодарили: 3 раза

Re: Обработка результатов запроса к БД

Сообщение cefp » Чт дек 24, 2015 3:27 pm

Да, округлить до одного знака после запятой. Было без знаков после запятой. Можно проверить тип переменной $r_g - не задавалось ли оно как целое.

В 7 строке добавлена перекодировка в Utf. Попробуйте менять коды с оставлением 7 и 9 строки неизменными переменно. Если ошибка только из-за 9 строки, то можно попробовать добавить строку, задающую тип переменной или сделать округление до целых.

Чтобы видеть отличия в коде, удобно использовать плагины сравнения кодов. В np++ есть такой.

Добавлено спустя 9 минут 13 секунд:
sabadon писал(а):В моем случае (случай 2) не выводится никаких значений, хотя база данных одна и данные присутствуют.
В чем может быть причина отсутствия значений?

Может быть выводимое значение равно нулю, все-таки происходит деление на 1000 и округляется. Если результат меньше 0.05, то после округления до одного знака после запятой будет ноль. Можно посмотреть какие значения берутся из базы данных. Или посмотреть, результаты выдаваемые первым вариантом кода. Если в первом варианте получаются значения менее 50, то во втором они округляются до нуля. Если в первом варианте значения более 50, то они округляются до ненулевых. Это если значения положительные, нужно еще учитывать их знаки.
d o h o d - s - n u l y a .ru - идеи бизнеса.
sabadon
Сообщения: 3

Re: Обработка результатов запроса к БД

Сообщение sabadon » Чт дек 24, 2015 4:11 pm

Благодарю за ответы, товарищи. Дело оказалось в кодировке php-файла. Новый редактор сохранял его в ANCII кодировке. А данные php получал в кодировке UTF. Соответственно, русские символы в ANCII сравнивались с символами UTF, условия не выполнялось и результата не было. Даже "0" не выдавало. Просто не было результата. Пересохранил файл в нужной кодировке, все как по маслу пошло.

Вернуться в «PHP»

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и 4 гостя