PHP záznam v cyklu – PHP – Fórum – Programujte.com
 x   TIP: Přetáhni ikonu na hlavní panel pro připnutí webu
Reklama
Reklama

PHP záznam v cyklu – PHP – Fórum – Programujte.comPHP záznam v cyklu – PHP – Fórum – Programujte.com

 

Hledá se programátor! Plat 1 800 € + bonusy (firma Boxmol.com)
Aricak
~ Anonymní uživatel
48 příspěvků
15. 1. 2014   #1
-
0
-

Dobrý den trápím se tady s natáhnutím dat z MS SQL databaze a po porvedení nějakých výpočtů je ukládám do mysql DB. Mám takovýhle script viz níže, ale smyčka se ukončí při uložení 1. záznamu do mysql db a pak se nic nezaznamená. Jsem začátečník v php a nevím si rady. Děkuji za vaše odpovědi.

 Tady je select z MS SQL db.

<?php 
 
include "loginmssql.php";

$sql = "SELECT 
              z.ID,
      			  z.Nazev1,
      			  z.Nazev2,
      			  z.Nazev3,
      			  z.Nazev4,
      			  z.Poznamka,
      			  z.RegCis,
      			  z.SKP,
      			  z.Hmotnost,
      			  z.Vykres,
      			  z.Hloubka,
      			  z.Vyska,
      			  z.Sirka,
      			  z.MJEvidence,
              z.IDSortiment,
            
              z.Obrazek_BGJ,
              
              s.ID AS SID,
              s.IDNadrazene,
              s.K1,
              s.K2,
              s.K3,
              s.K4,
              s.K5,
              s.Nazev AS SNazev,
              s.Autor,
              s.DatZmeny,
              s.BlokovaniEditoru,
              s.KatAlltecky,
                           
              n.IDkmenZbozi,
              n.CenovaUroven,
              n.CenaKC,
              n.IDZboSklad,
              n.BezDPH
                                          
              
    FROM 
        TabSortiment s, TabKmenZbozi z 
    JOIN
        TabNC n ON n.IDkmenZbozi=z.ID
     WHERE z.IdSortiment IS NOT NULL AND n.CenovaUroven=1
     
		";

$qry = sqlsrv_query($conn, $sql);

?>

Tady je script kerý zaznamenáva do MYSQL db.

<?php 
include "loginmysql.php";
include "definice.php";
include "image.php";
include "charset.php";

$preflix = "pmrd8_";


//Příprava tabulek
//nastavení UTF-8
mysql_query("SET CHARACTER SET utf8")
or die("Nelze vykonat definiční dotaz: " . mysql_error());

//vyprázdnění tabulky virtuemart_products
mysql_query("TRUNCATE TABLE ". $preflix ."virtuemart_products")
or die("Nelze vykonat definiční dotaz: " . mysql_error());

//vyprázdnění tabulky virtuemart_products_cs_cz
mysql_query("TRUNCATE TABLE ". $preflix ."virtuemart_products_cs_cz")
or die("Nelze vykonat definiční dotaz: " . mysql_error());

//vyprázdnění tabulky virtuemart_products_en_gb
mysql_query("TRUNCATE TABLE ". $preflix ."virtuemart_products_en_gb")
or die("Nelze vykonat definiční dotaz: " . mysql_error());

//vyprázdnění tabulky virtuemart_product_prices                                               
mysql_query("TRUNCATE TABLE ". $preflix ."virtuemart_product_prices")
or die("Nelze vykonat definiční dotaz: " . mysql_error());

//vymazání tabulky virtuemart_medias kde je přiřazen product
mysql_query("DELETE FROM ". $preflix ."virtuemart_medias WHERE file_type='product'")
or die("Nelze vykonat definiční dotaz: " . mysql_error());

