Перейти к содержимому


Отчеты из БД mssql

mssql php

Сообщений в теме: 9

#1 AssVlad

    Активный участник

  • Пользователи
  • PipPipPip
  • 65 сообщений

Отправлено 11 Январь 2013 - 14:19

Добрый день! Вопрос в составление отчетов из БД mssql (Microsoft SQL Server) ну и соответственно его вывода на экран! Начну с того, что бьюсь уже пару суток, перерыл часть интернета, но пока ответа не нашел. Хочу ради пример простой запрос и простой вывод!

1. Подготавливаю данные:
$server = '192.168.0.4';
// Connect to MSSQL
$link = mssql_connect($server, 'bla-bla', 'bla-bla');
mssql_select_db('Novateks', $link);
$sqlQuery = "SELECT * FROM dbo.ZAK_OPER";

$result = mysql_query($sqlQuery);
while ($row = mysql_fetch_array($result))
{
$lines[] = $row;
}
$smarty->assign('lines', $lines);
2. Вывожу данные:
<table><tr>
{foreach from=$lines item=data}
<td>{$data.dat}</td>
<td>{$data.all}</td>
{/foreach}
</tr></table>

3. Ошибка: Warning: mysql_fetch_array() expects parameter 1 to be resource, boolean given in /var/www/report.php(12) : eval()'d code on line 11

Связь с БД вроде есть, логин, пароль верные! (пробовал менять, выводит ошибку, то логин не такой, то БД не такая)

Может не предусмотрено в программе такие отчеты?

#2 CbCoder

    Активный участник

  • Программист ООО "КБ"
  • PipPipPip
  • 8 688 сообщений
  • Пол:Мужчина
  • Город:Казань

Отправлено 11 Январь 2013 - 14:56

Программа здесь не причем. Вы сам код некорректно составили. Функции с префиксом "mysql_" предназначены для работы с БД MySQL, а не MS SQL. У вас же только подключение выполнено верно (через mssql_connect и mssql_select_db), а далее обращение к БД идет через mysql_query и т.д.

#3 AssVlad

    Активный участник

  • Пользователи
  • PipPipPip
  • 65 сообщений

Отправлено 11 Январь 2013 - 15:17

Да я уже в шоке от своих косяков)))) Ну кто их делает у того не получается! Спасибо!
В итоге как то так получилось:
$sql = "SELECT [Novateks].[dbo].[ZAK_OPER].[DAY1] AS dat FROM [Novateks].[dbo].[ZAK_OPER]";

$sql = mssql_query($sql);
while ($row = mssql_fetch_array($sql))
{
$lines[] = $row;
}
$smarty->assign('lines', $lines);

#4 AssVlad

    Активный участник

  • Пользователи
  • PipPipPip
  • 65 сообщений

Отправлено 16 Январь 2013 - 14:49

Добрый день! В продолжении связки, прошу помочь: Делаю запрос, все выводится почти хорошо, не считая крякозябру! Как ее победить не знаю, вот и прошу помощи: база mssql в кодировке Cyrillic_General_BIN. Сайт выводит в кодировке UTF-8, меняю на cp1251 - мои данные нормально выводятся, а весь сайт в кракозябрах!

#5 CbCoder

    Активный участник

  • Программист ООО "КБ"
  • PipPipPip
  • 8 688 сообщений
  • Пол:Мужчина
  • Город:Казань

Отправлено 16 Январь 2013 - 15:02

Просмотр сообщенияAssVlad (16 Январь 2013 - 14:49) писал:

Добрый день! В продолжении связки, прошу помочь: Делаю запрос, все выводится почти хорошо, не считая крякозябру! Как ее победить не знаю, вот и прошу помощи: база mssql в кодировке Cyrillic_General_BIN. Сайт выводит в кодировке UTF-8, меняю на cp1251 - мои данные нормально выводятся, а весь сайт в кракозябрах!

Конвертировать кодировку можно через функцию iconv

#6 AssVlad

    Активный участник

  • Пользователи
  • PipPipPip
  • 65 сообщений

Отправлено 17 Январь 2013 - 13:53

Просмотр сообщенияCbCoder (16 Январь 2013 - 15:02) писал:

Конвертировать кодировку можно через функцию iconv
Спасибо! А подскажите куда вставить эту функцию????

$server = '192.168.0.4';

// Connect to MSSQL
$link = mssql_connect($server, '999', '999');
mssql_select_db('Novateks', $link);

