_siikais_ Posted January 19, 2009 Report Share Posted January 19, 2009 Tā kā no XML es nezinu neko, un pēdējas divas naktis ir pagājušas neguļot un cīnoties atrast risinājumu, bet bez rezultātiem. Tad lūgšu izpalīdzēt... XML struktuura <list> <item id="1" name="recepte_kautkam"> <receptes id="1666" liimenis="1" /> <mainiigais_x /> <summa>30</summa> <iznakums>100%</iznakums> <produkts id="17" daudzums="500" /> <sastavdalja id="1864" daudzums="4" /> <sastavdalja id="1869" daudzums="2" /> </item> <item id="2" name="recepte_kautkam2"> <receptes id="1786" liimenis="1" /> <mainiigais_y /> <summa>30</summa> <iznakums>100%</iznakums> <produkts id="3" daudzums="1" /> <sastavdalja id="2005" daudzums="1" /> <sastavdalja id="1869" daudzums="18" /> <sastavdalja id="1870" daudzums="18" /> </item> .... </list> Sādus ierakstus vajag dabūt ieksh MySql Databaazes divām tabulām CREATE TABLE IF NOT EXISTS `recepte` ( `id` int(11) NOT NULL, -- te ierakstās <item id="1"> `name` varchar(50) NOT NULL, -- te ierakstas <item name="recepte_kautkam"> `receptesid` int(11) NOT NULL, -- te ierakstas <receptes id="1666"> `recepteslvl` int(11) NOT NULL, -- te ierakstas <receptes liimenis="1" /> `mainiigais` varchar(50) NOT NULL, -- te ierakstas <mainiigais_x /> vinjsh varbuut kaa dazhaads teksts `summa` int(11) NOT NULL, -- te ierakstas <summa>30</summa> `iznakums` varchar(50) NOT NULL, -- te ierakstas <iznakums>100%</iznakums> `produktaid` int(11) NOT NULL, -- te ierakstas <produkts id="3"> `produktadaudzums` int(11) NOT NULL -- te ierakstas <produkts daudzums="1" /> ) ENGINE=MyISAM DEFAULT CHARSET=latin1; CREATE TABLE IF NOT EXISTS `sastavdaljas` ( `id` int(11) NOT NULL, -- te ierakstās <item id="1"> `sastavdaljasid` int(11) NOT NULL, -- te ierakstas <sastavdalja id="2005" > `sastavdaljasdaudzums` int(11) NOT NULL -- te ierakstas <sastavdalja daudzums="1" /> ) ENGINE=MyISAM DEFAULT CHARSET=latin1; Šajās tabulās saistītie lauki ir id... Cik esmu lūkojies pamācībās, tad secinājums ir radies, ka nebūt nav šis no vieglākajiem uzdevumiem. Link to comment Share on other sites More sharing options...
bubu Posted January 19, 2009 Report Share Posted January 19, 2009 Lieto SimpleXML, tad uzdevums būs gan no vieglākajiem: $xml = simplexml_load_file("fails.xml"); foreach ($xml->item as $item) { $id = $item["id"]; $receptesid = $item->receptes["id"]; $recepteslvl = $item->receptes["liimenis"]; $summa = $item->summa; $iznakums = $item->iznakums; $produktaid = $item->produkts["id"]; $produktadaudzums = $item->produkts["daudzums"]; $mainiigais = ""; foreach ($item->children() as $k=>$v) { if (strpos($k, "mainiigais") === 0) { $mainiigais = substr($k, strlen("mainiigais")); } else if ($k == "sastavdalja") { $sastavdaljasid = $v["id"]; $sastavdaljasdaudzums = $v["daudzums"]; mysql_query("INSERT INTO sastavdaljas VALUES ($id, sastavdaljasid, $astavdaljasdaudzums)"); } } mysql_insert("INSERT INTO recepte VALUES (... te saliec visas vajadzīgās vērtības ...)"); } (rakstīju bez nekādas reālas koda pārbaudes, pielabo kļūdas pats) Link to comment Share on other sites More sharing options...
xPtv45z Posted January 19, 2009 Report Share Posted January 19, 2009 http://lv.php.net/manual/en/book.simplexml.php Link to comment Share on other sites More sharing options...
_siikais_ Posted January 19, 2009 Author Report Share Posted January 19, 2009 bubu paldies tev, visaa visumaa skripts stradaa, vieniigi paaris siikumi else if ($k == "sastavdalja") { $sastavdaljasid = $v["id"]; $sastavdaljasdaudzums = $v["daudzums"]; mysql_query("INSERT INTO sastavdaljas VALUES ($id, sastavdaljasid, $astavdaljasdaudzums)"); } shii dalja panjem tikai vienu sastaavdalju un taalaak neko neizvada, kaut gan sastavdaljas ir vairakas. kaa arii if (strpos($k, "mainiigais") === 0) { $mainiigais = substr($k, strlen("mainiigais")); } iznjemeu aaraa, jo tajaa vietaa kur noraada mainiigais var buut dajebkas piemeeram <suns/> vai <kakjis/> vai <pele/>. tur nau konstants mainiigais... Link to comment Share on other sites More sharing options...
bubu Posted January 19, 2009 Report Share Posted January 19, 2009 shii dalja panjem tikai vienu sastaavdalju un taalaak neko neizvada, kaut gan sastavdaljas ir vairakas. Kā vienu? Tas tak ir ciklā, uz katru pa vienu reizi izpildīsi to if zaru. iznjemeu aaraa, jo tajaa vietaa kur noraada mainiigais var buut dajebkas piemeeram <suns/> vai <kakjis/> vai <pele/>. tur nau konstants mainiigais... Ah, nu tad salīdzini $k uz visiem zinājiem citiem tagu vārdiem (summa, receptes, iznakums, ...) un, ja tas nav to starpā, tikai tad izpildi to piešķiršanu. Link to comment Share on other sites More sharing options...
_siikais_ Posted January 19, 2009 Author Report Share Posted January 19, 2009 (edited) nu es testeeju visiem ar echo nevis uzreiz pa tieshu insert ieksh db, un vinjsh tikai vienu receptes sastaavdalju izvada... kautgan sastaavdaljas ir 2 <sastavdalja id="1864" daudzums="4" /> <sastavdalja id="1869" daudzums="2" /> ups par maz miega... :) nepareizu mainiigo sastaavdaljai iedevu... Edited January 19, 2009 by _siikais_ Link to comment Share on other sites More sharing options...
Recommended Posts