Problém s renderováním dat – PHP – Fórum – Programujte.com
 x   TIP: Přetáhni ikonu na hlavní panel pro připnutí webu

Problém s renderováním dat – PHP – Fórum – Programujte.comProblém s renderováním dat – PHP – Fórum – Programujte.com

 

Toto vlákno bylo označeno za vyřešené — příspěvek s řešením.
jAkErCZ0
Stálý člen
18. 9. 2017   #1
-
0
-

Zdravím vás,

mám takový problém mám exportModel.php což je soubor ve kterém generuji pomocí php xml soubor pro zbozi.cz a heureka.cz ale mám problém že i když funkce beru ze stejné tabulky tak když chci vypsat EAN napíše mi že chybí..... ale přitom tam doplněný je...

public static function exportHeureka($params=null, $save=true)
  {
    /*
    $dir = App::getFilesDir().self::DIR_EXPORT.self::DIR_ZBOZI;
    echo file_get_contents($dir.'zbozi.xml', NULL, NULL, 0, 90000);
    die();
    */

    ini_set('max_execution_time', 3600);
    ini_set('memory_limit','2048M');

    ob_start();

    $categoryID = null;
    if(isset($params['idcat']) && (int)$params['idcat']>0)
      $categoryID = (int) $params['idcat'];

    $idlang = isset($params['idlang']) ? $params['idlang'] : Lang::getIdLang();

    //------------------------------------------
    // ZISKANI DAT
    $model = Module::loadModel(self::MODULE_NAME);
    $const = $model->__getConstants();

    $cModel = Module::loadModel(self::MODULE_NAME, 'categoryModel');
    $cConst = $cModel->__getConstants();

    $vModel = Module::loadModel(self::MODULE_NAME, 'variantModel');
    $vpModel = Module::loadModel(self::MODULE_NAME, 'variantProfileModel');
    $vpaModel = Module::loadModel(self::MODULE_NAME, 'variantParameterModel');
    $vbpModel = Module::loadModel(self::MODULE_NAME, 'variantBindParametrModel');


    $wheres[] = " NOT `".$const['TABLE']."`.`".$const['DELETED']."` ";
    $wheres[] = " `".$const['TABLE']."`.`".$const['IDLANG']."`=".$idlang." ";
    $wheres[] = " NOT `".$cConst['TABLE']."`.`".$cConst['DELETED']."` ";
    if($categoryID)
    {
      $categoryIDs[$categoryID] = $categoryID;

      foreach($cModel->getSubcategories($categoryID) as $c)
        $categoryIDs[$c['ID']] = $c['ID'];

      $wheres[] = " `".$const['TABLE_CB']."`.`".$const['CB_IDCAT']."` IN (".implode(',', $categoryIDs).") ";
    }
    $order = null;

    $opt['files'] = false;
    $catalogitems = $model->getCatalogItems_(1, $wheres, $order, null, $opt);
    $catalogitems = $catalogitems['data'];
    //print_r($catalogitems);

    //------------------------------------------
    // ZISKANI VSECH VYROBCU
    $manModel = Module::loadModel(self::MODULE_NAME, 'manufacturerModel');
    $manConst = $manModel->__getConstants();

    $manufacturers = $manModel->getManufacturers();
    $manufacturers = $manufacturers['data'];
    //print_r($manufacturers);
    //------------------------------------------

    $heureka_xmlname = 'heureka'.($categoryID>0?'-c'.$categoryID:'').'.xml';
    $heureka_root_tag = 'SHOP';
    $heureka_item_tag = 'SHOPITEM';
    $heureka_item_param_tag = 'PARAM';


    $xmlOut = self::getXmlHeader();
    $xmlOut.= self::startTag($heureka_root_tag,0,array(),1);

    $serverUri = UrlParser::getServerUri();

    $vatLower = round((float)Setting::getValue(Setting::K_VAT_LOWER),2);
    $vatH = round((float)Setting::getValue(Setting::K_VAT),2);

    $rootedCatsLoaded = array();
    foreach($catalogitems as $row)
    {
			$variant = $vModel->getVariants($row['ID']);

			if(count($variant)>0){
				foreach($variant as $va){
					if(isset($va["AVAILABILITY"]) and $va["AVAILABILITY"] > $row['AVAILABILITY']){
						$row['AVAILABILITY'] = $va["AVAILABILITY"];
					}
				}
			}

			if($row['AVAILABILITY'] > 0) {


	      $data = array();
	      $data['ITEM_ID'] = $row['ID'];
	      $data['PRODUCTNAME'] = htmlspecialchars($row['NAME'].(strlen($row['PARTNO'])?' '.$row['PARTNO']:""));
	      $data['PRODUCT'] = htmlspecialchars($row['NAME'].(strlen($row['PARTNO'])?' '.$row['PARTNO']:""));
	      $data['DESCRIPTION'] = html_entity_decode(htmlspecialchars_decode(ROUTINE::rip_tags($row['DESCRIPTION'])),ENT_COMPAT,'UTF-8');

	      $data['URL'] = $serverUri.'/i'.$row['ID'].'-'.$row['URL'].'/';

	      if((int)$row['IDFILE']>0)
	      {
	        $args['idfile'] = (int)$row['IDFILE'];
	        $args['type'] = '';
	        $urlimg = UrlParser::encode('IMG::viewFile::'.UrlParser::encode($args));
	        $data['IMGURL'] = $serverUri.'/'.$urlimg;
	      }

	      switch((int)$row['VATFLAG'])
	      {
	        case 0: { $DPHCOEFF = 1.0; break; }
	        case 1: { $DPHCOEFF = $vatLower; break; }
	        case 2:
	        default:{ $DPHCOEFF = $vatH; }
	      }

	      $margin = $model->getCatalogItemMarginCoefficient($row['ID']);

	      $data['PRICE_VAT'] = round($row['MINPRICE']*$DPHCOEFF*$margin);

	      $data['ITEM_TYPE'] = 'new';

	      if((int)$row['IDMANUFACTURER']>0 && isset($manufacturers[$row['IDMANUFACTURER']]))
	      {
	        $data['MANUFACTURER'] = $manufacturers[$row['IDMANUFACTURER']]['NAME'];
	      }
	      //$data['PRODUCTNO'] = $row[];

	      $itemcategoriesIDs = $model->getCatalogItemCategories($row['ID']);
	      $rootedCatsPaths = array();
	      $auxMaxCount = -1;

	      foreach($itemcategoriesIDs as $catid)
	      {
	        if(isset($rootedCatsLoaded[$catid]))
	        {
	          $auxpath = $path = $rootedCatsLoaded[$catid];
	          $root = array_shift($auxpath);
	          $rootedCatsPaths[$root['ID']][$catid] = $path;
	          if(count($path)>$auxMaxCount)
	          {
	            $rootedCatsPaths[$root['ID']]['A'] = $path;
	            $auxMaxCount = count($path);
	          }
	        }
	        else
	        {
	          $auxpath = $path = $cModel->getPath($catid);
	          $root = array_shift($auxpath);
	          $rootedCatsPaths[$root['ID']][$catid] = $path;
	          if(count($path)>$auxMaxCount)
	          {
	            $rootedCatsPaths[$root['ID']]['A'] = $path;
	            $auxMaxCount = count($path);
	          }
	          $rootedCatsLoaded[$catid] = $path;
	        }
	      }

	      $firstRootcatid = null;
	      $ifc=0;
	      foreach($rootedCatsPaths as $rootcatid=>$catpaths)
	      {
	        if($ifc==0) $firstRootcatid = $rootcatid;
	        $ifc++;

	        $catstr = '';
	        $ic=0;
	        if(isset($catpaths['A']))
	        {
	          foreach($catpaths['A'] as $category)
	          {
	            $ic++;
	            $catstr .= $category['NAME'].($ic<count($catpaths['A']) ? " | " : "");
	          }
	          $data['CATEGORYTEXT'][] = $catstr;
	        }
	      }
				$data['EAN'] = $row['EAN'];
			
                $dd = null;
                  if($row['AVAILABILITY']==0) $dd = 1;
                  elseif($row['AVAILABILITY']>0) $dd = $row['AVAILABILITY'];
                  if($dd!==null) $data['DELIVERY_DATE'] = $dd;

				$variants = $vbpModel->selectItemProfileVariantParam($row['ID']);
				if(count($variants)>0){
					foreach($variants as $va){
					  $temp_data = $data;
					  $temp_data['ITEM_ID'].='_V_'.$va["PARAMETRID"];
						$var_var=$vpaModel->getParam($va["PARAMETRID"]);
						$var_group=$vpaModel->getParam($var_var["PARENTID"]);

				    $xmlOut .= self::startTag($heureka_item_tag,1,array(),1);
				    $xmlOut .= self::getXmlRow($temp_data,null, 2);

				    $xmlOut .= self::getXmlRow(array('PARAM_NAME'=>$var_group["NAME"],'VAL'=>$var_var["NAME"]),$heureka_item_param_tag, 2);
				    $xmlOut .= self::getXmlRow(array('ITEMGROUP_ID'=>$row['ID']),null, 2);
				    $xmlOut .= self::endTag($heureka_item_tag, 1, 1);

					}
				}else{
		      $xmlOut .= self::getXmlRow($data, $heureka_item_tag, 2);
				}
    	}
		}

    $xmlOut.= self::endTag($heureka_root_tag, 0);

    if($save===true)
    {
      $dir = App::getFilesDir().self::DIR_EXPORT.self::DIR_HEUREKA;
      File::createDir($dir);
      if(file_put_contents($dir.$heureka_xmlname, $xmlOut))
      {
        $a_url = UrlParser::getServerUri().App::getFilesUrl().self::DIR_EXPORT.self::DIR_HEUREKA.$heureka_xmlname;
        $a_tag = '<a style="color:#fff" href="'.$a_url.'" target="_blank">'.$a_url.'</a>';
        $msg = 'XML Heureka.cz bylo vytvořeno. Nachází se na adrese '.$a_tag.'. ';
        return array(true, $msg);
      }
      else
      {
        $msg = 'Při vytváření XML heureka.cz nastala chyba. ';
        return array(false, $msg);
      }
    }

    ob_clean();
    Header::xml();
    echo $xmlOut;
    die();
  }

To je public který gerenuje heureku.xml...

Připojen obrázek.

Připojen obrázek.

<SHOPITEM>
<ITEM_ID>3322</ITEM_ID>
<PRODUCTNAME>BESTOW II vesta se závažím 5 kg vel. L černá</PRODUCTNAME>
<PRODUCT>BESTOW II vesta se závažím 5 kg vel. L černá</PRODUCT>
<DESCRIPTION>
Vesta se zatížením je vhodná pro trénink v tělocvičně, doma, nebo při joggingu. Vesta má ve předu zapínání na sponu se stříbrnými reflexními pásky. Materiál je jednoduchý na údržbu parametry: Velikosti vesty: M, L Závaží: 5 kg Materiál: 70% nylon, 30% neopren
</DESCRIPTION>
<URL>
https://www.bellugio.cz/…vel-l-cerna/
</URL>
<IMGURL>
https://www.bellugio.cz/…TsgZcMPhXH_E.
</IMGURL>
<PRICE_VAT>762</PRICE_VAT>
<ITEM_TYPE>new</ITEM_TYPE>
<CATEGORYTEXT>Sporty | Míčové a společenské sporty</CATEGORYTEXT>
<EAN/>
<DELIVERY_DATE>3</DELIVERY_DATE>
</SHOPITEM>

