Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> Zapisywanie danych do tablic
Sprouse
post 20.07.2010, 22:39:52
Post #1





Grupa: Zarejestrowani
Postów: 9
Pomógł: 0
Dołączył: 22.01.2010

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


Witam,
Mam taką tablicę:
  1. imie[1]=""; nazwisko[1]=""; adres[1]=""; ukryty[1]="";
  2. imie[2]=""; nazwisko[2]=""; adres[2]=""; ukryty[2]="";
  3. imie[3]=""; nazwisko[3]=""; adres[3]=""; ukryty[3]="";
  4. imie[4]=""; nazwisko[4]=""; adres[4]=""; ukryty[4]="";
  5. imie[5]=""; nazwisko[5]=""; adres[5]=""; ukryty[5]="";

W indeksie każdej zmiennej znajduje się liczba, która jest identyfikatorem.

Moje pytanie brzmi - w jaki sposób można zapisać do takiej tablicy dane zapisane w ten sposób - całość wygląda tak:
{"lista_kontaktow":[{"id":1,"imie":"andrzej","nazwisko":"kowalski","adres":"lipowa 27/2","ukryty":false},{"id":2,"imie":"michał","nazwisko":"zieliński","adres":"klonowa 11/7","ukryty":true}],"nazwa_kontaktow":null,"publiczna":true;}

Tekst zaznaczony na czerwono należy wykasować. W miejscu, gdzie mamy zielony tekst znajduje się docelowa lista kontaktów, w niej informacje są zapisywane w sposób jak podano wyżej, a poszczególne kontakty dzieli przecinek. Takich kontaktów może być 5, a może być i 300, więc prosiłbym nie sugerować się tym, że są tam tylko 2 kontakty.
W jaki sposób można to zrobić?

Z góry dziękuję za pomoc, pozdrawiam,
Sprouse

Ten post edytował Sprouse 20.07.2010, 22:45:10
Go to the top of the page
+Quote Post
Abaddor
post 20.07.2010, 22:58:39
Post #2





Grupa: Zarejestrowani
Postów: 65
Pomógł: 9
Dołączył: 30.06.2009

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


Proponuję użycie tablicy wielowymiarowej:)
2 wymiarowa wystarczy:)

Chyba że nie zrozumiałem zagadnienia, hehe.
Go to the top of the page
+Quote Post
Sprouse
post 20.07.2010, 23:05:00
Post #3





Grupa: Zarejestrowani
Postów: 9
Pomógł: 0
Dołączył: 22.01.2010

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


1 wymiarowa jest dla mnie najwygodniejsza.
A jak byś widział taką 2 wymiarową, co miałbym zapisywać w 2 indeksie? Osobiście nie mam pomysłu, rozwiń swoją myśl. smile.gif

I sama tablica, nawet i 100-wymiarowa mi nie pomoże, jeżeli nie będę wiedział jak zapisać takie dane. Dodam że jestem... właściwie to początkujący, jeśli chodzi o PHP.
Go to the top of the page
+Quote Post
erix
post 20.07.2010, 23:34:56
Post #4





Grupa: Moderatorzy
Postów: 15 467
Pomógł: 1451
Dołączył: 25.04.2005
Skąd: Szczebrzeszyn/Rzeszów




Cytat
1 wymiarowa jest dla mnie najwygodniejsza.

Powiedz mi, pod jakim względem? Właśnie gdybyś zastosował wielowymiarową, miałbyś problem z głowy, bo byłoby to jedno przepisanie, a tak, to trzeba kombinować:

[JAVASCRIPT] pobierz, plaintext
  1. var rec = {"id":1,"imie":"andrzej","nazwisko":"kowalski","adres":"lipowa 27/2","ukryty":false};
  2.  
  3. window.imie.push(rec.imie);
  4. window.nazwisko.push(rec.nazwisko);
  5. //...
[JAVASCRIPT] pobierz, plaintext

Życzę powodzenia, jeśli dojdzie więcej pól. Strzelasz sobie kulą armatnią w stopę.

