цены в прайсе

Тема в разделе "WebAsyst", создана пользователем shadou, 30 июн 2012.

Модераторы: mdss
  1. shadou

    shadou Писатель

    Регистр.:
    19 мар 2012
    Сообщения:
    4
    Симпатии:
    0
    помогите уже пол месяца бьюсь есть модуль для вебасиста с возможность формирования прайса в xls но цены там выводятся например 27 руб а надо 27.00 как это реализовать
    вот вот файлик xls.php
    <?php
    /**
    * @name Export pricelist to Microsoft Excel [xls]
    * @version 1.0
    * @cms WebAsyst Shop-Script v.300+
    * @author Nondescript brain
    * @copyright 2011 StudiosDL
    *
    * ���������� �������, ������ � ������� �������� ��� ��������-��������� Shop-Script Webasyst
    * http://www.webasyst.ru/community/partners/?pid=926073
    * icq: 1272220
    * Skype: shop_script.ru
    * E-mail: webasyst@studiosdl.com
    *
    *
    * ��� ��������� Kama:
    * ������� �������� Shop-Script Webasyst
    * http://www.webasyst.ru/community/partners/?pid=710125
    * http://shop-scripts.ru/showthread.php?t=1952
    * icq: 330677
    * Skype: shop-scripts.ru
    * E-mail: shop-scripts@ya.ru
    *
    **/


    if (!mysql_connect($host, $login, $pass))
    die('���������� ������������ � ��');

    if (!mysql_select_db($bd))




    require_once ("./core_functions/excel/Writer.php");

    // Creating a workbook
    $workbook = new Spreadsheet_Excel_Writer();
    $workbook->setTempDir('./temp');

    // Sending HTTP headers
    $workbook->send(date("Y-m-d") . '-price.xls');

    // Creating a worksheet
    $worksheet = &$workbook->addWorksheet('Price');

    $worksheet->setColumn(0, 0, 8);
    $worksheet->setColumn(1, 1, 70);
    $worksheet->setColumn(2, 2, 9);

    //Encodind
    $worksheet->setInputEncoding('CP1251');

    //Styles cells and text
    $heading1 = &$workbook->addFormat(array('bold' => 1, 'color' => 'white', 'size' => 8, 'fgcolor' => 22));
    $heading2 = &$workbook->addFormat(array('bold' => 1, 'color' => 'white', 'size' => 10, 'align' => 'center', 'fgcolor' => 56));
    $phone = &$workbook->addFormat(array('bold' => 1, 'size' => 10, 'align' => 'center', 'fgcolor' => 'white'));
    $phone2 = &$workbook->addFormat(array('bold' => 1, 'size' => 10, 'align' => 'left', 'fgcolor' => 'white'));
    $category[0] = &$workbook->addFormat(array('bold' => 1, 'color' => 52, 'size' => 14));
    $category[1] = &$workbook->addFormat(array('bold' => 1, 'color' => 'red', 'size' => 12));
    $category[2] = &$workbook->addFormat(array('bold' => 1, 'color' => 63, 'size' => 14,));
    $category[3] = &$workbook->addFormat(array('bold' => 1, 'color' => 8, 'size' => 9));

    // The head data
    $worksheet->writeString(0, 0, "����� ��:", $heading1);
    $worksheet->writeString(0, 1, date('d.m.Y � H:i', time()), $heading1);
    $worksheet->writeBlank(0, 2, $heading1);





    $worksheet->writeString(4, 0, "�������", $heading2);
    $worksheet->writeString(4, 1, "������������", $heading2);
    $worksheet->writeString(4, 2, "���� ���,", $heading2);

    $numrow = 5;

    function RunSelect($sql)
    {
    $localmas = array();
    $result = mysql_query($sql);
    if ($result == false) {
    echo $sql . "<BR>";
    echo "" . mysql_error() . "<BR>";
    }
    while ($row = mysql_fetch_array($result))
    $localmas[] = $row;
    mysql_freeresult($result);
    return $localmas;
    }

    function CreatePrice($catid, $level)
    {
    global $worksheet;
    global $category;
    global $navlink;
    global $text;
    global $textr;
    global $numrow;

    $sql = "SELECT categoryID, name_ru FROM SC_categories WHERE parent=$catid ORDER BY name_ru";
    $tmpcat = RunSelect($sql);
    if (count($tmpcat))
    for ($i = 0; $i < count($tmpcat); $i++) {
    $worksheet->writeString($numrow, 0, str_repeat(" ", $level) . $tmpcat[$i]['name_ru'],
    $category[$level]);
    $numrow++;
    CreatePrice($tmpcat[$i]['categoryID'], $level + 1);
    }
    else {
    $sql = "SELECT productID, name_ru, in_stock, Price, product_code FROM SC_products WHERE categoryID=$catid AND enabled=1 ORDER BY name_ru";
    $tovar = RunSelect($sql);
    for ($i = 0; $i < count($tovar); $i++) {
    $worksheet->writeString($numrow, 0, $tovar[$i]['product_code'], $text);
    $worksheet->writeUrl($numrow, 1, "http://" . $_SERVER['SERVER_NAME'] .
    "/index.php?productID=" . $tovar[$i]['productID'], $tovar[$i]['name_ru'], $text);
    $worksheet->writenumber($numrow, 2, $tovar[$i]['Price'], $text);
    $numrow++;
    }

    }
    }

    CreatePrice($_GET['categoryID'], 0);

    // Let's send the file
    $workbook->close();
    ?
     
  2. Yuzik

    Yuzik

    Регистр.:
    28 июн 2006
    Сообщения:
    218
    Симпатии:
    101
    Все просто
    замени
    PHP:
    $worksheet->writenumber($numrow2$tovar[$i]['Price'], $text);
    на
    PHP:
    $worksheet->writenumber($numrow2,  number_format($tovar[$i]['Price'], 2), $text);
     
  3. shadou

    shadou Писатель

    Регистр.:
    19 мар 2012
    Сообщения:
    4
    Симпатии:
    0
    хм странно никаких изменений не произошло

    может быть параметры установленные в базе msql для данных price неверны тоесть сейчас там стоит
     
  4. Yuzik

    Yuzik

    Регистр.:
    28 июн 2006
    Сообщения:
    218
    Симпатии:
    101
    тогда возможно проблема в функции writenumber() она может фильтровать данные

    или поэкспериментируй с функцией number_format()
    PHP:
    // так
    $worksheet->writenumber($numrow2,  number_format($tovar[$i]['Price'], 2'.'), $text);
     
    // или так
    $worksheet->writenumber($numrow2,  number_format($tovar[$i]['Price'], 2','), $text);
    Также может быть проблема в настройках самого Excel
     
  5. shadou

    shadou Писатель

    Регистр.:
    19 мар 2012
    Сообщения:
    4
    Симпатии:
    0
    при замены на любую из этих строк закачивается норм а при открытии в excel вылазит ошибка пишут что проблема где то в этих строках хотя проблемы не вижу

    а если попробовать присвоить money_format то как будет выглядеть строка?
     
  6. Yuzik

    Yuzik

    Регистр.:
    28 июн 2006
    Сообщения:
    218
    Симпатии:
    101
    откуда ты взял money_format ? number_format() - стандартная функция РНР.
    Давай не будем флудить тут. пиши в личку. решу твой вопрос