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

Форум для тех кто начинает осваивать язык php.
sabadon
Сообщения: 3
Зарегистрирован: Чт дек 24, 2015 10:45 am

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

Сообщение 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
Администратор
Сообщения: 2113
Зарегистрирован: Сб авг 11, 2012 7:39 am
Поблагодарили: 71 раз

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

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

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

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

$r_g = round(($results['VALUE3'][$i]+$results['VALUE6'][$i]+$results['VALUE9'][$i])/1000,1); 
Тут прибавляете три переменных (очевидно числа), затем разделяете на тысячу и всё это округлить?
Будет понятнее и проще помочь если расскажите, что вообще должно получиться на выходе?
Может, ещё что то изменили, а я просто не увидел?

cefp
Сообщения: 332
Зарегистрирован: Ср окт 17, 2012 6:49 pm
Поблагодарили: 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
Зарегистрирован: Чт дек 24, 2015 10:45 am

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

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

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

Ответить Пред. темаСлед. тема

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

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