Tady je výpis v xml... EAN chybí... a když se podívám do souboru tak tam se nalézá <EAN></EAN>

Připojen obrázek.

Nevíte nějakou radu čím to může být způsobeno?

Díky všem předem za pomoc..

S pozdravem

Dominik Korčák

Nahlásit jako SPAM
IP: 94.112.128.–
Kit+15
Guru
18. 9. 2017   #2
-
0
-

#1 jAkErCZ
Jestli to nebude tím, že v tabulce žádný sloupeček "EAN" není. Vidím tam jen sloupeček "ean".

BTW: Tak hnusnou špagetu jsem už dlouho neviděl a ten generátor XML je časovanou bombou.

Nahlásit jako SPAM
IP: 194.228.68.–
Komentáře označují místa, kde programátor udělal chybu nebo něco nedodělal.
jAkErCZ0
Stálý člen
18. 9. 2017   #3
-
0
-

#2 Kit
Nevím jestli sis toho všiml ale všechno co se vypisuje se píše VELKÝMI PÍSMENY takže v tom problém nebude...

Nějaká další rada? Potřebuji to zprovoznit 

A co se týče systému je z roku 2013 ;)

Nahlásit jako SPAM
IP: 94.112.128.–
Kit+15
Guru
18. 9. 2017   #4
-
-1
-
Mimo téma

#3 jAkErCZ
V tabulce eshop_catalog_variants to máš v nadpisu malými, tak nás neoblbuj.

Nahlásit jako SPAM
IP: 194.228.68.–
Komentáře označují místa, kde programátor udělal chybu nebo něco nedodělal.
jAkErCZ0
Stálý člen
18. 9. 2017   #5
-
0
-

#4 Kit
Dobře projdi si znovu public :) 

 $data['ITEM_ID'] = $row['ID'];
	      $data['PRODUCTNAME'] = htmlspecialchars($row['NAME'].(strlen($row['PARTNO'])?' '.$row['PARTNO']:""));
	      $data['PRODUCT'] = htmlspecialchars($row['NAME'].(strlen($row['PARTNO'])?' '.$row['PARTNO']:""));
	      $data['DESCRIPTION'] = html_entity_decode(htmlspecialchars_decode(ROUTINE::rip_tags($row['DESCRIPTION'])),ENT_COMPAT,'UTF-8');

$row['Zde se nachází parametr'];

Chápeš že velkým se to píše všude :D proto říkám že tím to nebude...

Nahlásit jako SPAM
IP: 94.112.128.–
Kit+15
Guru
18. 9. 2017   #6
-
0
-

#5 jAkErCZ
Snažil jsem se ti naznačit, že chyba je v kódu, který jsi nám neukázal.

Nahlásit jako SPAM
IP: 194.228.68.–
Komentáře označují místa, kde programátor udělal chybu nebo něco nedodělal.
jAkErCZ0
Stálý člen
19. 9. 2017   #7
-
0
-

#6 Kit

Počkat tento kód ovládá celou heureku... žádný jiný na něj navázaný nemám... 

<?php
//include 'import.conf.php';

class exportModel extends Model
{

  const MODULE_NAME = 'catalog';

  //----------------------------------------------------------------------------

  const DIR_EXPORT = 'export/';
  const DIR_ZBOZI = '';//'zbozi/';
  const DIR_HEUREKA = '';//'heureka/';

  //----------------------------------------------------------------------------

  const xmlHeader = '<?xml version="1.0" encoding="utf-8"?>'; //<?
  const xmlRootElement = 'root';
  const n = "\n";
  const t = "\t";

  //----------------------------------------------------------------------------
  //----------------------------------------------------------------------------

  public static function exportAll($params)
  {
    die('export all vynuto');
    $succes = array();

    $succes['zbozicz'] = $model->exportZbozi($params);
    $succes['heurekacz'] = $model->exportHeureka($params);

    return $succes;
  }
  public static function exportZbozi($params=null, $save=true)
  {
    /*
    $dir = App::getFilesDir().self::DIR_EXPORT.self::DIR_ZBOZI;
    echo file_get_contents($dir.'zbozi.xml', NULL, NULL, 0, 90000);
    die();
    */

    ini_set('max_execution_time', 3600);
    ini_set('memory_limit','2048M');

    ob_start();

    $categoryID = null;
    if(isset($params['idcat']) && (int)$params['idcat']>0)
      $categoryID = (int) $params['idcat'];

    $idlang = isset($params['idlang']) ? $params['idlang'] : Lang::getIdLang();

    //------------------------------------------
    // ZISKANI DAT
    $model = Module::loadModel(self::MODULE_NAME);
    $const = $model->__getConstants();

    $cModel = Module::loadModel(self::MODULE_NAME, 'categoryModel');
    $cConst = $cModel->__getConstants();

    $wheres[] = " NOT `".$const['TABLE']."`.`".$const['DELETED']."` ";
    $wheres[] = " `".$const['TABLE']."`.`".$const['IDLANG']."`=".$idlang." ";
    $wheres[] = " NOT `".$cConst['TABLE']."`.`".$cConst['DELETED']."` ";
    if($categoryID)
    {
      $categoryIDs[$categoryID] = $categoryID;

      foreach($cModel->getSubcategories($categoryID) as $c)
        $categoryIDs[$c['ID']] = $c['ID'];

      $wheres[] = " `".$const['TABLE_CB']."`.`".$const['CB_IDCAT']."` IN (".implode(',', $categoryIDs).") ";
    }
    $order = null;

    $opt['files'] = false;
    $catalogitems = $model->getCatalogItems_(1, $wheres, $order, null, $opt);
    $catalogitems = $catalogitems['data'];
    //print_r($catalogitems);

    //------------------------------------------
    // ZISKANI VSECH VYROBCU
    $manModel = Module::loadModel(self::MODULE_NAME, 'manufacturerModel');
    $manConst = $manModel->__getConstants();

    $manufacturers = $manModel->getManufacturers();
    $manufacturers = $manufacturers['data'];
    //print_r($manufacturers);
    //------------------------------------------

    $zbozi_xmlname = 'zbozi'.($categoryID>0?'-c'.$categoryID:'').'.xml';
    $zbozi_root_tag = 'SHOP xmlns="http://www.zbozi.cz/ns/offer/1.0"';
    $zbozi_item_tag = 'SHOPITEM';


    $xmlOut = self::getXmlHeader();
    $xmlOut.= self::startTag($zbozi_root_tag);

    $serverUri = UrlParser::getServerUri();

    $vatLower = round((float)Setting::getValue(Setting::K_VAT_LOWER),2);
    $vatH = round((float)Setting::getValue(Setting::K_VAT),2);

    $rootedCatsLoaded = array();
    foreach($catalogitems as $row)
    {
      //print_r($row);
      //die();
      $data = array();
      $data['PRODUCTNAME'] = htmlspecialchars($row['NAME'].(strlen($row['PARTNO'])?' '.$row['PARTNO']:""));
      $data['DESCRIPTION'] = htmlspecialchars($row['DESCRIPTION']);
      $data['URL'] = $serverUri.'/i'.$row['ID'].'-'.$row['URL'].'/';

      if((int)$row['IDFILE']>0)
      {
        $args['idfile'] = (int)$row['IDFILE'];
        $args['type'] = '';
        $urlimg = UrlParser::encode('IMG::viewFile::'.UrlParser::encode($args));
        $data['IMGURL'] = $serverUri.'/'.$urlimg;
      }

      $dd = null;
      if($row['AVAILABILITY']==0) $dd = 0;
      elseif($row['AVAILABILITY']>0) $dd = $row['AVAILABILITY'];
      if($dd!==null) $data['DELIVERY_DATE'] = $dd;

      $data['ITEM_TYPE'] = 'new';

      if((int)$row['IDMANUFACTURER']>0 && isset($manufacturers[$row['IDMANUFACTURER']]))
      {
        $data['MANUFACTURER'] = $manufacturers[$row['IDMANUFACTURER']]['NAME'];
      }

      //$data['PRODUCTNO'] = $row[];

      $itemcategoriesIDs = $model->getCatalogItemCategories($row['ID']);
      $rootedCatsPaths = array();
      $auxMaxCount = -1;

      foreach($itemcategoriesIDs as $catid)
      {
        if(isset($rootedCatsLoaded[$catid]))
        {
          $auxpath = $path = $rootedCatsLoaded[$catid];
          $root = array_shift($auxpath);
          $rootedCatsPaths[$root['ID']][$catid] = $path;
          if(count($path)>$auxMaxCount)
          {
            $rootedCatsPaths[$root['ID']]['A'] = $path;
            $auxMaxCount = count($path);
          }
        }
        else
        {
          $auxpath = $path = $cModel->getPath($catid);
          $root = array_shift($auxpath);
          $rootedCatsPaths[$root['ID']][$catid] = $path;
          if(count($path)>$auxMaxCount)
          {
            $rootedCatsPaths[$root['ID']]['A'] = $path;
            $auxMaxCount = count($path);
          }
          $rootedCatsLoaded[$catid] = $path;
        }
      }

      $firstRootcatid = null;
      $ifc=0;
      foreach($rootedCatsPaths as $rootcatid=>$catpaths)
      {
        if($ifc==0) $firstRootcatid = $rootcatid;
        $ifc++;

        $catstr = '';
        $ic=0;
        if(isset($catpaths['A']))
        {
          foreach($catpaths['A'] as $category)
          {
            $ic++;
            $catstr .= $category['NAME'].($ic<count($catpaths['A']) ? " | " : "");
          }
          $data['CATEGORYTEXT'][] = $catstr;
        }
      }

      switch((int)$row['VATFLAG'])
      {
        case 0: { $DPHCOEFF = 1.0; break; }
        case 1: { $DPHCOEFF = $vatLower; break; }
        case 2:
        default:{ $DPHCOEFF = $vatH; }
      }

      $margin = $model->getCatalogItemMarginCoefficient($data['ID']);

      $data['PRICE'] = round($row['MINPRICE']*$margin, 2);
      $data['PRICE_VAT'] = round($row['MINPRICE']*$DPHCOEFF*$margin);

      $xmlOut .= self::getXmlRow($data, $zbozi_item_tag, 2);
    }

    $xmlOut.= self::endTag($zbozi_root_tag);

    if($save===true)
    {
      $dir = App::getFilesDir().self::DIR_EXPORT.self::DIR_ZBOZI;
      File::createDir($dir);
      if(file_put_contents($dir.$zbozi_xmlname, $xmlOut))
      {
        $a_url = UrlParser::getServerUri().App::getFilesUrl().self::DIR_EXPORT.self::DIR_ZBOZI.$zbozi_xmlname;
        $a_tag = '<a style="color:#fff" href="'.$a_url.'" target="_blank">'.$a_url.'</a>';
        $msg = 'XML zboži.cz bylo vytvořeno. Nachází se na adrese '.$a_tag.'. ';
        return array(true, $msg);
      }
      else
      {
        $msg = 'Při vytváření XML zboži.cz nastala chyba. ';
        return array(false, $msg);
      }
    }

    ob_clean();
    Header::xml();
    echo $xmlOut;
    die();
  }

