Jump to content
php.lv forumi

Citiem viegli.. citiem nee..


SadDemon

Recommended Posts

Xml faila struktūra:

 

Noliktava produkcijai="----">
<product id="1" amount="51" name="basketbola bumba" color="oranža" article="-" category="citi" status="ir" />
<product id="2" amount="7" name="vizītkaršu etvija" color="metāls" article="50042" category="birojam" status="ir" />
<product id="3" amount="25" name="vizītkaršu etvija" color="metāls" article="ap802301" category="birojam" status="ir" />
<product id="4" amount="27" name="vizītkaršu etvija" color="metāls" article="1602270" category="birojam" status="ir" />
</Noliktava>

 

Ļoti nepieciešams *.php skripts, kas nodzēstu konkrētu produktu.. vadoties pēc "id" atribūta..

 

 

..tik tiko esmu php iesācējs.. lai zinošāki cilvēki pielabo; *.php saturs ir:

 

<?php

$id = $_POST['id'];

$doc = new DOMDocument;
$doc->load('../xml/depot.xml');

$Noliktava = $doc->documentElement;
$product = $Noliktava->getElementById($id);

$oldproduct = $Noliktava->removeChild($product);

echo $doc->saveXML();

?>

 

..bet nu nekādi nedarbojas.. lūdzu palīdziet!

 

Jau ieprieksh pateicos..

Edited by SadDemon
Link to comment
Share on other sites

  • Replies 81
  • Created
  • Last Reply

Top Posters In This Topic

..njā, bet tik un tā nedarbojas.. vai iespējams, ka getElementById ir kļūdaini izpildīts.. vajadzētu, lai sameklē produktu pēc postētā id no flash, kas *.xml failaa ir "product" atribūts..

 

..ļoti vajadzīga palīdzība!

Edited by SadDemon
Link to comment
Share on other sites

Neesmu ar DOM strādājis, bet 5min izlasīju dokumentāciju un:

 

1) Nevis id="...", bet gan xml:id="..."

2) Id nevar sākties ar ciparu

3) getElementById jāizsauc dokumentam nevis Noliktava elementam

4) Un vēl iepriekšminētais $product->parentNode->removeChild($product)

 

Un vēl

5) Kas tas par nosaukumu topikam?

6) Ieslēdz, lai kļūdas PHP izvada. Vismaz man jau pie getElementById izleca.

7) Iemācies lasīt php.net dokumentāciju.

8) XML failam ir nodefinēts enconding-s?

Edited by GedroX
Link to comment
Share on other sites

Paldies par ievirzīšanu sliedēs.. lieta tik viena - laiks iet un tāpēc tā steidzos un lūdzu..

 

*.xml encoding ir.. un jautājums - kāpēc "id" nevar sākties ar ciparu? (šajā gadījuma tas arī tiek izmantots iekš flash datagrid komponentā kā cipars)

Link to comment
Share on other sites

Kāpēc xHTML elementiem id nevar sākties ar ciparu? Kāpēc mainīgie nevar sākties ar ciparu? Grūti pateikt. Tā pieņemts. Laikam no laika gala, kad programmēšanas valodām bija jāatšķir skaitļi no mainīgajiem. Vismaz underscore pieliec priekšā, kaut arī tas nav priekš id ieteicams.

Edited by GedroX
Link to comment
Share on other sites

$id = 3;
$doc = new DOMDocument;
$doc->load('t.xml');
$el = $doc -> getElementsByTagName('product');
foreach($el as $element)
{
if($element -> getAttribute('id') == $id)
{
	$element -> parentNode -> removeChild($element);
	break;
}
}
echo '<pre>'.htmlentities($doc->saveXML()).'</pre>';

ne tuvu eleganti, bet vismaz meklē un dzēš nost pēc cipariska id ar DOM f-jām

 

p.s. arī ar šitām f-jām neesu strādājis

Edited by v3rb0
Link to comment
Share on other sites

Tev xml sākumā tiešām ir nodefinēts, kādā encoding-ā viņš ir? Aptuveni šādi:

<?xml version="1.0" encoding="UTF-8"?>

Saglabāšanai izmanto fopen(), fwrite() funkcijas. Tikai php jābūt tiesībām rakstīt tajā failā. Un noteikti pārbaudi, vai saveXML neatgriež false (ja nu tas mēdz..).

 

Par tukšu līniju.

http://programming-oneliners.blogspot.com/...nes-php-29.html

Starp citu pirmais links meklējot googlā. :/

Edited by GedroX
Link to comment
Share on other sites

Paldies! Viss kārtībā..

 

*.php tagad izskatās šādi:

 

<?php

$id = $_POST['id'];

$doc = new DOMDocument;
$doc -> load('depot.xml');

$el = $doc -> getElementsByTagName('product');
foreach($el as $element) {
if($element -> getAttribute('id') == $id) {
	$element -> parentNode -> removeChild($element);
	break;
}
}

$doc -> save("depot.xml");

?>

 

Par tukšu līniju pamēģināšu vēl.. paldies! (izglābi)

Link to comment
Share on other sites

..tākā neesmu necik ļoti zinošs šajās lietās, atbildēshu - nezinu.. bija nepieciešams tikai, lai smuki saglabātu *.xml struktūru.. jo failā ikdienas tiks dzēsta un labota informācija.. un gadījumā, ja kādu reizi jālien tur skatīties - nebūtu milzums tukšuma, bet lai ir pārskatāmi..

 

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..

 

Vai uz php 5.0.4 ir Dom dokumenta funkcijas, ja kāds zin.. uz tāda tiks hostota lapa.. ak' es muļķis, tik tālu nebiju aizdomājies..

Edited by SadDemon
Link to comment
Share on other sites


×
×
  • Create New...