Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [PHP] array
soliniak
post 4.02.2015, 16:09:38
Post #1





Grupa: Zarejestrowani
Postów: 66
Pomógł: 0
Dołączył: 8.08.2009

Ostrzeżenie: (0%)
-----


Witam,

Mam plik lang_polski.php w nim:
  1. <?php
  2.  
  3. global $lang;
  4. $lang = array(
  5.  
  6. "charset" => "utf-8",
  7.  
  8. "help" => "Pomoc",
  9. "all_doctors" => "Wszyscy lekarze"
  10.  
  11. );
  12.  
  13. ?>

Teraz mam pytanie, chciałbym wyciągnąć informacje z tej tablicy i móc je edytować.
Póki co zrobiłem coś takiego (tylko wyświetlanie).
index.php:

  1. <table>
  2. <?php
  3.  
  4. include lang_polski.php;
  5.  
  6. foreach ($lang as $klucz => $wartosc){
  7.  
  8. echo "<tr><td>" .$klucz ."</td> <td><input type='text' value='". $wartosc ."' ></td><td><button value='zapisz'>zmien</button></td></tr>";
  9. }
  10. ?>
  11. </table>



i nie wiem co dalej z tym zrobić...
Ma ktoś jakieś pomysły?? arrowheadsmiley.png


Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 6)
markuz
post 4.02.2015, 16:12:58
Post #2





Grupa: Zarejestrowani
Postów: 1 240
Pomógł: 278
Dołączył: 11.03.2008

Ostrzeżenie: (0%)
-----


Myślałeś nad bazą danych?


--------------------
Go to the top of the page
+Quote Post
soliniak
post 4.02.2015, 16:36:33
Post #3





Grupa: Zarejestrowani
Postów: 66
Pomógł: 0
Dołączył: 8.08.2009

Ostrzeżenie: (0%)
-----


Tak, myślałem, ale póki co i o ile się da to chciałbym tego uniknąć.
Jeśli się nie da to będę musiał kod zmienić pod bazę danych.
Go to the top of the page
+Quote Post
Pyton_000
post 4.02.2015, 17:14:46
Post #4





Grupa: Zarejestrowani
Postów: 8 068
Pomógł: 1414
Dołączył: 26.10.2005

Ostrzeżenie: (0%)
-----


siakoś tak:
  1. file_put_contents('lang.php', "<?php\n global \$lang; \n \$lang = " . var_export($to_co_edytujesz_czyli_tablica));


Tylko nie wiem czy się nie wysypie przy <?php

Ten post edytował Pyton_000 4.02.2015, 17:15:02
Go to the top of the page
+Quote Post
Dejmien_85
post 4.02.2015, 22:50:32
Post #5





Grupa: Zarejestrowani
Postów: 251
Pomógł: 23
Dołączył: 23.04.2013

Ostrzeżenie: (0%)
-----


Ja ma 2 propozycje:

1. Jeśli masz troszkę więcej czasu - Baza danych SQLite 3 - to baza danych zapisana w pliku, także żadnego serwera MySQL nie potrzebujesz. Po prostu zapiszujesz plik baza.sql i później na nim operujesz (to takie urposzczone MySQL).
2. Jeśli nie chcesz bawić się z bazą, wtedy proponuję zapisać pliki językowa jako plik w rozszerzeniu JSON - PHP-owa serializacja jest zbędna, ponieważ przy tłumaczeniach nie potrzeba żadnych meta danych.

  1. // Stwórz sobie obiekt/tablicę, np.
  2. $lang = array(
  3. "charset" => "utf-8",
  4. "help" => "Pomoc",
  5. "all_doctors" => "Wszyscy lekarze"
  6. );
  7.  
  8. // konwersja na JSON-a
  9. $langJson = json_encode($lang);
  10.  
  11. // zapisz dane do pliku lang_polski.json (rozszerzenie może być dowolne, jednak zalecam JSON, bo później możesz sobie to otworzyć przy pomocy IDE/edytora i będziesz miał pokolorowaną składnię)
  12. file_put_contents('lang_polski.json', $langJson);


I później jeśli będziesz chciał coś zmienić, wtedy wczytujesz plik, zmieniasz wartości i zapisujesz ponownie

  1. // wczytaj dane z pliku
  2. $langJson = file_get_contents('lang_polski.json');
  3.  
  4. // konwersja na tablicę PHP (bez drugiego parametru "false" otrzymałbyś obiekt)
  5. $lang = json_decode($langJson, true);
  6.  
  7. // i tutaj operujesz sobie na tablicy, wyświetlasz, zmieniasz dane itd...
  8. ...
  9.  
  10. // gdy już zrobisz co chcesz wtedy w przypadku zmian możesz napisać plik z tłumaczeniami (albo do tego samego, albo do innego pliku)
  11. $langJson = json_encode($lang);
  12. file_put_contents('lang_polski.json', $langJson);