  public static function exportHeureka($params=null, $save=true)
  {
    /*
    $dir = App::getFilesDir().self::DIR_EXPORT.self::DIR_ZBOZI;
    echo file_get_contents($dir.'zbozi.xml', NULL, NULL, 0, 90000);
    die();
    */

    ini_set('max_execution_time', 3600);
    ini_set('memory_limit','2048M');

    ob_start();

    $categoryID = null;
    if(isset($params['idcat']) && (int)$params['idcat']>0)
      $categoryID = (int) $params['idcat'];

    $idlang = isset($params['idlang']) ? $params['idlang'] : Lang::getIdLang();

    //------------------------------------------
    // ZISKANI DAT
    $model = Module::loadModel(self::MODULE_NAME);
    $const = $model->__getConstants();

    $cModel = Module::loadModel(self::MODULE_NAME, 'categoryModel');
    $cConst = $cModel->__getConstants();

    $vModel = Module::loadModel(self::MODULE_NAME, 'variantModel');
    $vpModel = Module::loadModel(self::MODULE_NAME, 'variantProfileModel');
    $vpaModel = Module::loadModel(self::MODULE_NAME, 'variantParameterModel');
    $vbpModel = Module::loadModel(self::MODULE_NAME, 'variantBindParametrModel');


    $wheres[] = " NOT `".$const['TABLE']."`.`".$const['DELETED']."` ";
    $wheres[] = " `".$const['TABLE']."`.`".$const['IDLANG']."`=".$idlang." ";
    $wheres[] = " NOT `".$cConst['TABLE']."`.`".$cConst['DELETED']."` ";
    if($categoryID)
    {
      $categoryIDs[$categoryID] = $categoryID;

      foreach($cModel->getSubcategories($categoryID) as $c)
        $categoryIDs[$c['ID']] = $c['ID'];

      $wheres[] = " `".$const['TABLE_CB']."`.`".$const['CB_IDCAT']."` IN (".implode(',', $categoryIDs).") ";
    }
    $order = null;

    $opt['files'] = false;
    $catalogitems = $model->getCatalogItems_(1, $wheres, $order, null, $opt);
    $catalogitems = $catalogitems['data'];
    //print_r($catalogitems);

    //------------------------------------------
    // ZISKANI VSECH VYROBCU
    $manModel = Module::loadModel(self::MODULE_NAME, 'manufacturerModel');
    $manConst = $manModel->__getConstants();

    $manufacturers = $manModel->getManufacturers();
    $manufacturers = $manufacturers['data'];
    //print_r($manufacturers);
    //------------------------------------------

    $heureka_xmlname = 'heureka'.($categoryID>0?'-c'.$categoryID:'').'.xml';
    $heureka_root_tag = 'SHOP';
    $heureka_item_tag = 'SHOPITEM';
    $heureka_item_param_tag = 'PARAM';


    $xmlOut = self::getXmlHeader();
    $xmlOut.= self::startTag($heureka_root_tag,0,array(),1);

    $serverUri = UrlParser::getServerUri();

    $vatLower = round((float)Setting::getValue(Setting::K_VAT_LOWER),2);
    $vatH = round((float)Setting::getValue(Setting::K_VAT),2);

    $rootedCatsLoaded = array();
    foreach($catalogitems as $row)
    {
			$variant = $vModel->getVariants($row['ID']);

			if(count($variant)>0){
				foreach($variant as $va){
					if(isset($va["AVAILABILITY"]) and $va["AVAILABILITY"] > $row['AVAILABILITY']){
						$row['AVAILABILITY'] = $va["AVAILABILITY"];
					}
				}
			}

			if($row['AVAILABILITY'] > 0) {


	      $data = array();
	      $data['ITEM_ID'] = $row['ID'];
	      $data['PRODUCTNAME'] = htmlspecialchars($row['NAME'].(strlen($row['PARTNO'])?' '.$row['PARTNO']:""));
	      $data['PRODUCT'] = htmlspecialchars($row['NAME'].(strlen($row['PARTNO'])?' '.$row['PARTNO']:""));
	      $data['DESCRIPTION'] = html_entity_decode(htmlspecialchars_decode(ROUTINE::rip_tags($row['DESCRIPTION'])),ENT_COMPAT,'UTF-8');

	      $data['URL'] = $serverUri.'/i'.$row['ID'].'-'.$row['URL'].'/';

	      if((int)$row['IDFILE']>0)
	      {
	        $args['idfile'] = (int)$row['IDFILE'];
	        $args['type'] = '';
	        $urlimg = UrlParser::encode('IMG::viewFile::'.UrlParser::encode($args));
	        $data['IMGURL'] = $serverUri.'/'.$urlimg;
	      }

	      switch((int)$row['VATFLAG'])
	      {
	        case 0: { $DPHCOEFF = 1.0; break; }
	        case 1: { $DPHCOEFF = $vatLower; break; }
	        case 2:
	        default:{ $DPHCOEFF = $vatH; }
	      }

	      $margin = $model->getCatalogItemMarginCoefficient($row['ID']);

	      $data['PRICE_VAT'] = round($row['MINPRICE']*$DPHCOEFF*$margin);

	      $data['ITEM_TYPE'] = 'new';

	      if((int)$row['IDMANUFACTURER']>0 && isset($manufacturers[$row['IDMANUFACTURER']]))
	      {
	        $data['MANUFACTURER'] = $manufacturers[$row['IDMANUFACTURER']]['NAME'];
	      }
	      //$data['PRODUCTNO'] = $row[];

	      $itemcategoriesIDs = $model->getCatalogItemCategories($row['ID']);
	      $rootedCatsPaths = array();
	      $auxMaxCount = -1;

	      foreach($itemcategoriesIDs as $catid)
	      {
	        if(isset($rootedCatsLoaded[$catid]))
	        {
	          $auxpath = $path = $rootedCatsLoaded[$catid];
	          $root = array_shift($auxpath);
	          $rootedCatsPaths[$root['ID']][$catid] = $path;
	          if(count($path)>$auxMaxCount)
	          {
	            $rootedCatsPaths[$root['ID']]['A'] = $path;
	            $auxMaxCount = count($path);
	          }
	        }
	        else
	        {
	          $auxpath = $path = $cModel->getPath($catid);
	          $root = array_shift($auxpath);
	          $rootedCatsPaths[$root['ID']][$catid] = $path;
	          if(count($path)>$auxMaxCount)
	          {
	            $rootedCatsPaths[$root['ID']]['A'] = $path;
	            $auxMaxCount = count($path);
	          }
	          $rootedCatsLoaded[$catid] = $path;
	        }
	      }

	      $firstRootcatid = null;
	      $ifc=0;
	      foreach($rootedCatsPaths as $rootcatid=>$catpaths)
	      {
	        if($ifc==0) $firstRootcatid = $rootcatid;
	        $ifc++;

	        $catstr = '';
	        $ic=0;
	        if(isset($catpaths['A']))
	        {
	          foreach($catpaths['A'] as $category)
	          {
	            $ic++;
	            $catstr .= $category['NAME'].($ic<count($catpaths['A']) ? " | " : "");
	          }
	          $data['CATEGORYTEXT'][] = $catstr;
	        }
	      }
				$data['EAN'] = $row['EAN'];
			
                $dd = null;
                  if($row['AVAILABILITY']==0) $dd = 1;
                  elseif($row['AVAILABILITY']>0) $dd = $row['AVAILABILITY'];
                  if($dd!==null) $data['DELIVERY_DATE'] = $dd;

				$variants = $vbpModel->selectItemProfileVariantParam($row['ID']);
				if(count($variants)>0){
					foreach($variants as $va){
					  $temp_data = $data;
					  $temp_data['ITEM_ID'].='_V_'.$va["PARAMETRID"];
						$var_var=$vpaModel->getParam($va["PARAMETRID"]);
						$var_group=$vpaModel->getParam($var_var["PARENTID"]);

				    $xmlOut .= self::startTag($heureka_item_tag,1,array(),1);
				    $xmlOut .= self::getXmlRow($temp_data,null, 2);

				    $xmlOut .= self::getXmlRow(array('PARAM_NAME'=>$var_group["NAME"],'VAL'=>$var_var["NAME"]),$heureka_item_param_tag, 2);
				    $xmlOut .= self::getXmlRow(array('ITEMGROUP_ID'=>$row['ID']),null, 2);
				    $xmlOut .= self::endTag($heureka_item_tag, 1, 1);

					}
				}else{
		      $xmlOut .= self::getXmlRow($data, $heureka_item_tag, 2);
				}
    	}
		}

    $xmlOut.= self::endTag($heureka_root_tag, 0);

    if($save===true)
    {
      $dir = App::getFilesDir().self::DIR_EXPORT.self::DIR_HEUREKA;
      File::createDir($dir);
      if(file_put_contents($dir.$heureka_xmlname, $xmlOut))
      {
        $a_url = UrlParser::getServerUri().App::getFilesUrl().self::DIR_EXPORT.self::DIR_HEUREKA.$heureka_xmlname;
        $a_tag = '<a style="color:#fff" href="'.$a_url.'" target="_blank">'.$a_url.'</a>';
        $msg = 'XML Heureka.cz bylo vytvořeno. Nachází se na adrese '.$a_tag.'. ';
        return array(true, $msg);
      }
      else
      {
        $msg = 'Při vytváření XML heureka.cz nastala chyba. ';
        return array(false, $msg);
      }
    }

    ob_clean();
    Header::xml();
    echo $xmlOut;
    die();
  }

  //----------------------------------------------------------------------------

  public function categories_Export($urlParams, $getParams)
  {
    ob_start();

    $model = Module::loadModel(null, 'categoryModel');
    $const = $model->__getConstants();

    $wheres = array();
    $limit = isset($getParams['limit']) ? ' LIMIT '.$getParams['limit'] : '';
    if(isset($getParams['sort']))
    {
      $orderby = ' ORDER BY ';
      if(is_array($getParams['sort']))
      {
        $i=0;
        foreach($getParams['sort'] as $sort)
        {
          $i++;
          $orderby .= $sort.($i==count($getParams['sort']) ? ',' : '').' ';
        }
      }
    }
    $where = '';

    $sql = "SELECT * FROM `".$const['TABLE']."` ";

    $onlyIDs = array();
    if(count($urlParams))
    {
      foreach($urlParams as $id)
        if(is_numeric($id))
          $onlyIDs[$id] = $id;
    }
    if(count($onlyIDs))
      $wheres[] = " `".$const['TABLE']."`.`".$const['ID']."` IN (".implode(',', $onlyIDs).") ";

    if(count($wheres))
    {
      $where = " WHERE ".implode(' AND ', $wheres);
    }

    //echo '<pre>'.$sql.$where.$orderby.$limit.'</pre>'; die();
    $res = DB::getRows($sql.$where.$orderby.$limit);

    $ItemTag = 'category';

    $xmlOut = self::getXmlHeader();
    $xmlOut.= self::startTag();

    ob_clean();
    Header::xml();

    $i=0;
    if($res)
    foreach($res as $row)
    {

      $xmlOut .= self::getXmlRow($row, $ItemTag, 2);

      $i++;

      if($i%500==0)
      {
        echo $xmlOut;
        $xmlOut = '';
      }
    }

    $xmlOut.= self::endTag();
    echo $xmlOut;
  }