//vyprázdnění tabulky virtuemart_product_medias zde jsou přiřazeny obrázky podle ID k produktům zase podle ID
mysql_query("TRUNCATE TABLE ". $preflix ."virtuemart_product_medias")
or die("Nelze vykonat definiční dotaz: " . mysql_error());

//vyprázdnění tabulky virtuemart_product_customfields, zde jsou uloženy data např.: samolepka-> modra, zelena, oranžova, a jejich ceny
mysql_query("TRUNCATE TABLE ". $preflix ."virtuemart_product_customfields")
or die("Nelze vykonat definiční dotaz: " . mysql_error());

//příprava tabulek Categories
//vyprázdnění tabulky virtuemart_categories
mysql_query("TRUNCATE TABLE ". $preflix ."virtuemart_categories")
or die("Nelze vykonat definiční dotaz: " . mysql_error());

//vyprázdnění tabulky virtuemart_categories_cs_cz
mysql_query("TRUNCATE TABLE ". $preflix ."virtuemart_categories_cs_cz")
or die("Nelze vykonat definiční dotaz: " . mysql_error());
         
//vyprázdnění tabulky virtuemart_categories_en_gb
mysql_query("TRUNCATE TABLE ". $preflix ."virtuemart_categories_en_gb")
or die("Nelze vykonat definiční dotaz: " . mysql_error());

//vyprázdnění tabulky virtuemart_category_categories
mysql_query("TRUNCATE TABLE ". $preflix ."virtuemart_category_categories")
or die("Nelze vykonat definiční dotaz: " . mysql_error());
                                   
//vyprázdnění tabulky virtuemart_category_medias
mysql_query("TRUNCATE TABLE ". $preflix ."virtuemart_category_medias")
or die("Nelze vykonat definiční dotaz: " . mysql_error());
                                   
