SadDemon Posted June 14, 2007 Author Report Posted June 14, 2007 Vai priekš php 4 versijas būs pareizi? - <?php $id = $_POST['id']; $doc = new DOMDocument; $doc -> load('depot.xml'); $el = $doc -> get_elements_by_tag_name('product'); foreach($el as $element) { if($element -> get_attribute('id') == $id) { $element -> parent_node -> remove_child($element); break; } } $doc -> save("depot.xml"); ?> Neesmu necik zinošs iekš php, tāpēc lūdzu pielabojiet, paīdziet pārveidot.. lai darbotos uz php 4 versijas.. Jau iepriekš pateicos..
bubu Posted June 14, 2007 Report Posted June 14, 2007 Ir vēl jautājums - vai šī darbība, dzēšot datus - varētu nedarboties uz vecākas php vai msql bāzes.. jo testējot localhostā, kur man jaunākās mysql un php versijas - viss darbojas, bet augšuplādēts uz awardspace.com, kur ir ceturtās versijas - nedarbojas.. Vienmēr vajag lapu testēt uz tādas pašas php/mysql/apache/sazin-kā-tur-vēl versijas kāda ir uz paredzētā hostēšanas servera.
SadDemon Posted June 14, 2007 Author Report Posted June 14, 2007 Lūdzu palīdziet ar xml dom metodi php 4 versijai.. esmu visādi izmēģinājis, bet k-kur ir kļūda.. palīdziet tak! <?php $id_old = $_POST['id_old']; $id = $_POST['id']; $amount = $_POST['amount']; $name = $_POST['name']; $color = $_POST['color']; $article = $_POST['article']; $category = $_POST['category']; $status = $_POST['status']; $doc = domxml_new_doc("1.0"); $doc -> domxml_open_file("../xml/depot.xml"); $el = $doc -> get_elements_by_tag_name('product'); foreach($el as $element) { if($element -> get_attribute('id') == $id_old) { $element -> parent_node -> remove_child($element); break; } } $doc -> dump_file("../xml/depot.xml", false, true); $myXML = "../xml/depot.xml"; $content = file_get_contents($myXML); $content = preg_replace("/(^[\r\n]*|[\r\n]+)[\s\t]*[\r\n]+/", "\n", $content); $ending = "</Noliktava>"; $content = substr($content, 0, strpos($content,$ending)-1); $newData = " <product id=\"".$id."\" amount=\"".$amount."\" name=\"".$name."\" color=\"".$color."\" article=\"".$article."\" category=\"".$category."\" status=\"".$status."\"/> ".$ending; $content.=$newData; $fHandle = fopen($myXML, "w+"); fwrite($fHandle, $content); fclose($fHandle); ?>
bubu Posted June 14, 2007 Report Posted June 14, 2007 error_reporting(E_ALL); ini_set('display_errors', 1); Un tikai pēc tam mēs ar tevi runāsim ;)
GedroX Posted June 14, 2007 Report Posted June 14, 2007 ..un ver vaļā iekš IE, jo FF man liekās automātiski dzēsa PHP kļūdas laukā. :P
andrisp Posted June 14, 2007 Report Posted June 14, 2007 GedroX, FF tā nedara. Bet kļūdas vizuāli nav redzamas, ja tās tiek izdrukātas, piem., iekš html emeneta atribūta. Source kodā gan to redz.
SadDemon Posted June 15, 2007 Author Report Posted June 15, 2007 Kā varētu nodzēst visu *.xml faila saturu, tobiš produktus? (..iepriekš dzēsu konkrētu produktu pēc "id") *.xml faila saturs: <?xml version="1.0" encoding="UTF-8" standalone="no"?> <Noliktava produkcijai="----"> <product id="8" amount="24" name="šķiltavas" color="metāls" article="topico" category="šķiltavas" status="ir"/> <product id="10" amount="10" name="pulkstenis" color="sudraba" article="0401040" category="pulksteņi" status="ir"/> </Noliktava> un *.php faila saturs: <?php $id = $_POST['id']; $doc = new DOMDocument; $doc -> load('../xml/depot.xml'); $el = $doc -> getElementsByTagName('product'); foreach($el as $element) { if($element -> getAttribute('id') == $id) { $element -> parentNode -> removeChild($element); break; } } // u.t.t. ..palīdziet, pamāciet nelaimīgu cilvēku, kas cenšas k-ko iemācīties.. Paldies arī par iepriekšējo norādījumu, kā kļūdas apskatīt (tagad visi gudrie smejas); jautājums - kam vajadzīgs tas error_reporting(E_ALL); ini_set('display_errors', 1); ..? (Lietoju Opera browser, kļūdas tāpat arī rāda, ja tādas ir);
andrisp Posted June 15, 2007 Report Posted June 15, 2007 Tā error_re... rindiņa ir, lai PHP rādītu kļūdas PHP kodā. Tam nav nekāda sakara ar to kādu pārlūku izmanto.
SadDemon Posted June 15, 2007 Author Report Posted June 15, 2007 (edited) ..nu Opera rāda kļūdas arī bez tā error_reporting(E_ALL); Jautājums, ja atkārtoju funkciju ar "while" un atkārtojumu skaits ir.. nu piemēram līdz 500.. $el = $doc -> getElementsByTagName('product'); while ($id <= $count) { foreach($el as $element) { if($element -> getAttribute('id') == $id) { $element -> parentNode -> removeChild($element); break; } } $id++; } ..vai pastāv k-kādi servera puses ierobežojumi, intervāli.. vienuvārd sakot - pastāv vai nepastāv iespēja, ka viss varētu nokārties vai kā tamlīdzīgi? ..iepriekš - paldies! Edited June 15, 2007 by SadDemon
localhero Posted June 15, 2007 Report Posted June 15, 2007 Nav labak partaisit strukturu xml`am lai nav jachakarejas ar atributiem ? Piemeram: <Noliktava> <produkts> <id>1</id> <amount>2341</amount> <name>metals</name> </produkts> <produkts> <id>2</id> <amount>555</amount> <name>sarkans</name> </produkts> </noliktava>
SadDemon Posted June 15, 2007 Author Report Posted June 15, 2007 - > localhero ..nav jau problēmu ar atribūtiem, ..viss darbojas bez problēmām (vajag izlasīt par ko ir runa)..
localhero Posted June 15, 2007 Report Posted June 15, 2007 Tas jau labi ka vis iet. Es tikai noradiju ka vertibas glabat atributos nav labi.
Recommended Posts