  public static function bindedCategories_Export($urlParams, $getParams)
  {
    ob_start();

    $model = Module::loadModel();
    $const = $model->__getConstants();

    $wheres = array();
    $limit = isset($getParams['limit']) ? ' LIMIT '.$getParams['limit'] : '';
    if(isset($getParams['sort']))
    {
      $orderby = ' ORDER BY ';
      if(is_array($getParams['sort']))
      {
        $i=0;
        foreach($getParams['sort'] as $sort)
        {
          $i++;
          $orderby .= $sort.($i==count($getParams['sort']) ? ',' : '').' ';
        }
      }
    }
    $where = '';

    $sql = "SELECT * FROM `".$const['TABLE_CB']."` ";

    $onlyIDs = array();
    if(count($urlParams))
    {
      foreach($urlParams as $id)
        if(is_numeric($id))
          $onlyIDs[$id] = $id;
    }
    if(count($onlyIDs))
      $wheres[] = " `".$const['TABLE_CB']."`.`".$const['CB_IDITEM']."` IN (".implode(',', $onlyIDs).") ";

    if(count($wheres))
    {
      $where = " WHERE ".implode(' AND ', $wheres);
    }

    //echo '<pre>'.$sql.$where.$orderby.$limit.'</pre>'; die();
    $res = DB::getRows($sql.$where.$orderby.$limit);

    $ItemTag = 'itemCatBind';

    $xmlOut = self::getXmlHeader();
    $xmlOut.= self::startTag();

    ob_clean();
    Header::xml();

    $i=0;
    if($res)
    foreach($res as $row)
    {

      $xmlOut .= self::getXmlRow($row, $ItemTag, 2);

      $i++;

      if($i%500==0)
      {
        echo $xmlOut;
        $xmlOut = '';
      }
    }

    $xmlOut.= self::endTag();
    echo $xmlOut;
  }

  //----------------------------------------------------------------------------
  //----------------------------------------------------------------------------

  private static function getXmlHeader($enc='utf-8', $ver='1.0')
  {
    return '<?xml version="'.$ver.'" encoding="'.$enc.'"?>'.self::n; //<?
  }

  private static function startTag($elName=null, $tabulatorsCount=0, Array $attrs=null, $endCount=0)
  {
    if($elName==null) return '<'.self::xmlRootElement.'>'.self::n;

    $t = '';
    for($i=0; $i<$tabulatorsCount; $i++) $t .= self::t;

    $n = '';
    for($i=0; $i<$endCount; $i++) $n .= self::n;

    $out = $t.'<'.$elName;

    if(count($attrs))
      foreach($attrs as $key=>$value)
        $out.= ' '.$key.'="'.self::clean($value).'"';

    $out.= '>'.$n;

    return $out;
  }

  private static function endTag($elName=null, $endCount=1, $tabulatorsCount=0)
  {
    if($elName==null) return '</'.self::xmlRootElement.'>'.self::n;

    $t = '';
    for($i=0; $i<$tabulatorsCount; $i++) $t .= self::t;

    $n = '';
    for($i=0; $i<$endCount; $i++) $n .= self::n;

    return $t.'</'.$elName.'>'.$n;
  }

  private static function clean($str='', $mode=ENT_COMPAT, $charset='UTF-8')
  {
    return htmlspecialchars(trim($str), $mode, $charset);
  }

  private static function getXmlRow(Array $row, $itemTag=null, $marginCount=0)
  {
    $xmlOut = '';
    if($itemTag!==null) $xmlOut.= self::startTag($itemTag, $marginCount, null, 1);

    foreach($row as $key=>$value)
    {
      if(!is_array($value)) $value = array($value);

      foreach($value as $val)
      {
        $xmlOut.= self::startTag($key, $itemTag!==null?$marginCount+1:$marginCount);
        $xmlOut.= self::clean($val);
        $xmlOut.= self::endTag($key, 1, 0);
      }
    }

    if($itemTag!==null) $xmlOut.= self::endTag($itemTag, 1, $marginCount);

    return $xmlOut;
  }

  //----------------------------------------------------------------------------

}

Tady celý kód...

Nahlásit jako SPAM
IP: 94.112.128.–
Kit+15
Guru
19. 9. 2017   #8
-
0
-

#7 jAkErCZ
Pěkný macek, já jsem měl feed pro Heuréku mnohem kratší.

Podívám se na to zítra (vlastně možná dnes).

Nahlásit jako SPAM
IP: 194.228.68.–
Komentáře označují místa, kde programátor udělal chybu nebo něco nedodělal.
peter
~ Anonymní uživatel
4016 příspěvků
19. 9. 2017   #9
-
0
-

1. hledal jsem primo text 'ean'
                $data['EAN'] = $row['EAN']; - tenhle kod je jedine, co pracuje primo s EAN, radek kolem 405
2. hledal jsem '$row'
Kolem radku 100 je print_r($row);, tam EAN zobrazi?
Na radku kolem 300 je dalsi foreach, ktery generuje $row, tam, kdyz das print_r se ean zobrazi? Hadam, ze tohle se pouzije pro radek 405, viz (1.) Muzes zkusit
echo '<pre>'; var_dump($row); //?
Radek kolem 520 generuje take $row. Totez 590.

Nerikam, ze je neco spatne, pouze jsem zkusil najit vsechna mista, ktera by s tim mohla na prvni pohled nejak souviset. V dalsim pohledu bych to kolem 500, 600 vyradil, mozna.

Nahlásit jako SPAM
IP: 2001:718:2601:258:bd9c:83...–
peter
~ Anonymní uživatel
4016 příspěvků
19. 9. 2017   #10
-
0
-

A vubec, proc si nezkontrolujes vypis vsech poli, ktere by ten EAN meli mit, treba var_dumpem? Pokud to ctes necim ze souboru, tak to neco by melo dokazat vypsat data, co to nacetlo, kompletni. jestli to tam je, tak selhal parser. A pak je treba prozkoumat proc s konkretnimi udaji. Treba je to nejaka hloupost, prevod stringu, nepovoleny znak ve stringu, treba nasledkem utf kodovani...
 

Nahlásit jako SPAM
IP: 2001:718:2601:258:bd9c:83...–
jAkErCZ0
Stálý člen
19. 9. 2017   #11
-
0
-

#9 peter
#10 peter

No kluci mám problém v tom že mi ten soubor absolutně odmítá brát var_dump, print_r atd... když si to tam přidám nic se mi nikam nevypíše.... 

Nahlásit jako SPAM
IP: 94.112.128.–
Kit+15
Guru
19. 9. 2017   #12
-
+1
-
Zajímavé

#11 jAkErCZ
To dělá ten ob_start().

BTW: Je docela hloupé, že ten kód obsahuje tolik skrytých závislostí, takže se to téměř nedá testovat.

Nahlásit jako SPAM
IP: 194.228.68.–
Komentáře označují místa, kde programátor udělal chybu nebo něco nedodělal.
jAkErCZ0
Stálý člen
19. 9. 2017   #13
-
0
-

#12 Kit

Ano to dělal on... ALe když se koukám do výpisu tak tam EAN vůbec nemám.... i když se to napojuje do tabulky kde se sloupec EAN nachází :D

A přitom si to načítá variantModel.php ve kterém se EAN nachází...

Jak říkám je to starý systém.... Již brzy přejdeme na nový ale to je otázka tak rok :)

Nahlásit jako SPAM
IP: 94.112.128.–
Kit+15
Guru
19. 9. 2017   #14
-
0
-

#13 jAkErCZ
Taková trapná otázka: Taháš to ze stejné databáze?

Nahlásit jako SPAM
IP: 194.228.68.–
Komentáře označují místa, kde programátor udělal chybu nebo něco nedodělal.
jAkErCZ0
Stálý člen
19. 9. 2017   #15
-
0
-

#14 Kit
Ano tahám :) ten sloupec EAN je přímo vedle sloupce CATNO a to se vypisuje... :D

Nahlásit jako SPAM
IP: 94.112.128.–
Kit+15
Guru
19. 9. 2017   #16
-
0
-

#15 jAkErCZ
Zkontroluj ještě malá/velká písmena v názvech sloupců v databázi. Podívej se, jestli se nedostala před nebo za název sloupce mezera. Zkontroluj i typ sloupce EAN, měl by to být varchar.

Nahlásit jako SPAM
IP: 194.228.68.–
Komentáře označují místa, kde programátor udělal chybu nebo něco nedodělal.
jAkErCZ0
Stálý člen
19. 9. 2017   #17
-
0
-

#16 Kit
Všechno sedí v db varchar(20).