//zápis dat z Heliosu do virtuemart
//zápis virtuemart_products
  


   $loop=0;
 while($zaznam=sqlsrv_fetch_array($qry, SQLSRV_FETCH_ASSOC)) {
   $loop++;
   if($loop>10) {
   break;
 }


 
  //Definice pevných proměnných
  //DPH21%
  $dph21 = "1";
  //prodejce
  $vendor_id = "1";
  $index_follow = "index, follow";
  $datum = Date ("Y-m-d H:i:s");  //a kdy
  $modified_user = "1";  //uživatel ketrý provedl změnu
  $null = "NULL";
  
  
  //tabulka virtuemart_products
  $vm_prod_virtuemart_product_id = $zaznam['ID'];
  $vm_prod_virtuemart_vendor_id = $vendor_id;
  $vm_prod_product_parent_id = $null;
  $vm_prod_product_sku = $zaznam['SKP'];
  $vm_prod_product_weight = $zaznam['Hmotnost'];
  $vm_prod_product_weight_uom = substr($zaznam['Vykres'], 7, 2);
  $vm_prod_product_length = $zaznam['Hloubka'];
  $vm_prod_product_width = $zaznam['Sirka'];
  $vm_prod_product_height = $zaznam['Vyska'];
  $vm_prod_product_lwh_uom = substr($zaznam['Vykres'], 0, 2);
  $vm_prod_product_url = $null;
  $vm_prod_product_in_stock = $null; 
  $vm_prod_product_ordered = $null;
  $vm_prod_low_stock_notification = "0";
  $vm_prod_product_available_date = "0";
  $vm_prod_product_availability = "available.png";
  $vm_prod_product_special = "0";
  $vm_prod_product_sales = "0";
  $vm_prod_product_unit = $zaznam['MJEvidence'];
  $vm_prod_ordering = "1";
  $vm_prod_product_packaging = "1";
  $vm_prod_product_params = "min_order_level=\"\"|max_order_level=\"\"|product_box=\"\"|";
  $vm_prod_hits = "0";
  $vm_prod_intnotes = "0";
  $vm_prod_metarobot = $index_follow;
  $vm_prod_metaauthor = "";
  $vm_prod_layout = "1";
  $vm_prod_published = "1";
  $vm_prod_created_on = $datum;
  $vm_prod_created_by = $modified_user;
  $vm_prod_modified_on = $datum;
  $vm_prod_modified_by = $modified_user;
  $vm_prod_locked_on = $null;
  $vm_prod_locked_by = $null;
   
 
// zápis do tabulky virtuemart_products
if(!mysql_query("INSERT INTO ". $preflix ."virtuemart_products (
          virtuemart_product_id, 
          virtuemart_vendor_id, 
          product_parent_id, 
          product_sku, 
          product_weight, 
          product_weight_uom, 
          product_length, 
          product_width, 
          product_height, 
          product_lwh_uom, 
          product_url, 
          product_in_stock, 
          product_ordered, 
          low_stock_notification, 
          product_available_date, 
          product_availability, 
          product_special, 
          product_sales, 
          product_unit, 
          pordering, 
          product_packaging, 
          product_params, 
          hits, 
          intnotes, 
          metarobot, 
          metaauthor, 
          layout, 
          published, 
          created_on, 
          created_by, 
          modified_on, 
          modified_by, 
          locked_on, 
          locked_by) 
	VALUES (
          '$vm_prod_virtuemart_product_id', 
          '$vm_prod_virtuemart_vendor_id', 
          '$vm_prod_product_parent_id', 
          '$vm_prod_product_sku', 
          '$vm_prod_product_weight', 
          '$vm_prod_product_weight_uom', 
          '$vm_prod_product_length', 
          '$vm_prod_product_width', 
          '$vm_prod_product_height', 
          '$vm_prod_product_lwh_uom', 
          '$vm_prod_product_url', 
          '$vm_prod_product_in_stock', 
          '$vm_prod_product_ordered ', 
          '$vm_prod_low_stock_notification', 
          '$vm_prod_product_available_date', 
          '$vm_prod_product_availability', 
          '$vm_prod_product_special', 
          '$vm_prod_product_sales', 
          '$vm_prod_product_unit', 
          '$vm_prod_ordering', 
          '$vm_prod_product_packaging', 
          '$vm_prod_product_params', 
          '$vm_prod_hits', 
          '$vm_prod_intnotes', 
          '$vm_prod_metarobot', 
          '$vm_prod_metaauthor', 
          '$vm_prod_layout', 
          '$vm_prod_published', 
          '$vm_prod_created_on', 
          '$vm_prod_created_by', 
          '$vm_prod_modified_on', 
          '$vm_prod_modified_by', 
          '$vm_prod_locked_on', 
          '$vm_prod_locked_by'
            )")) 
  {
  echo "nepodařil se zápis do tabulky virtuemart_products"."<br />";
  }

}
 
Nahlásit jako SPAM
IP: 109.235.7.–
Reklama
Reklama
nahňácanina
~ Anonymní uživatel
2 příspěvky
20. 1. 2014   #2
-
0
-

A jak jsi pokročil při odlaďování? Co ti to píše za chybové hlášky?

Nahlásit jako SPAM
IP: 213.151.77.–
peter
~ Anonymní uživatel
2528 příspěvků
21. 1. 2014   #3
-
+1
-
Zajímavé

U posledniho dotazu nemas vypis mysql_error() v else podmince. Kazdopadne, jake to pise dalsi chyby? Mas tam error_reporting povolene?

Nahlásit jako SPAM
IP: 2001:718:2601:400:0:5efe:...–
Kit+11
Guru
21. 1. 2014   #4
-
0
-

#3 peter
Větev else je přežitek. Nemá se používat a v některých programovacích jazycích ani není.

Nahlásit jako SPAM
IP: 195.113.151.–
Komentáře označují místa, kde programátor udělal chybu nebo něco nedodělal.
peter
~ Anonymní uživatel
2528 příspěvků
21. 1. 2014   #5
-
0
-

Kit - to ma v jeho kodu. Ja jen, ze vsude jinde ma "or die mysql_error", ale na poslednim radku zrovna ne.

Proti else nic nemam, sam to pouzivam. Nevidim duvod, proc to nejak zakazovat. Jak jinak chces resit treba
if (podminka) {funkce1();} else {funkce2();} ?
Takovy jazyk neznam, kde neni. Pokud se to primo nejmenuje else, tak je tam nejaky symbol. Ale else mi prijde dost proflaknute na to, aby nekdo pouzival nove extra slovo jen pro vyjadreni else.

Nahlásit jako SPAM
IP: 2001:718:2601:400:0:5efe:...–
Kit+11
Guru
21. 1. 2014   #6
-
0
-

#5 peter
Například v XSLT není else ani žádná náhrada. 

<?php
$vysledek = podminka ? funkce1() : funkce2();

Netvrď mi, že tohle není jednodušší.

Nahlásit jako SPAM
IP: 46.174.34.–
Komentáře označují místa, kde programátor udělal chybu nebo něco nedodělal.
Ericsko+3
Stálý člen
21. 1. 2014   #7
-
0
-

#6 Kit
ternarny operator je skutocne super vec, ale len na simple veci.

akonahle mas riesit nejake komplexnejsie porovnavanie, tak if-else je co sa prehladnosti a funkcnosti tyka asi najlepsia volba

Nahlásit jako SPAM
IP: 88.212.34.–
Kit+11
Guru
21. 1. 2014   #8
-
0
-

#7 Ericsko
Čím víc se vyhýbám else, cyklům a případně i samotným ifům, tím se mi mé programy líbí víc. Navíc jsou i kratší a rychlejší. Ternární operátor používám jen na jednoduché věci - nic totiž není potřeba dělat složitě.

Dokonce ani nepoužívám "or die()" - je to přežitek, který je úplně zbytečný a nachází se už jen v zastaralých učebnicích. Přece nechci, aby mi skript chcípl, když se vyskytne nějaká chyba.

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

or die pouzivam u mysql dotazu. Funkci mam obalenou vlastni funkci, kterou na jednom miste snadno zakomentuji a odkomentuji jinou pro debug mod.

if else se vyhybam taky. Spousta veci jde resit pres pole nebo jinak. Ale to jeste neznamena, ze ho uplne zazdim.

XSLT - nepouzivam, je to derave, furt nekde vidim hlasky, ze opravena dira v XSLT :)

