bubu Posted June 15, 2007 Report Share Posted June 15, 2007 Kāpēc lai nebūtu labi? Ko tad atribūtos ir jāglabā? Link to comment Share on other sites More sharing options...
localhero Posted June 15, 2007 Report Share Posted June 15, 2007 Tapec ka atributi ir dati par datiem nevis pasi dati. Pasi dati butu velams glabat berna elementa. Ok ID labak butu glabat ka atributu iespejams. Link to comment Share on other sites More sharing options...
SadDemon Posted June 16, 2007 Author Report Share Posted June 16, 2007 (edited) Ir jautājums - kā lai no *.xml faila nolasa datus augošā sēcībā.. ja *.xml failā dati ir haosā.. piemēram.. *.xml saturs: <?xml version="1.0" encoding="UTF-8" standalone="no"?> <Noliktava produkcijai="----"> <product id="4" amount="27" name="vizītkaršu etvija" color="metāls" article="1602270" category="birojam" status="ir"/> <product id="1" amount="51" name="basketbola bumba" color="oranža" article="-" category="citi" status="ir"/> <product id="5" amount="3" name="vizītkaršu etvija" color="metāls" article="54756889" category="birojam" status="ir"/> <product id="20" amount="125" name="kalkulators" color="melna" article="melco" category="birojam" status="ir"/> <product id="25" amount="72" name="krūze" color="zila" article="-" category="krūzes" status="ir"/> </Noliktava> ..tikai cenšos iemācīties php.. palīdziet.. (skripts jau pavisam garām, citādi nemācēju, tāpēc jau jautāju pēc palīdzības) un *.php saturs: <?php $id = 1; $count = 500; $doc = new DOMDocument; $doc -> load('../xml/depot.xml'); while ($id <= $count) { $product = $doc->getElementsByTagName('product') -> item($id++); $attributeNode = $product->getAttributeNode('id'); echo $attributeNode->value."\n"; } ?> ..outputs šim ir 1 5 20 25; ..bet kur pazūd elements ar id attribūtu "4", kas ir pirmajā rindiņā? ..lūdzu pamāciet, palīdziet!!! Edited June 16, 2007 by SadDemon Link to comment Share on other sites More sharing options...
Val Posted June 16, 2007 Report Share Posted June 16, 2007 Tas, ka esi sarakstījis vairākas izsaukuma zīmes, šo lietu nepaātrinās. Link to comment Share on other sites More sharing options...
bubu Posted June 16, 2007 Report Share Posted June 16, 2007 Gan jau, ka item() funkcijai skaitļi jāpadod sākot no 0, nevis 1, kā jau datoram pieņems referencēties uz masīvu (tas skaita no 0, nevis 1). Palasi taču manuāli pirms kautko prasi. Tur ir ar visiem piemēriem: http://lv.php.net/manual/en/function.dom-d...delist-item.php Link to comment Share on other sites More sharing options...
SadDemon Posted June 16, 2007 Author Report Share Posted June 16, 2007 ..atvainojos! Mana kļūda.. Link to comment Share on other sites More sharing options...
SadDemon Posted June 16, 2007 Author Report Share Posted June 16, 2007 (edited) ..un tomēr lūgšu palīdzēt - kā varētu dabūt produktu "id" augošā secībā.. itkā lai meklē produktu ar "id - 1", ja atrod, tad echo "Ir"; .. ja neatrod, tad "$i++", tobiš - atgriezjas funkcijas augšgalā un meklē produktu ar "id - 2".. u.t.t. Doma ir gala rezultāta dabūt *.php, kas pārkārtotu produktus (meklētu pa vienam, ja atrastu.. ierakstītu citā *.xml failā, tādā veidā veidotos augoša secība; kad funkcija izsīkusi, pārkopētu sakārtoto *.xml failu pa virsu oriģinālam un iztukšotu sevi).. Tākā manas php zināšanas ir ļoti aprobežotas, iespējams stipri kļūdos.. tad vēlētos uzzināt kādu metodi, kā sakārtot *.xml failu.. Edited June 16, 2007 by SadDemon Link to comment Share on other sites More sharing options...
bubu Posted June 16, 2007 Report Share Posted June 16, 2007 Tajā masīvā nevis drukā ārā elementus, bet liec xml nodes asociatīvajā masīvā, kā atsēgu liekot $id: $mas = array(); ... ciklā: $mas[$id] = $node; Pēc tam, kad cikls būs pabeidzies, sakārot masīvu (ksort) un tad drukā ārā visu pēc kārtas no masīva. Link to comment Share on other sites More sharing options...
SadDemon Posted June 16, 2007 Author Report Share Posted June 16, 2007 (edited) ..nesapratu par to "asociatīvo masīvu".. varētu lūdzu paskaidrot sīkāk vai kādu piemēru, kā "attributeNode -> value" dabūt iekš array(); vai kā? Esmu pavisam apjucis un samurgojis k-ko galīgi garām, bet nu dabūnu ārā "id".. *.php saturs: <?php $doc = new DOMDocument; $doc -> load('../xml/depot.xml'); $count = 0; for ($i = 0; $i <= 500; $i++) { $el = $doc -> getElementsByTagName('product'); foreach($el as $element) { if($element -> getAttribute('id') == $i) { $attributeNode = $el -> item($count++) -> getAttributeNode('id'); echo $attributeNode -> value."\n"; break; } } } ?> iepriekš paldies.. Edited June 16, 2007 by SadDemon Link to comment Share on other sites More sharing options...
bubu Posted June 16, 2007 Report Share Posted June 16, 2007 ..nesapratu par to "asociatīvo masīvu".. varētu lūdzu paskaidrot sīkāk vai kādu piemēru, kā "attributeNode -> value" dabūt iekš array(); vai kā? Es jau piemēru parādīju: ciklā: $mas[$id] = $node; Link to comment Share on other sites More sharing options...
SadDemon Posted June 16, 2007 Author Report Share Posted June 16, 2007 Saprotu jau, ka Tev tas šķiet pietiekami izsmeļoši.. bet tomēr tādam muļķim kā es tas vēl neko neizsaka.. Kā jau visu laiku atkārtoju.. cenšos iemācīties php, bet ne viss padodas tik vienkārši (diemžēl).. Paldies tik un tā.. (ceru arī uz izsmeļošāku paraugu) Link to comment Share on other sites More sharing options...
bubu Posted June 16, 2007 Report Share Posted June 16, 2007 $mas = array(); // ej cauri ar for/while/whatever kā savam xml'am un savāc nodes masīvā for (...) { $id = ...; $node = ...; $mas[$id] = $node; } // tagad viss ir sabāzts masīvā, vajag sakārtot to ar ksort ksort(...); // tagad masīvs ir sakārtots, izvadi visus elementus no masīva pēc kārtas for (...) { echo ...; } Un tagad vēlreiz paskaties uz manu to iepriekšējo postu. Vai tur nav tas pats uzrakstīts, tikai cilvēkam izlasāmā valodā? Link to comment Share on other sites More sharing options...
SadDemon Posted June 16, 2007 Author Report Share Posted June 16, 2007 ..lūdzu pālīdziet, pielabojiet skriptu.. *.xml saturs: <?xml version="1.0" encoding="UTF-8" standalone="no"?> <Noliktava produkcijai="----"> <product id="4" amount="27" name="vizītkaršu etvija" color="metāls" article="1602270" category="birojam" status="ir"/> <product id="1" amount="51" name="basketbola bumba" color="oranža" article="-" category="citi" status="ir"/> <product id="5" amount="3" name="vizītkaršu etvija" color="metāls" article="54756889" category="birojam" status="ir"/> <product id="20" amount="125" name="kalkulators" color="melna" article="melco" category="birojam" status="ir"/> <product id="25" amount="72" name="krūze" color="zila" article="-" category="krūzes" status="ir"/> </Noliktava> *.php, kas nedarbijas: <?php $doc = new DOMDocument; $doc -> load('../xml/depot.xml'); $mass = array(); $length = $doc -> getElementsByTagName('product'); for ($i = 0; $i < $length -> length; $i++) { $product = $doc -> getElementsByTagName('product') -> item($i); $attributeNode = $product->getAttributeNode('id'); $id = $attributeNode; $node = $product; $mass['$id'] = $node; } ksort($mass); foreach ($mass['$id'] as $output) { echo $output."<br>"; } ?> Link to comment Share on other sites More sharing options...
bubu Posted June 16, 2007 Report Share Posted June 16, 2007 Tev arī jāizlasa šis teksts: http://www.catb.org/~esr/faqs/smart-questions.html#beprecise Izlasi sev kļūdas paziņojumu. Tajā viss ir teikts. Hints: paskaties manuālī ksort funkcijas exampli. Link to comment Share on other sites More sharing options...
SadDemon Posted June 16, 2007 Author Report Share Posted June 16, 2007 ..nav nedz kļūdas paziņojuma, nedz rezultāta.. output ir tukšs.. Link to comment Share on other sites More sharing options...
Recommended Posts