Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Zapisywanie danych do tablic
Forum PHP.pl > Forum > Przedszkole
Sprouse
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
Abaddor
Proponuję użycie tablicy wielowymiarowej:)
2 wymiarowa wystarczy:)

Chyba że nie zrozumiałem zagadnienia, hehe.
Sprouse
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.
erix
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.
Sprouse
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?
thek
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]))
?
Sprouse
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.
erix
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?
thek
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
Sprouse
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. }
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.