array(47) {
  ["ID"]=>
  string(4) "1069"
  ["IMP_ID"]=>
  string(5) "15508"
  ["IMP_IDGROUP"]=>
  NULL
  ["IDLANG"]=>
  string(1) "1"
  ["IDLANG_GROUP"]=>
  string(1) "0"
  ["NAME"]=>
  string(33) "KERILLA-KolĂ­ÄŤek na nos fialovĂ˝"
  ["SHORTNAME"]=>
  string(33) "KERILLA-KolĂ­ÄŤek na nos fialovĂ˝"
  ["URL"]=>
  string(30) "kerilla-kolicek-na-nos-fialovy"
  ["EXTURL"]=>
  NULL
  ["PTITLE"]=>
  string(33) "KERILLA-KolĂ­ÄŤek na nos fialovĂ˝"
  ["PDESCRIPTION"]=>
  string(220) "Kolíčky do nostu. Použití měkkého silikónu zaručuje pohodlnost během použití
- ucpávka nosu KERILIA zabraňuje vniknutí vody do nosu
- svorka vyrobena z polymerů a měkkého silikonu
- funkÄŤnĂ­, plastovĂ˝,"
  ["PKEYWORDS"]=>
  string(0) ""
  ["SHORTDESCRIPTION"]=>
  string(0) ""
  ["DESCRIPTION"]=>
  string(349) "Kolíčky do nostu. Použití měkkého silikónu zaručuje pohodlnost během použití
- ucpávka nosu KERILIA zabraňuje vniknutí vody do nosu
- svorka vyrobena z polymerů a měkkého silikonu
- funkční, plastový, úložný box pro uskladnění 
- baleno v úhledném blistru na zavěšení
- balenĂ­:  576ks/kartĂłn

MoĹľnĂ˝ prodej po 1 kuse"
  ["VARRANTY"]=>
  string(12) "24 měsíců"
  ["VATFLAG"]=>
  string(1) "0"
  ["IDMANUFACTURER"]=>
  NULL
  ["IDDISTRIBUTOR"]=>
  NULL
  ["INDEX"]=>
  string(1) "0"
  ["INDEX_LADIES"]=>
  string(1) "0"
  ["NEWS"]=>
  string(1) "0"
  ["ACTION"]=>
  string(1) "0"
  ["SLEVA"]=>
  string(1) "0"
  ["MEGAACTION"]=>
  string(1) "0"
  ["MEGAACTION_LADIES"]=>
  string(1) "0"
  ["DELETED"]=>
  string(1) "0"
  ["IDPDPROFILE"]=>
  NULL
  ["IDFILE"]=>
  string(4) "6408"
  ["IDMEGAACTIONFILE"]=>
  NULL
  ["IDMEGAACTIONFILE_LADIES"]=>
  NULL
  ["IDGAL"]=>
  NULL
  ["V_SIMPLE"]=>
  string(1) "1"
  ["V_SIMPLEID"]=>
  NULL
  ["CURRENCY"]=>
  string(3) "CZK"
  ["UNIT"]=>
  string(0) ""
  ["TOPSALES"]=>
  string(1) "0"
  ["ORDER"]=>
  string(4) "1068"
  ["ORDERINDEX"]=>
  string(1) "0"
  ["IDCAT"]=>
  string(2) "35"
  ["CATNO"]=>
  string(6) "K84117"
  ["PARTNO"]=>
  string(0) ""
  ["PURCHASEPRICE"]=>
  string(2) "17"
  ["COMMONPRICE"]=>
  string(1) "0"
  ["PCVFLAG"]=>
  string(2) "45"
  ["PRICE"]=>
  string(2) "24"
  ["MINPRICE"]=>
  string(2) "17"
  ["AVAILABILITY"]=>
  string(1) "3"
}

A tady je var_dump.... žádný EAN tam není i když je to napojený na úplně stejnou DB a v variantsmodel.php je EAN zahrnutý...

Nahlásit jako SPAM
IP: 94.112.128.–
Kit+15
Guru
19. 9. 2017   #18
-
0
-

#17 jAkErCZ
Koukám, že máš tu databázi chybně připojenou. Hned po připojení musíš do databáze zadat příkaz 

SET NAMES utf8;
Nahlásit jako SPAM
IP: 194.228.68.–
Komentáře označují místa, kde programátor udělal chybu nebo něco nedodělal.
Kit+15
Guru
19. 9. 2017   #19
-
0
-

#17 jAkErCZ
To fakt vypadá, jako kdybys ta data tahal z jiné databáze nebo možná z jiné tabulky s velmi podobným názvem, ale jinou strukturou.

Zkus si vypsat seznam všech tabulek a zkontrolovat, zda se názvy některých tabulek neliší jen velikostí písma. Pokud se názvy dávají do zpětných apostrofů, tak jsou case-sensitive, jinak ne. Kombinace přístupu je pak skoro vražedná.

Nahlásit jako SPAM
IP: 194.228.68.–
Komentáře označují místa, kde programátor udělal chybu nebo něco nedodělal.
jAkErCZ0
Stálý člen
19. 9. 2017   #20
-
0
-

#18 Kit
#19 Kit

Tady máš variantModel.php  ze kterého to bere data...

<?php

class variantModel extends Model
{

	const TABLE = 'eshop_catalog_variants';
	const ID = 'id';
	const IMP_IDGROUP = 'imp_idgroup';
	const ITEMID = 'itemid';
	const PARAMS = 'params';
	const CATNO = 'catno';
	const PARTNO = 'partno';
	const EAN = 'ean';
	const PURCHASEPRICE = 'purchaseprice';
	const COMMONPRICE = 'commonprice';
	const PCVFLAG = 'pcvflag';
	const PRICE = 'price';
	const AVAILABILITY = 'availability';
	const SIMPLE = 'simple';
	const ORDER = 'order';
	const DELETED = 'deleted';
	const USESTORECOUNT = 'usestorecount';
	const STORECOUNT = 'storecount';
	const MINORDERCOUNT = 'minordercount';
	const PCV_MANUAL = 0;
	const PCV_COEFFICIENT = 45;


	private static $priceCalcValues = array(
			self::PCV_MANUAL => 'ručně',
			self::PCV_COEFFICIENT => 'nákupní cena * koeficient'
	);


	const AV_INSTOCK = 0;
	const AV_SOLDOUT = -1;
	const AV_REQUEST = -2;
	const AV_HIDDEN = -3;
	const AV_CLEARANCE = -4;


	private static $availabilityValues = array(
			self::AV_HIDDEN => ' - nezobrazovat - ',
			self::AV_INSTOCK => 'Expresní doručení', //Skladem - odesíláme ihned
			//	self::AV_CLEARANCE => 'Doprodej',
			3 => 'Skladem',
			self::AV_SOLDOUT => 'Vyprodáno', //Vyprodáno
			self::AV_REQUEST => 'Dočasně nedostupné', //Na dotaz
			//	1 => '1 den u Vás',
			//	2 => '2 dny u Vás',
			/*
			  4 => 'Do 4 dnů u Vás',
			  5 => 'Do 5 dnů u Vás',
			  6 => 'Do 6 dnů u Vás',
			  7 => 'Do týdne u Vás',
			  14 => 'Do dvou týdnů u Vás',
			  18 => 'Do 2-3 týdnů u Vás',
			  21 => 'Do 3-4 týdnů u Vás',
			  30 => 'Do měsíce u Vás'
			 */
	);


	public function getBlankRow()
	{
		return array('ID' => null, 'ITEMID' => null, 'IMP_IDGROUP' => null,
				'CATNO' => null, 'PARTNO' => null, 'EAN' => null,
				'PURCHASEPRICE' => null, 'COMMONPRICE' => null, 'PRICE' => null,
				'PCVFLAG' => null, 'AVAILABILITY' => null, 'SIMPLE' => null,
				'ORDER' => null, 'DELETED' => null, 'PARAMS' => null,
				'MINORDERCOUNT' => null, 'STORECOUNT' => null,
				'USESTORECOUNT' => null);
	}