Nadal podtrzymuję swoje pytanie, w jaki sposób jest dla Ciebie wygodniej.


--------------------

ZCE :: Pisząc PW załączaj LINK DO TEMATU i TYLKO w sprawach moderacji :: jakiś błąd - a TREŚĆ BŁĘDU? :: nie ponaglaj z odpowiedzią via PW!
Go to the top of the page
+Quote Post
Sprouse
post 21.07.2010, 10:39:00
Post #5





Grupa: Zarejestrowani
Postów: 9
Pomógł: 0
Dołączył: 22.01.2010

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


W takim razie przepraszam. Najwygodniejsza dlatego, że... hmm. Na początku miałem taką wizję tegoż kodu:
  1. <?php
  2. $imie[1]=""; $nazwisko[1]=""; $adres[1]=""; $ukryty[1]="";
  3. $imie[2]=""; $nazwisko[2]=""; $adres[2]=""; $ukryty[2]="";
  4. // i tak dalej
  5. echo "Lista kontaktów:";
  6. echo "Imię: $imie[1], Nazwisko: $nazwisko[1], Adres: $adres[1]";
  7. echo "Imię: $imie[2], Nazwisko: $nazwisko[2], Adres: $adres[2]";
  8. //itd
  9. ?>

A jak wyglądałaby sprawa przy wielowymiarowej?
Go to the top of the page
+Quote Post
thek
post 21.07.2010, 10:49:53
Post #6





Grupa: Moderatorzy
Postów: 4 362
Pomógł: 714
Dołączył: 12.02.2009
Skąd: Jak się położę tak leżę :D




A w 2-wymiarowej:
Byłoby
  1. $lista_kontaktow = array(
  2. [1] => array( 'imie' => '', 'nazwisko' => '', 'adres' => '', 'ukryty' => '' ),
  3. [2] => array( 'imie' => '', 'nazwisko' => '', 'adres' => '', 'ukryty' => '' ),
  4. [3] => array( 'imie' => '', 'nazwisko' => '', 'adres' => '', 'ukryty' => '' ),
  5. [4] => array( 'imie' => '', 'nazwisko' => '', 'adres' => '', 'ukryty' => '' ),
  6. [5] => array( 'imie' => '', 'nazwisko' => '', 'adres' => '', 'ukryty' => '' )
  7. );
  8. foreach($lista_kontaktow AS $wpis) {
  9. echo 'Imię: '.$wpis['imie'].', Nazwisko: '.$wpis['nazwisko'].', Adres: '.$wpis['adres'];
  10. }
Nadal uważasz, że Twoja struktura jest lepsza? winksmiley.jpg
Ja mogę wywołać $lista_kontaktów[1], co zwróci mi tablicę danych usera z id=1, ale i $lista_kontaktów[3]['imie'], co zwróci mi imię usera o id=3 smile.gif A wyświetlenie wszystkich masz wyżej, i zajmuje to 3 linijki -> 8-10

EDIT: A teraz sprawdź czy jakaś dana istnieje w Twoim układzie. Jak robię ja? if( array_key_exists('2', $lista_kontaktow) ) lub isset( $lista_kontaktow[2] ) a do konkretnego pola? isset($lista_kontaktow[2]['imie']). U Ciebie to drugie przejdzie też. Ale zrobisz to pierwsze? Czy zakończy się to sprawdzaniem
if( isset( $imie[2]) && isset( $nazwisko[2]) && isset( $adres[2]) && isset( $ukryty[2]))
?


--------------------
Najpierw był manual... Jeśli tam nie zawarto słów mądrości to zapytaj wszechwiedzącego Google zadając mu własciwe pytania. A jeśli i on milczy to Twój problem nie istnieje :D
Go to the top of the page
+Quote Post
Sprouse
post 21.07.2010, 14:57:59
Post #7





Grupa: Zarejestrowani
Postów: 9
Pomógł: 0
Dołączył: 22.01.2010

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


