![]() |
![]() ![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 365 Pomógł: 8 Dołączył: 16.12.2008 Ostrzeżenie: (0%) ![]() ![]() |
Witam!
Chcę stworzyć klasę Koszyk działającą w oparciu o plik XML. Mam jednak problem z kilkukrotnym dodawaniem tego samego przedmiotu. Moja metoda dodająca produkty do pliku wygląda tak: Kod public function addItem($itemId, $itemQuantity){ $this->createCard(); $xml = new SimpleXMLElement(self::CARDS_DIR.$this->cardName.'.xml', NULL, true); $item = $xml->addChild('item'); if(! in_array($itemId,$xml->xpath('//id'))){ //z tą linijką mam problem:/ $item->addChild('id', $itemId); $item->addChild('quantity', $itemQuantity); }else{ //kombinuj z powtórkami! } $xml->asXML(self::CARDS_DIR.$this->cardName.'.xml'); } Troche kombinowałem ale niestety bezskutecznie. Plik XML wygląda tak: Kod <items> <item> <id> klawiatura </id> <quantity> 2 </quantity> </item> <item> <id> klawiatura </id> <quantity> 2 </quantity> </item> </items> Jak zmienić metodę addItem, aby w razie istnienia produktu w pliku, jedynie zwiększała jego ilość, a nie dodawała nowy węzeł <item />. Pozatym to co sądzicie o takim podejściu do budowy koszyka? |
|
|
![]()
Post
#2
|
|
Grupa: Zarejestrowani Postów: 6 476 Pomógł: 1306 Dołączył: 6.08.2006 Skąd: Kraków Ostrzeżenie: (0%) ![]() ![]() |
Kod <items> Sprawdzasz czy istnieje element ITEM z ID równemu dodawanemu produktowi. Jeśli tak wystarczy zwiększyć wartość w QTY, jeśli nie tworzysz nowy.
<item id="123" qty="321" /> <item id="123" qty="321" /> <item id="123" qty="321" /> </items> |
|
|
![]()
Post
#3
|
|
Grupa: Zarejestrowani Postów: 365 Pomógł: 8 Dołączył: 16.12.2008 Ostrzeżenie: (0%) ![]() ![]() |
@Crozin
1. Nie wiem czy doczytałeś mojego posta, ale ja wiem, że mam dokładnie to zrobić i pytałem jak. 2. Nie bawie się w atrybuty, tylko w nowe elementy(<id />, <quantity />). Argumentów powinno się urzywać do metadanych. |
|
|
![]()
Post
#4
|
|
Grupa: Zarejestrowani Postów: 6 476 Pomógł: 1306 Dołączył: 6.08.2006 Skąd: Kraków Ostrzeżenie: (0%) ![]() ![]() |
Najprościej: iterować po każdym elemencie ITEM i sprawdzać czy ID jest równe temu, które chcesz dodać.
|
|
|
![]()
Post
#5
|
|
Grupa: Zarejestrowani Postów: 365 Pomógł: 8 Dołączył: 16.12.2008 Ostrzeżenie: (0%) ![]() ![]() |
Ale chodzi mi o ten kawałek kodu. To można by zmieścić w dwóch linijkach.
Właśnie chodzi o to, że nie wiem jak to wyciągnąć poprawnie i porównać. Próbowałem z xPath ale mi to nie wychodziło i dlatego założyłem ten temat. |
|
|
![]()
Post
#6
|
|
Grupa: Zarejestrowani Postów: 6 476 Pomógł: 1306 Dołączył: 6.08.2006 Skąd: Kraków Ostrzeżenie: (0%) ![]() ![]() |
|
|
|
![]() ![]() |
![]() |
Aktualny czas: 22.08.2025 - 16:24 |