	public function getVariant($id)
	{
		if ($id === null || (int) $id <= 0)
			return $this->getBlankRow();

		$sql = "SELECT
               `" . self::ID . "` AS ID,
               `" . self::ITEMID . "` AS ITEMID,
               `" . self::IMP_IDGROUP . "` AS IMP_IDGROUP,
               `" . self::PARAMS . "` AS PARAMS,
               `" . self::CATNO . "` AS CATNO,
               `" . self::PARTNO . "` AS PARTNO,
               `" . self::EAN . "` AS EAN,
               `" . self::PURCHASEPRICE . "` AS PURCHASEPRICE,
               `" . self::COMMONPRICE . "` AS COMMONPRICE,
               `" . self::PRICE . "` AS PRICE,
               `" . self::PCVFLAG . "` AS PCVFLAG,
               `" . self::AVAILABILITY . "` AS AVAILABILITY,
               `" . self::SIMPLE . "` AS SIMPLE,
               `" . self::ORDER . "` AS `ORDER`,
               `" . self::DELETED . "` AS DELETED,
               `" . self::USESTORECOUNT . "` AS USESTORECOUNT,
               `" . self::STORECOUNT . "` AS STORECOUNT,
               `" . self::MINORDERCOUNT . "` AS MINORDERCOUNT,
								 `supplier_stock`,`supplier_taken`

            FROM `" . self::TABLE . "`
            WHERE `" . self::ID . "`=" . $id;

		$res = DB::getRow($sql);

		$res['supplier_stock'] = $res['supplier_stock'] - $res['supplier_taken'];

		$discount = DB::getRow('SELECT * FROM `wr_discounts_list` inner join `wr_discounts_main` on `wr_discounts_list`.`discount_id` = `wr_discounts_main`.`id`
				WHERE `wr_discounts_list`.`product_id` = "' . $res['ITEMID'] . '"
					AND `active` = "1" AND `start` < NOW() AND `end` > NOW() ORDER BY `wr_discounts_list`.`id` DESC  LIMIT 1
');



		$row = DB::getRows('SELECT  `eshop_orders_items`.`store_taken`
			FROM `eshop_orders_items`
			INNER JOIN  `eshop_orders`  ON `eshop_orders`.`id` = `eshop_orders_items`.`orderid`
			WHERE
			`eshop_orders_items`.`variantid` = ' . $id . ' AND

			(`eshop_orders`.`admin_status` = "-1" OR 	`eshop_orders`.`admin_status` = "3"		)
ORDER BY `eshop_orders_items`.`orderid`');



		$res['tosend'] = $tosend = 0;
		foreach ($row as $val)
		{
			//	echo $val['store_taken'] ."---";
			$tosend += $val['store_taken'];
		}
		$res['tosend'] = $tosend;

		if (!empty($discount))
		{
			$wehrmacht = DB::getRow('SELECT * FROM `wr_discounts_prices` WHERE discounts_id = "' . $discount['discount_id'] . '" AND price_id="' . $discount['price_id'] . '"');
			$res['PRICE'] = $wehrmacht['price'];
		}

		return $res;
	}


	public function getVariantByFields(Array $data)
	{
		$where = '';
		$wheres = array();
		foreach ($data as $filed => $value)
		{
			$wheres[] = " `" . $filed . "`='" . $value . "' ";
		}

		$sql = "SELECT
               `" . self::ID . "` AS ID,
               `" . self::ITEMID . "` AS ITEMID,
               `" . self::IMP_IDGROUP . "` AS IMP_IDGROUP,
               `" . self::PARAMS . "` AS PARAMS,
               `" . self::CATNO . "` AS CATNO,
               `" . self::PARTNO . "` AS PARTNO,
               `" . self::EAN . "` AS EAN,
               `" . self::PURCHASEPRICE . "` AS PURCHASEPRICE,
               `" . self::COMMONPRICE . "` AS COMMONPRICE,
               `" . self::PRICE . "` AS PRICE,
               `" . self::PCVFLAG . "` AS PCVFLAG,
               `" . self::AVAILABILITY . "` AS AVAILABILITY,
               `" . self::SIMPLE . "` AS SIMPLE,
               `" . self::ORDER . "` AS `ORDER`,
               `" . self::DELETED . "` AS DELETED,
               `" . self::USESTORECOUNT . "` AS USESTORECOUNT,
               `" . self::STORECOUNT . "` AS STORECOUNT,
               `" . self::MINORDERCOUNT . "` AS MINORDERCOUNT
            FROM `" . self::TABLE . "`
            FROM `" . self::TABLE . "`
            WHERE " . $where;

		return DB::getRow($sql);
	}


	public function getVariantsInventory($iditem)
	{
		$sql = "SELECT
               `" . self::ID . "` AS ID,
               `" . self::ITEMID . "` AS ITEMID,
               `" . self::PRICE . "` AS PRICE,
               `" . self::STORECOUNT . "` AS STORECOUNT
            FROM `" . self::TABLE . "`
            WHERE `" . self::ITEMID . "`=" . $iditem . "

            ORDER BY `" . self::ORDER . "`";

		$res = DB::getRows($sql, 'ID');


		return $res;
	}


	public function getVariants($iditem, $simple = false)
	{
		$sql = "SELECT
               `" . self::ID . "` AS ID,
               `" . self::ITEMID . "` AS ITEMID,
               `" . self::IMP_IDGROUP . "` AS IMP_IDGROUP,
               `" . self::PARAMS . "` AS PARAMS,
               `" . self::CATNO . "` AS CATNO,
               `" . self::PARTNO . "` AS PARTNO,
               `" . self::EAN . "` AS EAN,
               `" . self::PURCHASEPRICE . "` AS PURCHASEPRICE,
               `" . self::COMMONPRICE . "` AS COMMONPRICE,
               `" . self::PRICE . "` AS PRICE,
               `" . self::PCVFLAG . "` AS PCVFLAG,
               `" . self::AVAILABILITY . "` AS AVAILABILITY,
               `" . self::SIMPLE . "` AS SIMPLE,
               `" . self::ORDER . "` AS `ORDER`,
               `" . self::DELETED . "` AS DELETED,
               `" . self::USESTORECOUNT . "` AS USESTORECOUNT,
               `" . self::STORECOUNT . "` AS STORECOUNT,
               `" . self::MINORDERCOUNT . "` AS MINORDERCOUNT
            FROM `" . self::TABLE . "`
            WHERE `" . self::ITEMID . "`=" . $iditem . "
                    " . ($simple ? " AND `" . self::SIMPLE . "` " : " AND ( isnull(`" . self::SIMPLE . "`) OR NOT `" . self::SIMPLE . "` ) " ) . "
            ORDER BY `" . self::ORDER . "`";

		if ($simple)
		{
			$res = DB::getRow($sql);

			if (isset(self::$availabilityValues[$res['AVAILABILITY']]))
			{
				$avtext = self::$availabilityValues[$res['AVAILABILITY']];
			}
			else
			{
				$res['AVAILABILITY'] = self::AV_HIDDEN;
				$avtext = self::$availabilityValues[self::AV_HIDDEN];
			}

			$res['AVAILABILITYTEXT'] = $avtext;
		}
		else
		{
			$res = DB::getRows($sql, 'ID');
		}

		return $res;
	}


	public static function getSimpleID($iditem)
	{
		$sql = "SELECT `" . self::ID . "`
            FROM `" . self::TABLE . "`
            WHERE `" . self::SIMPLE . "`=1 AND `" . self::ITEMID . "`=" . $iditem;
		$id = DB::getOne($sql);

		return (int) $id > 0 ? (int) $id : null;
	}


	public static function newVariant($data)
	{
		return DB::insert(self::TABLE, $data);
	}


	public static function editVariant($data, $id)
	{
		return DB::update(self::TABLE, $data, " `" . self::ID . "`=" . $id . " ");
	}


	public static function newOnDuplicateEditVariant($data)
	{
		return DB::insertOnDuplicateUpdate(self::TABLE, $data);
	}


	public static function getPriceCalcValues()
	{
		return self::$priceCalcValues;
	}


	public static function getAvailabilityValues()
	{
		return self::$availabilityValues;
	}


	public static function deleteItemVariantsNotIn($itemid, Array $variandsIDs)
	{
		$sql = "DELETE FROM `" . self::TABLE . "` WHERE `" . self::ITEMID . "`=" . $itemid . "" .
				(count($variandsIDs) ? " AND `" . self::ID . "` NOT IN (" . implode(',', $variandsIDs) . ") " : '');
		return DB::query($sql);
	}


	public static function deleteItemVariantsAll($iditem)
	{
		$sql = "DELETE FROM `" . self::TABLE . "` WHERE `" . self::ITEMID . "`=" . $iditem;
		return DB::query($sql);
	}


}

Tady vidíme že se to připojuje do TABLE const TABLE = 'eshop_catalog_variants';

ve které se nachází i EAN.

Takže mi tedy řekni jak to opravím jelikož bez EANU mi heureka nepojede....

Nahlásit jako SPAM
IP: 94.112.128.–
Kit+15
Guru
19. 9. 2017   #21
-
+1
-
Zajímavé

#20 jAkErCZ
Teď už konečně vidím, jak je to s tou konverzí malá/velká. Je tam (vcelku zbytečná) mezivrstva konstant, která to vše zamlžuje.

Podívám se na to zase večer.

Nahlásit jako SPAM
IP: 194.228.68.–
Komentáře označují místa, kde programátor udělal chybu nebo něco nedodělal.
jAkErCZ0
Stálý člen
19. 9. 2017   #22
-
0
-

#21 Kit

Aha, sem měl dát hned. ok díky :)

Nahlásit jako SPAM
IP: 94.112.128.–
Kit+15
Guru
20. 9. 2017   #23
-
0
-

#20 jAkErCZ
Koukám, že metoda getVariantByFields() vůbec nemůže fungovat, neboť v SQL dotazu máš 2× klauzuli FROM a proměnnou $where máš prázdnou. To jsou chyby v syntaxi a databáze musí řvát, že se jí to nelíbí.

Kontroluješ vůbec, zda se SQL dotazy provedly? Obávám, se, že ne.

Nahlásit jako SPAM
IP: 194.228.68.–
Komentáře označují místa, kde programátor udělal chybu nebo něco nedodělal.
jAkErCZ0
Stálý člen
20. 9. 2017   #24
-
0
-

#23 Kit

No dívej jde o to ze to je e-shop to znamená kdyby tam v tomhle modelu byla špatně syntaxe tak by mi neměla půlka shopu jelikož je to jeho nejdůležitější model ale ono vše funguje jak...až na par maličkosti ale to se vychyta.

Nahlásit jako SPAM
IP: 94.112.128.–
peter
~ Anonymní uživatel
4016 příspěvků
20. 9. 2017   #25
-
0
-

jAkErCZ:
1. Kdyz Kit napise, ze je neco spatne, tak obvykle je :)

            FROM `" . self::TABLE . "`
            FROM `" . self::TABLE . "`
(radek 170+-, jenom jsem pouzil vyhledavani 'FROM')

2. Zapomen na tu tridu. Udelej primy dotaz pro konkretni id, pres php nebo phpmyadmina (SELECT * FROM tabulka WHERE id=neco). Pripadne si dej kazdy dotaz vypsat pres echo $sql (obvykle se to pojmenovana $query, dotaz, sql je neco jineho). Pokud normalni dotaz bude v poradku, pak je chyba samozrejme nekde v te class.
 

Nahlásit jako SPAM
IP: 2001:718:2601:258:948c:4d...–
peter
~ Anonymní uživatel
4016 příspěvků
20. 9. 2017   #26
-
0
-

#25 peter
Jo, to vypsani kazdeho dotazu je proto, abys ho pak mohl zkopirovat do phpmyadmina a videt, co ti vrati za data, pripadne ho rucne zkontrolovat. Dobry je nejaky formatovac sql dotazu (protoze obvykle uprava lidi je priserna, lepsi to nechat preformatovat). Ale u cizich produktu hrozi zasilani sql dotazu autorovi. Nicmene, jestli se nebojis niceho, ani sovy, tak ja treba pouzivam s oblibou
Instant SQL Formatter
http://www.dpriver.com/…qlformat.htm

Nahlásit jako SPAM
IP: 2001:718:2601:258:948c:4d...–
Kit+15
Guru
20. 9. 2017   #27
-
0
-

#26 peter
Úprava některých formátovačů SQL bývá příšerná a netuším, jak by si poradily se slepovanými dotazy.

Nahlásit jako SPAM
IP: 194.228.68.–
Komentáře označují místa, kde programátor udělal chybu nebo něco nedodělal.
Kit+15
Guru
20. 9. 2017   #28
-
0
-

#24 jAkErCZ
Jenže to fakt vypadá, že ti půlka šopu nejede. Zrovna tato metoda ti v poklidu vrátí null a ani se přitom nezačervená.

Nahlásit jako SPAM
IP: 194.228.68.–
Komentáře označují místa, kde programátor udělal chybu nebo něco nedodělal.
jAkErCZ0
Stálý člen
20. 9. 2017   #29
-
0
-

#28 Kit

Ajo, už jsem našel ten dotaz...

	public function getVariantByFields(Array $data)
	{
		$where = '';
		$wheres = array();
		foreach ($data as $filed => $value)
		{
			$wheres[] = " `" . $filed . "`='" . $value . "' ";
		}

		$sql = "SELECT
               `" . self::ID . "` AS ID,
               `" . self::ITEMID . "` AS ITEMID,
               `" . self::IMP_IDGROUP . "` AS IMP_IDGROUP,
               `" . self::PARAMS . "` AS PARAMS,
               `" . self::CATNO . "` AS CATNO,
               `" . self::PARTNO . "` AS PARTNO,
               `" . self::EAN . "` AS EAN,
               `" . self::PURCHASEPRICE . "` AS PURCHASEPRICE,
               `" . self::COMMONPRICE . "` AS COMMONPRICE,
               `" . self::PRICE . "` AS PRICE,
               `" . self::PCVFLAG . "` AS PCVFLAG,
               `" . self::AVAILABILITY . "` AS AVAILABILITY,
               `" . self::SIMPLE . "` AS SIMPLE,
               `" . self::ORDER . "` AS `ORDER`,
               `" . self::DELETED . "` AS DELETED,
               `" . self::USESTORECOUNT . "` AS USESTORECOUNT,
               `" . self::STORECOUNT . "` AS STORECOUNT,
               `" . self::MINORDERCOUNT . "` AS MINORDERCOUNT
            FROM `" . self::TABLE . "`
            FROM `" . self::TABLE . "`
            WHERE " . $where;

		return DB::getRow($sql);
	}

To je ten dotaz co nefunguje..... a mám takový pocit že vrací ten $row ne?

Nahlásit jako SPAM
IP: 94.112.128.–
Kit+15
Guru
20. 9. 2017   #30
-
0
-

#29 jAkErCZ
Netuším, co vrací DB::getRow($sql), pokud má nevalidní $sql. Můj databázový ovladač na nevalidní SQL dotaz vyhazuje výjimku, takže to vidím okamžitě včetně popisu chyby. Jenže tyto knihovny se obvykle tváří, že se nic neděje a vrací null.

Nahlásit jako SPAM
IP: 194.228.68.–
Komentáře označují místa, kde programátor udělal chybu nebo něco nedodělal.
jAkErCZ0
Stálý člen
20. 9. 2017   #31
-
0
-

#30 Kit

Až na to že mě zaráží $where = '';

By mě zajímalo co tam má být :D :D

Nahlásit jako SPAM
IP: 94.112.128.–
KIIV
~ Moderátor
+43
God of flame
20. 9. 2017   #32
-
0
-