$sql = "SELECT [Novateks].[dbo].[ZAK_HEAD].[NUM] AS nom, [Novateks].[dbo].[ZAK_HEAD].[DATA1] AS dat, [Novateks].[dbo].[ZAK_HEAD].[NAIM] AS naim, [Novateks].[dbo].[ZAK_HEAD].[KLIENT] AS klient
FROM [Novateks].[dbo].[ZAK_HEAD] INNER JOIN [Novateks].[dbo].[ZAK_OPER] ON [Novateks].[dbo].[ZAK_HEAD].[UNZ] = [Novateks].[dbo].[ZAK_OPER].[UNZ]
GROUP BY [Novateks].[dbo].[ZAK_HEAD].[NUM], [Novateks].[dbo].[ZAK_HEAD].[DATA1], [Novateks].[dbo].[ZAK_HEAD].[NAIM], [Novateks].[dbo].[ZAK_HEAD].[KLIENT]";
iconv("CP1251", "UTF-8", $sql);
$sql = mssql_query($sql);
while ($row = mssql_fetch_array($sql))
{
$lines[] = $row;
}
$smarty->assign('lines', $lines);
ниче не выходит!!!

#7 CbCoder

    Активный участник

  • Программист ООО "КБ"
  • PipPipPip
  • 8 688 сообщений
  • Пол:Мужчина
  • Город:Казань

Отправлено 17 Январь 2013 - 14:19

Зачем вы запрос то конвертируете, я не понял? Конвертировать нужно результат! Я же вам дал ссылку на документацию.

$field22_value = $row['field22'];
$field22_value_utf8 = iconv("CP1251", "UTF-8", $field22_value);


#8 AssVlad

    Активный участник

  • Пользователи
  • PipPipPip
  • 65 сообщений

Отправлено 17 Январь 2013 - 14:46

Если честно, то совсем не понял! Это в подготовке данных делать или в отображение?

#9 CbCoder

    Активный участник

  • Программист ООО "КБ"
  • PipPipPip
  • 8 688 сообщений
  • Пол:Мужчина
  • Город:Казань

Отправлено 17 Январь 2013 - 15:02

Просмотр сообщенияAssVlad (17 Январь 2013 - 14:46) писал:

Если честно, то совсем не понял!

Что конкретно непонятно? Функция преобразует значение поля из одной кодировки в другую. Это всего лишь наглядный пример, вне прямой связи с вашим кодом. В вашем случае будет примерно так:

....
$sql = mssql_query($sql);
while ($row = mssql_fetch_array($sql))
{
$line['field22'] = iconv("CP1251", "UTF-8", $row['field22']);
....
$lines[] = $line;
}
.....


Просмотр сообщенияAssVlad (17 Январь 2013 - 14:46) писал:

Это в подготовке данных делать или в отображение?

Все php-вычисления выполняются в коде подготовки данных, разумеется.

#10 bottrop

    Активный участник

  • Пользователи
  • PipPipPip
  • 153 сообщений
  • Пол:Мужчина
  • Город:Армавир

Отправлено 27 Апрель 2016 - 22:53

Просмотр сообщенияAssVlad (11 Январь 2013 - 14:19) писал:

Добрый день! Вопрос в составление отчетов из БД mssql (Microsoft SQL Server) ну и соответственно его вывода на экран! Начну с того, что бьюсь уже пару суток, перерыл часть интернета, но пока ответа не нашел. Хочу ради пример простой запрос и простой вывод! 1. Подготавливаю данные: $server = '192.168.0.4'; // Connect to MSSQL $link = mssql_connect($server, 'bla-bla', 'bla-bla'); mssql_select_db('Novateks', $link); $sqlQuery = "SELECT * FROM dbo.ZAK_OPER"; $result = mysql_query($sqlQuery); while ($row = mysql_fetch_array($result)) { $lines[] = $row; } $smarty->assign('lines', $lines); 2. Вывожу данные: {foreach from=$lines item=data} {/foreach} {$data.dat} {$data.all}
3. Ошибка: Warning: mysql_fetch_array() expects parameter 1 to be resource, boolean given in /var/www/report.php(12) : eval()'d code on line 11 Связь с БД вроде есть, логин, пароль верные! (пробовал менять, выводит ошибку, то логин не такой, то БД не такая) Может не предусмотрено в программе такие отчеты?

Как вы к MySQL подключались, подскажите?





Количество пользователей, читающих эту тему: 3

0 пользователей, 3 гостей, 0 анонимных