Nahlásit jako SPAM
IP: 2001:718:2601:400:0:5efe:...–
Kit+11
Guru
22. 1. 2014   #10
-
0
-

#9 peter
Debug nepotřebuji a nepotřebuji ani zakomentovávat. Na to mám testy.

or die způsobí pád aplikace. To nepotřebuji.

XSLT - co je na něm děravé? Zajímá mě to.

Nahlásit jako SPAM
IP: 195.113.151.–
Komentáře označují místa, kde programátor udělal chybu nebo něco nedodělal.
Aricak
~ Anonymní uživatel
48 příspěvků
11. 2. 2014   #11
-
0
-

Kluci děkuji za reakci, ale zjistil jsem, že veškeré problémy byly špatným dotazem na MS SQL DB... teď script funguje skvěle. Děkuji za reakce.

Nahlásit jako SPAM
IP: 109.235.7.–
Aricak
~ Anonymní uživatel
48 příspěvků
11. 2. 2014   #12
-
0
-

A v dnešní době je script přepracovaný a vylepšený :-D

Nahlásit jako SPAM
IP: 109.235.7.–
Aricak0
Newbie
11. 2. 2014   #13
-
0
-

Jak se tento příspěved dá označit za "vyřešeno"????

Nahlásit jako SPAM
IP: 109.235.7.–
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, 36 hostů

Podobná vlákna

Minutový záznam — založil Matěj Andrle

Záznam obrazovky — založil ospaly.stanislav

 

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