#31 jAkErCZ
do $where asi chtel autor spojit  $wheres pomoci neceho jako  join(" AND ", $wheres); (pokud to jeste existuje)

Nahlásit jako SPAM
IP: 93.91.151.–
Program vždy dělá to co naprogramujete, ne to co chcete...
jAkErCZ0
Stálý člen
20. 9. 2017   #33
-
0
-

#32 KIIV

Takže ono vlastně stačí abych použil místo WHERE " . $where; --> WHERE " . $wheres;

ale i tak vypisuje to všechno krom toho blbého EANU :D :D to je fakt záhada :D

Nahlásit jako SPAM
IP: 94.112.128.–
KIIV
~ Moderátor
+43
God of flame
20. 9. 2017   #34
-
0
-

#33 jAkErCZ
$wheres je pole, a uz nevim, jak se to presne udela. Melo by to byt prinejmensim neco jako:

" WHERE " . (empty($wheres) ? " 1" : join(" AND ", $wheres));


Pokud pole bude prazdne, tak se tam doplni   "WHERE 1"  pokud tam neco je, tak  "WHERE `neco1` = 'hodnota' AND `neco2` = 'hodnota'" a tak dale

Nahlásit jako SPAM
IP: 93.91.151.–
Program vždy dělá to co naprogramujete, ne to co chcete...
jAkErCZ0
Stálý člen
20. 9. 2017   #35
-
0
-

Už tomu fakt přestávám rozumět :D jak se mi můžou vypisovat všechny data a sloupce ale jediný EAN prostě za boha ne.... to fakt nechápu...

Nahlásit jako SPAM
IP: 94.112.128.–
Kit+15
Guru
20. 9. 2017   #36
-
0
-

#33 jAkErCZ
V mém podání ta metoda teď vypadá takhle: 

    public function getVariantByFields(array $data) {
        $wheres = array("1");
        foreach ($data as $field => $value) {
            $wheres[] = "`$field`='$value'";
        }
        $where = implode(' AND ', $wheres);
        $sql = "SELECT $this->columns
            FROM `$this->table`
            WHERE $where";
        return DB::getRow($sql);
    }
Nahlásit jako SPAM
IP: 194.228.68.–
Komentáře označují místa, kde programátor udělal chybu nebo něco nedodělal.
KIIV
~ Moderátor
+43
God of flame
20. 9. 2017   #37
-
0
-

#35 jAkErCZ
zakomentuj ten ob_clean a hod tam ob_flush a hned uvidis veskery vypisy (chyb), ktere to ted uplne likviduje. Pripadne se da pouzit misto ob_clean treba ob_get_contents a zapsat si to do nejakeho souboru.

Nahlásit jako SPAM
IP: 93.91.151.–
Program vždy dělá to co naprogramujete, ne to co chcete...
jAkErCZ0
Stálý člen
20. 9. 2017   #38
-
0
-

#36 Kit

Dobře vyzkouším...

#37 KIIV

No dal jsem tedy místo  ob_clean ten ob_flush ale nikde se mi nic neoběvilo....

Nahlásit jako SPAM
IP: 94.112.128.–
peter
~ Anonymní uživatel
4016 příspěvků
20. 9. 2017   #39
-
0
-

Zkus ten primy dotaz na vsechny sloupce. Pak to prozen sql, fetch, var_dump. Idealne to dat do okenka sql v phpmyadminu.
$query = "SELECT * FROM `eshop_catalog_variants` LIMIT 1";

Teoreticky muzou nastat 3 situace
- sql napise error, nevrati zadna data
- sql vrati vsechny sloupce
- sql vrati nektere sloupce, pokud hodnota nebyla NULL (to se nekde tusim da nastavit a je mozne, ze pri upgradu se pomenilo nastaveni sql)

#36 Kit - Njn, ale osetreni promennych kde nic, tu nic. :)

Nahlásit jako SPAM
IP: 2001:718:2601:258:948c:4d...–
jAkErCZ0
Stálý člen
20. 9. 2017   #40
-
0
-

#39 peter

Použil jsem v adminu ten dotaz a vrátil mi normálně všechno a když sem to nahodil do variants...

public function getVariant($id)
	{
		if ($id === null || (int) $id <= 0)
			return $this->getBlankRow();

		$sql = "SELECT * FROM `eshop_catalog_variants` WHERE `" . self::ID . "`=" . $id . "";
		
		/*$sql = "SELECT
               `" . self::ID . "` AS ID,
               `" . self::ITEMID . "` AS ITEMID,
               `" . self::IMP_IDGROUP . "` AS IMP_IDGROUP,
               `" . self::PARAMS . "` AS PARAMS,
               `" . self::CATNO . "` AS CATNO,
               `" . self::PARTNO . "` AS PARTNO,
               `" . self::EAN . "` AS EAN,
               `" . self::PURCHASEPRICE . "` AS PURCHASEPRICE,
               `" . self::COMMONPRICE . "` AS COMMONPRICE,
               `" . self::PRICE . "` AS PRICE,
               `" . self::PCVFLAG . "` AS PCVFLAG,
               `" . self::AVAILABILITY . "` AS AVAILABILITY,
               `" . self::SIMPLE . "` AS SIMPLE,
               `" . self::ORDER . "` AS `ORDER`,
               `" . self::DELETED . "` AS DELETED,
               `" . self::USESTORECOUNT . "` AS USESTORECOUNT,
               `" . self::STORECOUNT . "` AS STORECOUNT,
               `" . self::MINORDERCOUNT . "` AS MINORDERCOUNT,
								 `supplier_stock`,`supplier_taken`

            FROM `" . self::TABLE . "`
            WHERE `" . self::ID . "`=" . $id;*/

		$res = DB::getRow($sql);

		$res['supplier_stock'] = $res['supplier_stock'] - $res['supplier_taken'];

		$discount = DB::getRow('SELECT * FROM `wr_discounts_list` inner join `wr_discounts_main` on `wr_discounts_list`.`discount_id` = `wr_discounts_main`.`id`
				WHERE `wr_discounts_list`.`product_id` = "' . $res['ITEMID'] . '"
					AND `active` = "1" AND `start` < NOW() AND `end` > NOW() ORDER BY `wr_discounts_list`.`id` DESC  LIMIT 1
');



		$row = DB::getRows('SELECT  `eshop_orders_items`.`store_taken`
			FROM `eshop_orders_items`
			INNER JOIN  `eshop_orders`  ON `eshop_orders`.`id` = `eshop_orders_items`.`orderid`
			WHERE
			`eshop_orders_items`.`variantid` = ' . $id . ' AND

			(`eshop_orders`.`admin_status` = "-1" OR 	`eshop_orders`.`admin_status` = "3"		)
ORDER BY `eshop_orders_items`.`orderid`');



		$res['tosend'] = $tosend = 0;
		foreach ($row as $val)
		{
			//	echo $val['store_taken'] ."---";
			$tosend += $val['store_taken'];
		}
		$res['tosend'] = $tosend;

		if (!empty($discount))
		{
			$wehrmacht = DB::getRow('SELECT * FROM `wr_discounts_prices` WHERE discounts_id = "' . $discount['discount_id'] . '" AND price_id="' . $discount['price_id'] . '"');
			$res['PRICE'] = $wehrmacht['price'];
		}

		return $res;
	}

Tak mi to opět vrátilo

array(47) {
  ["ID"]=>
  string(4) "3322"
  ["IMP_ID"]=>
  string(5) "27130"
  ["IMP_IDGROUP"]=>
  NULL
  ["IDLANG"]=>
  string(1) "1"
  ["IDLANG_GROUP"]=>
  string(1) "0"
  ["NAME"]=>
  string(49) "BESTOW II vesta se závažím 5 kg vel. L černá"
  ["SHORTNAME"]=>
  string(49) "BESTOW II vesta se závažím 5 kg vel. L černá"
  ["URL"]=>
  string(43) "bestow-ii-vesta-se-zavazim-5-kg-vel-l-cerna"
  ["EXTURL"]=>
  NULL
  ["PTITLE"]=>
  string(49) "BESTOW II vesta se závažím 5 kg vel. L černá"
  ["PDESCRIPTION"]=>
  string(223) "Vesta se zatížením je  vhodná pro  trénink v tělocvičně, doma, nebo při joggingu.
Vesta má ve předu zapínání  na sponu se stříbrnými reflexními pásky.
Materiál je jednoduchý na údržbu

parametry:
Veli"
  ["PKEYWORDS"]=>
  string(0) ""
  ["SHORTDESCRIPTION"]=>
  string(0) ""
  ["DESCRIPTION"]=>
  string(290) "Vesta se zatížením je  vhodná pro  trénink v tělocvičně, doma, nebo při joggingu.
Vesta má ve předu zapínání  na sponu se stříbrnými reflexními pásky.
Materiál je jednoduchý na údržbu

parametry:
Velikosti vesty: M, L
Závaží: 5 kg
Materiál: 70% nylon, 30% neopren"
  ["VARRANTY"]=>
  string(12) "24 měsíců"
  ["VATFLAG"]=>
  string(1) "0"
  ["IDMANUFACTURER"]=>
  NULL
  ["IDDISTRIBUTOR"]=>
  NULL
  ["INDEX"]=>
  string(1) "0"
  ["INDEX_LADIES"]=>
  string(1) "0"
  ["NEWS"]=>
  string(1) "1"
  ["ACTION"]=>
  string(1) "0"
  ["SLEVA"]=>
  string(1) "0"
  ["MEGAACTION"]=>
  string(1) "0"
  ["MEGAACTION_LADIES"]=>
  string(1) "0"
  ["DELETED"]=>
  string(1) "0"
  ["IDPDPROFILE"]=>
  NULL
  ["IDFILE"]=>
  string(4) "7459"
  ["IDMEGAACTIONFILE"]=>
  NULL
  ["IDMEGAACTIONFILE_LADIES"]=>
  NULL
  ["IDGAL"]=>
  NULL
  ["V_SIMPLE"]=>
  string(1) "1"
  ["V_SIMPLEID"]=>
  NULL
  ["CURRENCY"]=>
  string(3) "CZK"
  ["UNIT"]=>
  string(0) ""
  ["TOPSALES"]=>
  string(1) "0"
  ["ORDER"]=>
  string(4) "2113"
  ["ORDERINDEX"]=>
  string(1) "0"
  ["IDCAT"]=>
  string(1) "5"
  ["CATNO"]=>
  string(7) "K920891"
  ["PARTNO"]=>
  string(0) ""
  ["PURCHASEPRICE"]=>
  string(3) "476"
  ["COMMONPRICE"]=>
  string(1) "0"
  ["PCVFLAG"]=>
  string(2) "45"
  ["PRICE"]=>
  string(3) "653"
  ["MINPRICE"]=>
  string(3) "476"
  ["AVAILABILITY"]=>
  string(1) "3"
}

Je nějaká možnost aby mi to při generování ukázalo také sql který jde na db?

Nahlásit jako SPAM
IP: 94.112.128.–
Kit+15
Guru
20. 9. 2017   #41
-
0
-

#39 peter
Njn, ale osetreni promennych kde nic, tu nic. :)

V tom máš sice pravdu, ale abych to mohl udělat korektně, musel bych asi třídě DB trochu rozhodit sandál. Každá databáze se totiž ošetřuje jinak. V tuto chvíli to ani není jak ošetřit.

Samozřejmě standardně používám prepared statements, ale silně pochybuji, že uvedená třída DB něčím takovým disponuje.

Nahlásit jako SPAM
IP: 194.228.68.–
Komentáře označují místa, kde programátor udělal chybu nebo něco nedodělal.
Kit+15
Guru
20. 9. 2017   #42
-
0
-

#40 jAkErCZ
Není ti tak trochu divné, že se ptáš na 18 sloupců a dostaneš jich 47?

Nahlásit jako SPAM
IP: 194.228.68.–
Komentáře označují místa, kde programátor udělal chybu nebo něco nedodělal.
jAkErCZ0
Stálý člen
20. 9. 2017   #43
-
0
-

#42 Kit

Teď se na to taky dívám ale možná to bude tím že to tahá pomocí join jestě z jiné tabulky data... Jako jméno, popis, fotku atd...

Nahlásit jako SPAM
IP: 94.112.128.–
Kit+15
Guru
20. 9. 2017   #44
-
0
-

#43 jAkErCZ
Ta provázanost modulů je docela šílená a statiky jak nas*áno. Přitom by to bylo asi tak čtvrtinové, kdyby to bylo napsáno objektově.

Nahlásit jako SPAM
IP: 194.228.68.–
Komentáře označují místa, kde programátor udělal chybu nebo něco nedodělal.
jAkErCZ0
Stálý člen
20. 9. 2017   #45
-
0
-

#44 Kit

Však mi si budeme místo tohoto systému starého budeme dělat nový ale teď aktuálně potřebujeme aby se rozběhl a fungoval a mezi tím se bude dělat nový... který bude postaven na nette.

Nahlásit jako SPAM
IP: 94.112.128.–
Kit+15
Guru
20. 9. 2017   #46
-
0
-

#40 jAkErCZ
Je nějaká možnost aby mi to při generování ukázalo také sql který jde na db?

Vlož si na začátek metody DB::getRow($sql) logování těch SQL dotazů.

Kdybys to neměl ve statice, tak si tu databázi lehce namockuješ a otestuješ dotazy dle libosti.
 

Nahlásit jako SPAM
IP: 194.228.68.–
Komentáře označují místa, kde programátor udělal chybu nebo něco nedodělal.
Kit+15
Guru
20. 9. 2017   #47
-
0
-

#45 jAkErCZ
Z bláta do louže?

Nahlásit jako SPAM
IP: 194.228.68.–
Komentáře označují místa, kde programátor udělal chybu nebo něco nedodělal.
jAkErCZ0
Stálý člen
20. 9. 2017   #48
-
0
-

#46 Kit

Ale pro mě bude lepší když si budu logovat v xml renderu ne?

Takže si budu muset nějak zalogovat ten $row ne?

#47 Kit

Jako dost lidí mi doporučují nette a hlavně s ním umím pracovat...


Už mě přijde jednodušší aby se na to někdo podíval přímo na ftp kde k tomu bude mít vše.. jinak to asi nikdy nevyřeším což by byl velkej problém...

Nahlásit jako SPAM
IP: 94.112.128.–
Kit+15
Guru
20. 9. 2017   #49
-
0
-

#48 jAkErCZ
Dokud to řešíme veřejně, je to bezplatná konzultace. Pokud předáš klíče k FTP, je to zakázka.

BTW: Git používáš?

Nahlásit jako SPAM
IP: 194.228.68.–
Komentáře označují místa, kde programátor udělal chybu nebo něco nedodělal.
jAkErCZ0
Stálý člen
20. 9. 2017   #50
-
0
-

#49 Kit

Chápu...  ale jinak fakt nevím jak to vyřešit..

Ano git používám.

Nahlásit jako SPAM
IP: 94.112.128.–
jAkErCZ0
Stálý člen
22. 9. 2017   #51
-
0
-


Takže někdo další kdo by měl nějaký nápad? Bez opravy jsem namydlený....  

#49 Kit

K čemu si chtěl ten git??? Když už si pak nenapsal :D

Nahlásit jako SPAM
IP: 94.112.128.–
Kit+15
Guru
22. 9. 2017   #52
-
0
-

#51 jAkErCZ
Git se pro sdílení na dálku hodí mnohem lépe než FTP, protože si před začleněním oprav můžeš udělat Code review. Máš tak jistotu, že ti tam dotyčný nenapáchá nějaké nepravosti.

Mám také své starosti...

Nahlásit jako SPAM
IP: 194.228.68.–
Komentáře označují místa, kde programátor udělal chybu nebo něco nedodělal.
jAkErCZ0
Stálý člen
22. 9. 2017   #53
-
0
-

#52 Kit

No určitě poskytnu jen máš účet na https://gitlab.com jelikož git mám tam.... No hele no můj kolega ho koupil od nějakých Pražáků přesněji http://sancepodnikat.cz/ a jsou to zloději...

Jasně chápu jen sem myslel že si na mě zapomněl :D

Nahlásit jako SPAM
IP: 94.112.128.–
Kit+15
Guru
22. 9. 2017   #54
-
0
-

#53 jAkErCZ
Na Gitlabu jsem pod nickem @kitsaels, případně mailovou adresu najdeš zde v mém profilu.

Pokud jsi z Brna, můžeme se někdy i setkat.

Nahlásit jako SPAM
IP: 194.228.68.–
Komentáře označují místa, kde programátor udělal chybu nebo něco nedodělal.
jAkErCZ0
Stálý člen
22. 9. 2017   #55
-
0
-

#54 Kit

Tak jsi přidaný do projektu.... určitě se zděsíš :D 

Jinak jsem z Brna a to by nebyl špatný nápad :) si vyměníme kontakty a je to.