Możesz także wykorzystać do zapisywania pliki płaskie (.ini), albo xml, lub ewentualnie YAML (ale tutaj musiałbyś wykorzystać bibliotekę jakąś, bo YAML nie jest standardowo obsługiwany przez PHP).

Moim zdaniem do Twoich finezyjnych zabiegów najprostszy sposób to JSON. ; )

PS Ogólnie to postaraj się oddzielić logikę od widoku, bo widzę tam mały miszmasz. wink.gif

Ten post edytował Dejmien_85 4.02.2015, 22:58:41
Go to the top of the page
+Quote Post
soliniak
post 5.02.2015, 14:56:56
Post #6





Grupa: Zarejestrowani
Postów: 66
Pomógł: 0
Dołączył: 8.08.2009

Ostrzeżenie: (0%)
-----


Też mi się spodobał pomysł z JSON.
Co rozumiesz przez "oddzielić logikę o dwidoku"? Nie mam jak oddzielić tej tabeli? tongue.gif


Zrobiłem coś takiego:

  1. <center>
  2. <br /><br /><br /><br />
  3. <?php
  4.  
  5.  
  6. $langJson = json_encode($lang);
  7.  
  8. $langJson = file_get_contents('lang_polski.json');
  9.  
  10. $lang = json_decode($langJson, true);
  11.  
  12.  
  13. ?>
  14.  
  15. <table>
  16. <?
  17.  
  18.  
  19. foreach ($lang as $klucz => $wartosc){
  20.  
  21. echo "<tr><td>" .$klucz ."</td> <td><input type='text' value='". $wartosc ."' ></td></tr>";
  22.  
  23.  
  24. $index = array_search($wartosc, $lang);
  25.  
  26. array_splice($lang, $index, 1, array('mygreeen'));
  27.  
  28. echo $index; // zwraca nazwę nie liczbę
  29.  
  30.  
  31. }
  32.  
  33. ?>
  34.  
  35. </table>
  36.  
  37. <?
  38.  
  39.  
  40. $langJson = json_encode($lang);
  41. file_put_contents('lang_polski.json', $langJson);
  42.  
  43. ?>
  44.  
  45.  
  46. </center>
  47.  


I tutaj się zaciąłem.
Nie mogę się odwołać do wartości klucza bo klucz z tego co zrozumiałem nie jest cyfrą.
Tak wygląda array:
  1. (
  2. [charset] => utf-8
  3. [help] => Pomoc
  4. [colXs] => foobar34
  5. [all_doctors] => Wszyscy lekarze
  6. )


Jak np. zmienić wartość klucza charset??
Próbowałem użyć funkcji array_insert ale również nie daje pożądanych rezultatów.

(BTW Mam w planach dorobić do tego potem formularz)


[EDIT]

Okazuje się że było to prostsze niż sądziłem wink.gif
Wystarczy zrobić o tak:
  1. foreach ($lang as $klucz => $wartosc){
  2.  
  3. echo "<tr><td>" .$klucz ."</td> <td><input type='text' value='". $wartosc ."' ></td></tr>";
  4. $lang[$klucz] = "test";
  5.  
  6. }


Już nie będę usuwał tego postu, może się komuś przyda albo będzie miał lepsze rozwiązanie wink.gif

Ten post edytował soliniak 5.02.2015, 17:02:49
Go to the top of the page
+Quote Post
Dejmien_85
post 6.02.2015, 07:12:49
Post #7





Grupa: Zarejestrowani
Postów: 251
Pomógł: 23
Dołączył: 23.04.2013

Ostrzeżenie: (0%)
-----


Cytat(soliniak @ 5.02.2015, 14:56:56 ) *
Już nie będę usuwał tego postu, może się komuś przyda albo będzie miał lepsze rozwiązanie wink.gif


Do przechowywania i edycji danych używa się baz danych, także działaj choćby z tym SQLite 3, nauczysz się języka SQL i wykorzystasz to w przyszłości.

Używanie JSON, XML, YAML, czy .INI jako bazy danych to taki mały hack - tak się nie robi (choć są wyjątki, np. QuickCMS - ale ograniczenia są mega w porównaniu do baz danych).

Także działaj z SQLite 3 (albo MySQL - jeśli siedzisz na Windzie, to na pewno masz XAMPPa lub WAMPa, a tam jest cały zestaw gotowy do użytku).

Nie bój się baz! To Twoi przyjaciele, tylko jeszcze o tym nie wiesz. ; )
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Wersja Lo-Fi Aktualny czas: 14.08.2025 - 09:58