![]() |
![]() ![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 105 Pomógł: 0 Dołączył: 10.05.2014 Skąd: Elbląg Ostrzeżenie: (10%) ![]() ![]() |
Sytuacja jest taka. Mam plik settings.xml, w którym zawarte są ustawienia slidera - typu wysokość, szerokość itp.
Wszystkie te dane wyświetlam na stronie pobierając je z pliku. Wartości, np. Width:600 height:500 wyświetlam w polach input tak jak w formularzu. I teraz pytanie: Czy istnieje możliwość takiego połączenia pól input z plikiem xml, by w momencie wpisywania nowej wartości np width:1000 zamiast 600, wartość width zmieniała się także w pliku settings.xml? Bardzo proszę o pomoc. P.S daleko mi do lenia, dlatego po napisaniu tego pytania, sam staram się znaleźć rozwiązanie. Jeżeli znajdę - powiadomię. Próbowałem zrobić tak, żeby zmienić najpierw wartość "na siłę", ale nie wypaliło: foreach($xml->General_Properties ->xpath("$xml->General_Properties->children") as $child ) { $child->componentWidth->$arr["value"] = '200'; } A żeby było jeszcze jaśniej: Oto kod, o którym mowa i z którego chciałbym zmieniać wartość value. <html> <head> <script src="http://ajax.googleapis.com/ajax/libs/jquery/1.3.2/jquery.js" type="text/javascript"></script> <script> function ajax(file,wynik){ var xmlhttp; if (window.XMLHttpRequest){ xmlhttp=new XMLHttpRequest(); }else{ xmlhttp=new ActiveXObject("Microsoft.XMLHTTP"); } xmlhttp.onreadystatechange=function(){ if (xmlhttp.readyState==4 && xmlhttp.status==200){ document.getElementById(wynik).innerHTML=xmlhttp.responseText; } } xmlhttp.open("GET",file,true); xmlhttp.send(); } </script> </head> <?php $xml=simplexml_load_file($_SERVER['DOCUMENT_ROOT'] . '/1/wp-content/flashxml/3d-carousel-menu-as3-fx/settings.xml'); $ml = "xml.php"; $wynik = "wynik"; if (!isset($_GET['ajax'])){ echo '<div class="parental">'; echo "<button class='parent' onClick='ajax(\"".$ml."?ajax=1\",\"".$wynik."\")'>General</button>"; echo '<div id="wynik">'; echo '</div>'; echo '</div>'; } else{ foreach($xml->General_Properties ->children() as $child) { //druk dzieci tylko przy ajaxie $arr = $child->attributes(); echo $child->getName(); echo "<br><input type='text' name='value' value=" .$arr["value"]."><br>"; } exit(); } ?> </html> Ten post edytował Bart123 19.05.2014, 00:27:35 |
|
|
![]()
Post
#2
|
|
Grupa: Zarejestrowani Postów: 602 Pomógł: 30 Dołączył: 1.08.2007 Skąd: Nowy Sącz Ostrzeżenie: (0%) ![]() ![]() |
Po przeczytaniu tego artykułu wszystkie twoje niejasności się skończą: http://www.gajdaw.pl/xml/generowanie-xml-w-php/print.html#R6
|
|
|
![]()
Post
#3
|
|
Grupa: Zarejestrowani Postów: 105 Pomógł: 0 Dołączył: 10.05.2014 Skąd: Elbląg Ostrzeżenie: (10%) ![]() ![]() |
echo "<br><form action='' method='POST'><input type='text' name='value' value='" .$arr["value"]."'/>";
echo "<br><input type='submit' name='button2'/>"; echo "</form><br>"; if (isset($_POST['button2'])) { $post=$_POST['value']; $file=$_SERVER['DOCUMENT_ROOT'] . '/1/wp-content/flashxml/3d-carousel-menu-as3-fx/settings.xml'; $open=fopen($file, 'w+'); fwrite($file, $post); fclose($file); } } exit(); } ?> Rozumiem, że tu jest błąd - Was proszę o podpowiedź jaki. Chcę wysłać nowe wartości z pola input - do pliku xml - zastępując już istniejące, ale to wiadomo. Przypominam, gdyby ktoś np. czytał tylko ostatni wpis. Ten post edytował Bart123 19.05.2014, 15:05:44 |
|
|
![]()
Post
#4
|
|
![]() Grupa: Moderatorzy Postów: 36 557 Pomógł: 6315 Dołączył: 27.12.2004 ![]() |
Musisz wczytać plik XML przy pomocy biblioteki do obslugi XML, np. simpleXML, nastepnie pod wybrany węzeł wpisać wartość z forma, i zapisać ponownie plik jako xml przy pomocy tej biblioteki
-------------------- "Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista "Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer |
|
|
![]()
Post
#5
|
|
Grupa: Zarejestrowani Postów: 105 Pomógł: 0 Dołączył: 10.05.2014 Skąd: Elbląg Ostrzeżenie: (10%) ![]() ![]() |
Plik mam otwarty. Później powinna się wykonać operacja , po czym zamykam plk. Ale nadal nie działa. Walczę z tym już tyle, że sam na to nie wpadnę. Pomóżcie. Ten post edytował nospor 22.05.2014, 07:36:15
Powód edycji: [nospor]: poprawiam PONOWNIE bbcode
|
|
|
![]()
Post
#6
|
|
![]() Grupa: Moderatorzy Postów: 36 557 Pomógł: 6315 Dołączył: 27.12.2004 ![]() |
Jak juz pisalem:
Cytat Musisz wczytać plik XML przy pomocy biblioteki do obslugi XML, np. simpleXML, nastepnie pod wybrany węzeł wpisać wartość z forma, i zapisać ponownie plik jako xml przy pomocy tej biblioteki Czyli masz tu 3 kroki do zrobienia. Na chwilę obecną jedyne co robisz to krok 1 czyli to:
Zas kroku 2 i 3 nie robisz. Czyli nie przypisujesz danemu węzlowi nowej wartosci ani nie zapisujesz go ponownie jako xml przy pomocy simpleXML. Zas ten kod:
Nie ma zadnego związku z krokiem 2 i 3 By zapisać zmodyfikowany xml ponownie do pliku, musisz uzyc tej motody http://pl1.php.net/manual/en/simplexmlelement.asxml.php -------------------- "Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista "Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer |
|
|
![]()
Post
#7
|
|
![]() Grupa: Zarejestrowani Postów: 578 Pomógł: 69 Dołączył: 15.04.2007 Skąd: Wrocław Ostrzeżenie: (0%) ![]() ![]() |
Mam jeszcze pytanko:
czy setting.xml jest wymuszony przez jakieś narzędzie czy sam postanowiłeś tam umieszczać dane? Bo skoro się często zmienia to logicznie nie powinno go być - te dane powinny być w bazie. |
|
|
![]()
Post
#8
|
|
Grupa: Zarejestrowani Postów: 105 Pomógł: 0 Dołączył: 10.05.2014 Skąd: Elbląg Ostrzeżenie: (10%) ![]() ![]() |
Na wstępię dziękuje Nospor za wskazówkę.
A teraz odpowiedź na drugie pytanie : Jest to oczywiście plik wymuszony przez slider we flashu. Ja nie tworzyłem tego slidera niestety. Choć chciałbym bardzo sam taki zbudować. Skoro mam jaki mam, to próbuję jakoś usprawnić jego działanie i umożliwić użytkownikowi zmiany z poziomu admina. Stąd ta cała zabawa. |
|
|
![]()
Post
#9
|
|
Grupa: Zarejestrowani Postów: 105 Pomógł: 0 Dołączył: 10.05.2014 Skąd: Elbląg Ostrzeżenie: (10%) ![]() ![]() |
I jeszcze jedno. A w którym miejscu przypisać ten wpis z formularza?
Przyznam się, że to jest moja pierwsza próba zewnętrznego dostępu do pliku xml. Więc staram się czegoś nauczyć przez Wasze wskazówki. Ten post edytował Bart123 22.05.2014, 13:52:57 |
|
|
![]()
Post
#10
|
|
![]() Grupa: Moderatorzy Postów: 36 557 Pomógł: 6315 Dołączył: 27.12.2004 ![]() |
Gdzie przypisac? No tam gdzie masz juz tę wartosc z forma, tuż przed ponownym zapisem do pliku.
Jak modyfikowac węzły XML masz napisane choćby tu: http://stackoverflow.com/questions/2092172...-with-simplexml http://stackoverflow.com/questions/4748014...l-node-with-php -------------------- "Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista "Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer |
|
|
![]()
Post
#11
|
|
Grupa: Zarejestrowani Postów: 105 Pomógł: 0 Dołączył: 10.05.2014 Skąd: Elbląg Ostrzeżenie: (10%) ![]() ![]() |
Spoko. Widzę i zaraz wypróbuję.
dodałem coś takiego, ale nadal jest źle. Niczego nie zmienia. Coś mi się wydaje, że w update coś źle wpisałem.
A tak wygląda plik xml oczywiście tylko ta część, która mnie interesuje. Ten post edytował Bart123 22.05.2014, 14:33:02 |
|
|
![]()
Post
#12
|
|
![]() Grupa: Moderatorzy Postów: 36 557 Pomógł: 6315 Dołączył: 27.12.2004 ![]() |
Zakładam, że <settings> jest głównym węzłem całego XML a nie tylko wybranego przez Ciebie kawałka?
No i poza tym w ogole nie dobierasz się do wezla, jak to mialeś pokazanego w linkach co ci podałem.... jakies bez sensu $arr["value"], jakies children... przejrzales podane przeze mnie linki? Tam masz podany przykladowy XML i jak się dobierac do poszczegolnych węzłów. Masz robić analogicznie a nie wymyslac jakies rzeczy -------------------- "Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista "Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer |
|
|
![]()
Post
#13
|
|
Grupa: Zarejestrowani Postów: 105 Pomógł: 0 Dołączył: 10.05.2014 Skąd: Elbląg Ostrzeżenie: (10%) ![]() ![]() |
nospor - a mógłbyś cofnąć się do poprzednich moich odpowiedzi - choćby do samego pocżatku by wiedzieć skąd się wzięło child w ogóle?
OBJAŚNIAM: Ten kod służy do wyświetlenia całej zawartości XML na stronie, co z resztą działa bezbłędnie. $ttr oznacza wartość danego dziecka czyli child czyli np. component width jest dzieckiem general settings [parent czyli rodzic] Każdy child posiada jakąś wartość, a ta wyświetlana jest w input, by można było ją zmienić.
I dopiero pod tym ma się znaleźć kod zapsujący wartość w inpucie - jako podmianę wartości w xml. O tak. Powyższy kod wynika z resztą z podpowiedzi jednego z użytkowników. To nie jest jakiś mój wytwór. Ten post edytował Bart123 22.05.2014, 15:27:35 |
|
|
![]()
Post
#14
|
|
![]() Grupa: Moderatorzy Postów: 36 557 Pomógł: 6315 Dołączył: 27.12.2004 ![]() |
Alez ja to wszystko wiem. Moj poprzedni post jest nadal aktualny. W dalszym ciągu źle się dobierasz do żądanych rzeczy. Ani tu nie jest potrzebne children ani żadne $arr['value']. Przejrzyj jak sie dobierac do poszczegolnych elementow. Podalem ci juz jak.
Jak zas ustawiac atrybuty masz chocby tu http://stackoverflow.com/questions/2370631...-set-attributes http://stackoverflow.com/questions/7341904...mplexml-element A tak w ogole to caly ten kod wyglada kiepsko. Generujesz w petli całą masę formularzy, w zaden sposob nie identyfikujesz czego dotyczy dany forumularz. Potem w tej samej petli robisz zapis, co tez jest bez sensu a to wszystko jeszcze zapisujesz gdy jest AJAX, a wysylajac forma raczej nie ma juz ajaxa, wiec w ogole nie wchodzi nawet do tego kodu -------------------- "Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista "Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer |
|
|
![]()
Post
#15
|
|
Grupa: Zarejestrowani Postów: 105 Pomógł: 0 Dołączył: 10.05.2014 Skąd: Elbląg Ostrzeżenie: (10%) ![]() ![]() |
No i właśnie po to tu jestem, żeby ktoś kto oczywście znajdzie na to czas - podpowiedział mi konkretnie jak zmienić ten kod by działał
![]() Pętli użyłem po to, by nie powtarzać tej samej operacji przy każdym dziecku. Ja wiem, że formularz z przyciskiem wyświetla się za często. Jak zmienię wartości, to i to uporządkuję. foreach($xml->settings->General_Properties->children() as $child Przy takim zapisie nic się nie wyświetla - bez settings wyświetla się wszystko. Dlaczego nie dobieram się jak to nazwałeś, skoro jednak te wartości wszystkie wyświetlają się na stronie. W związku z tym jednak mam do nich dostęp. Nie mogę ich tylko nadpisać. Szczerze mówiąc ja już się poddaje. Jeżeli ktoś może dokonać zmian w moim kodzie by osiągnąć efekt zapsu do pliku to bardzo proszę. Ja nie mam już siły. Pozdrawiam. Ten post edytował Bart123 22.05.2014, 15:31:16 |
|
|
![]()
Post
#16
|
|
![]() Grupa: Moderatorzy Postów: 36 557 Pomógł: 6315 Dołączył: 27.12.2004 ![]() |
Cytat Dlaczego nie dobieram się jak to nazwałeś, skoro jednak te wartości wszystkie wyświetlają się na stronie. W związku z tym jednak mam do nich dostęp. Nie mogę ich tylko nadpisać. Ja nie mowie nic o dobieraniu sie do wartosci przy wyswietlaniu.... przy wyswietlaniu masz ok.... Ja mowie caly czas o kawalku modyfikacji danych w xml - tu niestety masz już źle. Odczyt nieznanych tagow to jedno, tam children() jest jak najbardziej ok, bo chcesz pobrac wszystkie dzieci, a modyfikacja znanego wezla, to co innego. Fakt, Ty nie wiesz jakie węzeł w danej chwili modyfikujesz, bo masz źle przygotowany formularz. Masz też źle zrobiony kawalek z zapisem - nie mowi tu o zlym dostepie do danych, ale ogolnie o zapisie - jest to w zlym miejscu. Musisz zaczac od poprawnie przygotowanego formularza, dopiero wtedy bedziesz mogl isc dalej. Musisz zaczac tez od podstaw, co sie dzieje jak wysylasz forma, co sie dzieje jak ajax itp. Tutaj lezysz totalnie. -------------------- "Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista "Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer |
|
|
![]() ![]() |
![]() |
Wersja Lo-Fi | Aktualny czas: 7.06.2025 - 11:51 |