Nahlásit jako SPAM
IP: 94.112.128.–
Kit+15
Guru
22. 9. 2017   #56
-
0
-

#55 jAkErCZ
Koukám, že se o víkendu nudit nebudu :)

Nahlásit jako SPAM
IP: 194.228.68.–
Komentáře označují místa, kde programátor udělal chybu nebo něco nedodělal.
peter
~ Anonymní uživatel
4016 příspěvků
22. 9. 2017   #57
-
0
-

'kdo by měl nějaký nápad?'
Uz jsem ti to rikal, vypis si celou tu tabulku dotazem (pripadne vsechny pouzite v tom dotazu). Ale ne tim, co ti vyplodi ten php. Jak to dopadlo? Nic nereknes. Marny.
Tipuji, ze je tam spatne ten INNERJOIN. Nepouzivam, netusim, co to udela, pokud 2 tabulky maji stejny sloupec, treba ean. Treba to pouzije hodnotu z druhe tabulky, kde je ean prazdne.

Nahlásit jako SPAM
IP: 2001:718:2601:258:99a0:41...–
jAkErCZ0
Stálý člen
22. 9. 2017   #58
-
0
-

#56 Kit

Fakt díky :) když tam nebude lepší i osobní kontakt si na sebe dát? Třeba fb..

Nahlásit jako SPAM
IP: 94.112.128.–
Kit+15
Guru
22. 9. 2017   #59
-
+1
-
Zajímavé

#58 jAkErCZ
Poslal jsem ti mail. Snad to nějak dáme do kupy.

Nahlásit jako SPAM
IP: 194.228.68.–
Komentáře označují místa, kde programátor udělal chybu nebo něco nedodělal.
Kit+15
Guru
22. 9. 2017   #60
-
0
-

#57 peter
Ten nápad s tím duplicitním sloupcem z jiné tabulky při JOIN nemusí být marný.

Nahlásit jako SPAM
IP: 194.228.68.–
Komentáře označují místa, kde programátor udělal chybu nebo něco nedodělal.
jAkErCZ0
Stálý člen
22. 9. 2017   #61
-
0
-

#59 Kit

Prosím tě na který mail si mi to psal? :D jestli mohu poprosit tak na mail jak3r@inspire-gaming.cz.

No já v to doufám :) 

Nahlásit jako SPAM
IP: 94.112.128.–
jAkErCZ0
Stálý člen
24. 9. 2017   #62
-
0
-

#59 Kit

Psal sem ti mail, ale asi nemáš čas se na něj mrknout :)

Tak co jak to vypadá?

Nahlásit jako SPAM
IP: 94.112.128.–
peter
~ Anonymní uživatel
4016 příspěvků
26. 9. 2017   #63
-
0
-

#60 Kit - Jako, teoreticky by mohl sql dotaz pindat na duplicitni sloupce, jak to dela u spojovani pomoci LEFT JOIN. Ale to nemuzu rici, nemam vyzkouseno a bohuzel kazdy sql se chova trochu jinak pro stejne problemove dotazy.

Nahlásit jako SPAM
IP: 2001:718:2601:258:8d34:99...–
jAkErCZ0
Stálý člen
26. 9. 2017   #64
-
0
-

#59 Kit

Vím že ti do toho asi něco vlezlo ale přišel si na něco moc na mailu asi nejsi :D že? 

Nahlásit jako SPAM
IP: 94.112.128.–
Řešení
jAkErCZ0
Stálý člen
8. 10. 2017   #65
-
0
-
Vyřešeno Nejlepší odpověď

Tak jelikož se to stále nepovedlo opravit byl jsem nucen to obejít... a kontaktovat podporu heureky kteří mi udělili výjimku na EAN :)

Všem děkuji za pomoc :)

Nahlásit jako SPAM
IP: 94.112.128.–
Zjistit počet nových příspěvků

Přidej příspěvek

Toto téma je starší jak čtvrt roku – přidej svůj příspěvek jen tehdy, máš-li k tématu opravdu co říct!

Ano, opravdu chci reagovat → zobrazí formulář pro přidání příspěvku

×Vložení zdrojáku

×Vložení obrázku

Vložit URL obrázku Vybrat obrázek na disku
Vlož URL adresu obrázku:
Klikni a vyber obrázek z počítače:

×Vložení videa

Aktuálně jsou podporována videa ze serverů YouTube, Vimeo a Dailymotion.
×
 
Podporujeme Gravatara.
Zadej URL adresu Avatara (40 x 40 px) nebo emailovou adresu pro použití Gravatara.
Email nikam neukládáme, po získání Gravatara je zahozen.
-
Pravidla pro psaní příspěvků, používej diakritiku. ENTER pro nový odstavec, SHIFT + ENTER pro nový řádek.
Sledovat nové příspěvky (pouze pro přihlášené)
Sleduj vlákno a v případě přidání nového příspěvku o tom budeš vědět mezi prvními.
Reaguješ na příspěvek:

Uživatelé prohlížející si toto vlákno

Uživatelé on-line: 0 registrovaných, 22 hostů

 

Hostujeme u Českého hostingu       ISSN 1801-1586       ⇡ Nahoru Webtea.cz logo © 20032024 Programujte.com
Zasadilo a pěstuje Webtea.cz, šéfredaktor Lukáš Churý