W Twoim przykładzie występuje błąd: Parse error: syntax error, unexpected '[', expecting ')', oczywiście chodzi o nawiasy kwadratowe [1], [2], [3], [4] i [5]. smile.gif
No... przyznam, że dużo, dużo lepiej to wygląda niż moja wersja.

Jednak odbiegliśmy nieco od wątku, gdyż nadal nie wiem w jaki sposób te dane zapisać do tablicy.
Go to the top of the page
+Quote Post
erix
post 21.07.2010, 16:29:38
Post #8





Grupa: Moderatorzy
Postów: 15 467
Pomógł: 1451
Dołączył: 25.04.2005
Skąd: Szczebrzeszyn/Rzeszów




Bez kwadratowych i będzie ok.

Ale jak nie wiesz, jak zapisać, przecież dostałeś na tacy, jak trzeba, a w pierwszym poście napisałem Ci, jak skopiować z jednej do drugiej, może jakieś konkretne pytanie, a nie będziemy tylko wróżyć z fusów?


--------------------

ZCE :: Pisząc PW załączaj LINK DO TEMATU i TYLKO w sprawach moderacji :: jakiś błąd - a TREŚĆ BŁĘDU? :: nie ponaglaj z odpowiedzią via PW!
Go to the top of the page
+Quote Post
thek
post 21.07.2010, 17:45:02
Post #9





Grupa: Moderatorzy
Postów: 4 362
Pomógł: 714
Dołączył: 12.02.2009
Skąd: Jak się położę tak leżę :D




Ech te nawiasy. Z rozpędu napisałem [1], [2] i dalej, choć ma być po prostu, bez nawiasów w kluczach. Tak jak już choćby w tablicy zagnieżdżonej, czyli: 'miasto' => ''
Z tego co widzę, to jakiś JSON chyba. Użyj więc JSON_decode i potem się baw dalej winksmiley.jpg


--------------------
Najpierw był manual... Jeśli tam nie zawarto słów mądrości to zapytaj wszechwiedzącego Google zadając mu własciwe pytania. A jeśli i on milczy to Twój problem nie istnieje :D
Go to the top of the page
+Quote Post
Sprouse
post 22.07.2010, 13:07:05
Post #10





Grupa: Zarejestrowani
Postów: 9
Pomógł: 0
Dołączył: 22.01.2010

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


Ok, będzie bardziej konkretnie.
Szczerze powiedziawszy, oczekiwałem rozwiązania w PHP. Oczywiście, może być też Javascript, lecz nie znam tego języka tak dobrze, bym, drogi panie moderatorze, zrozumiał wszystko co napisałeś. smile.gif W końcu jesteśmy w dziale "przedszkole" i nikt nie powiedział, że praca z przedszkolakami będzie łatwa. winksmiley.jpg Nie zmieniając początkowej koncepcji, proszę o w miarę dokładniejsze wytłumaczenie, najlepiej od razu z podstawieniem do tej mojej nieszczęsnej tablicy. Sam próbowałem, ale skrypt był zatrzymywany, między innymi zwracał mi komunikat, że "window.imie jest pusty bądź nie jest obiektem" i inne "cuda na kiju". winksmiley.jpg
  1. $lista_kontaktow = array(
  2. (1) => array( 'imie' => '', 'nazwisko' => '', 'adres' => '', 'ukryty' => '' ),
  3. (2) => array( 'imie' => '', 'nazwisko' => '', 'adres' => '', 'ukryty' => '' ),
  4. (3) => array( 'imie' => '', 'nazwisko' => '', 'adres' => '', 'ukryty' => '' ),
  5. (4) => array( 'imie' => '', 'nazwisko' => '', 'adres' => '', 'ukryty' => '' ),
  6. (5) => array( 'imie' => '', 'nazwisko' => '', 'adres' => '', 'ukryty' => '' )
  7. );
  8. foreach($lista_kontaktow AS $wpis) {
  9. echo 'Imię: '.$wpis['imie'].', Nazwisko: '.$wpis['nazwisko'].', Adres: '.$wpis['adres'];
  10. }


Ten post edytował Sprouse 22.07.2010, 13:24:52
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: 21.06.2025 - 21:13