Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP]Wyświetlenie następnego elementu z tablicy
Forum PHP.pl > Forum > Przedszkole
piotr485
Stworzyłem tablicę:
  1. $tablica = array (
  2.  
  3. nazwa => "Nazwa Jeden",
  4. id => 13
  5.  
  6. ),
  7.  
  8. nazwa => "Nazwa Dwa",
  9. id => 21
  10.  
  11. ),
  12.  
  13. nazwa => "Nazwa Trzy",
  14. id => 60
  15.  
  16. )
  17.  
  18. );
  19.  
  20. Aby wyswietlic "Nazwa Jeden" pisze $tablica[0][nazwa], a jak wyswietlic nastepne "pole" Nazwa Dwa za pomoca funkcji next lub each kombinuje juz 5 godzin i dostaje szalu. :sciana:
ziqzaq
O to chodzi?
$tablica[1]['nazwa']
emp
  1. while (list($id , $nazwa ) = each($tablica)) { echo $id => $nazwa; }


Manual: PHP: each - Manual
piotr485
Cytat(ziqzaq @ 18.08.2009, 18:30:55 ) *
O to chodzi?
$tablica[1]['nazwa']


Tyle to ja wiem, chodzi mi o to, żeby to się robiło automatycznie bez wpisywania w tym przypadku jedynki.
Mianowicie w GET mam id = 5 i chce przekazac to parametru $tablica[$_GET['id']]['nazwa'] abym mogl automatycznie stworzyc przycisk "nastepna tablica"

Tak jak jest cos na zasadzie next($tablica); z tym, że tutaj nie moge ustalic od ktorego momentu ma byc id poniewaz zawsze zaczyna od poczatku.

Czy ktos moze mi pomoc ?

ziqzaq
Hehe nie napisałeś, że chodzi ci o iterację po tablicy.

~emp dał ci sposób.
Możesz się również zainteresować strukturą foreach lub for.
np.
  1. foreach($tablica as $arr)
  2. {
  3. echo $arr['nazwa'];
  4. echo $arr['id'];
  5. }
piotr485
Cytat(ziqzaq @ 18.08.2009, 18:45:36 ) *
Hehe nie napisałeś, że chodzi ci o iterację po tablicy.

~emp dał ci sposób.
Możesz się również zainteresować strukturą foreach lub for.
np.
  1. foreach($tablica as $arr)
  2. {
  3. echo $arr['nazwa'];
  4. echo $arr['id'];
  5. }


Chodzi o to, że ja nie chcę wyświetlić tego w pętli tylko następny "rekord" z tej tablicy. Cos takiego, żebym mógł ustawić od jakiej tablicy ma się zaczynać i w tym samym pliku będzie "nastepna", "poprzednia".

Dla przykładu jestem w get[id] = 21 to chcialbym zaczac od tego miejsca czyli $tablica[1][id] zamiast id wpisuje sobie GET i wtedy tworze sobie a href "nastepna" tak aby poszedl po tablicy id cos w style next($tablica[id]) jak rowniez prev ale te funkcje nie chca dzialac, a petle mi tu nic niepomoga.

Bardzo prosze o pomoc! Nakierowanie ?
ziqzaq
1. Lecisz przez wszystkie elementy tablicy i sprawdzasz czy id > id_z_get.
LUB
2. Jeśli możesz podczas tworzenia tablicy ($tablica) - np. pobierając z bazy - jako klucze dać "id":
  1. $tablica = array();
  2. while(...)
  3. {
  4. $tablica[$record['id']] = $record;
  5. }

a później już prosto:
  1. $id = 12;
  2. echo $tablica[$id]['name'].' ';
  3. $nastepny = next($tablica);
  4. echo $nastepny['name'];
Pawel_W
napisz sobie własną funkcję, która doda ci to 1, będzie prościej biggrin.gif
ziqzaq
Cytat(Pawel_W @ 19.08.2009, 08:50:41 ) *
napisz sobie własną funkcję, która doda ci to 1, będzie prościej biggrin.gif

Do czego chcesz dodawać to 1?
Zakładając, że nie wiadomo czy elementy tablicy będą miały id posortowane.
piotr485
Cytat(ziqzaq @ 19.08.2009, 08:54:03 ) *
Do czego chcesz dodawać to 1?
Zakładając, że nie wiadomo czy elementy tablicy będą miały id posortowane.


Id nie będą posortowane ponieważ sortowane są wg nazwy i chodzi aby uzyskać dostęp do nazwy jak i id nastepnego i poprzedniego, hmm w sumie mozna by tu zrobic tak jak mam podstac $tablica[0][id] to dodajac do 0 1 bym mial nastepny element i -1 to poprzedni, ale nie wiem jak zrobic aby rozpoznac ktore aktualne jest ID ktore wczytuje z GET

Nie wiedzialem ze z tym tyle problemow - ktos sprobuje pomoc jeszcze, nakierowac ?

Po prostu majac podane ID 21 jak napisac aby zamienic to na taka postac $tablica[1]['id'], majac podane ID 60 zamienic na $tablica[1]['id']
bez tego nie rusze
ziqzaq
A to co napisałem wcześniej?
Nie możesz stworzyć sobie tej tablicy "przyjaźniej", czyli klucze to będą id, a wartości to tablice (z 'nazwa' i 'id')?
Może pokaż jak tworzysz tą tablicę bo nie wiadomo czy pobierasz ją skądś czy piszesz z palca (ja zakładałem, że pobierasz z bazy).
piotr485
Cytat(ziqzaq @ 19.08.2009, 10:08:02 ) *
A to co napisałem wcześniej?
Nie możesz stworzyć sobie tej tablicy "przyjaźniej", czyli klucze to będą id, a wartości to tablice (z 'nazwa' i 'id')?
Może pokaż jak tworzysz tą tablicę bo nie wiadomo czy pobierasz ją skądś czy piszesz z palca (ja zakładałem, że pobierasz z bazy).


Tablicę póki co tworzę z palca - dopiero później jak już będę potrafił ją obsłużyć to będzie tworzona z bazy w taki sposób jaki jest teraz zaprezentowany.
Tak więc nie ma chyba różnicy póki co skąd ją biorę ?

Niezauwazylem twojej wszesniejszej wypowiedzi, zaraz to sprawdze!

A więc tak zadaję zapytanie
  1. $zapytanie_firm = '
  2. SELECT id, nazwa_firmy
  3. FROM katalog_firm
  4. ORDER BY nazwa_firmy
  5. ';


tworzę tablicę:

  1. $wynik_firm = mysql_query ($zapytanie_firm) or die (mysql_error());
  2. $tablica = array();
  3. while($row = mysql_fetch_array($wynik_firm)) {
  4.  
  5. $nazwa_firmy = $row['nazwa_firmy'];
  6. $id = $row['id'];
  7.  
  8. if (!isset($tablica[$id])) {
  9. $tablica[$id] = array('nazwa' => $nazwa_firmy, 'id' => $id);
  10.  
  11.  
  12. }
  13. }


następnie robie tak jak poradziles:

  1. $id = $_GET['firma'];
  2. echo $tablica[$id]['nazwa'].' ';
  3. $nastepny = next($tablica);
  4. echo $nastepny['nazwa'];


Pierwsze echo dobrze pokazuje ale jesli chodzi o drugie echo "nastepny" to pokazuje nastepny element z tablicy, ale niestety liczac od poczatku tablicy, a nie tak jak powinno od waznego GET[firma]

dlaczego tak sie dzieje ? Prosze o pomoc lub nakierowanie!
ziqzaq
Aj, mea kulpa. Sorry.
Spróbuję jeszcze raz, może nie zamieszam. Olej to co napisałem wcześniej.
Pobierasz elementy z bazy w określony porządku (czyli tak jak napisałeś np. po nazwie firmy).
  1. // To dostajesz po pobraniu (bez id => array())
  2. $tablica = array(
  3. array( 'name' => 'Nazwa1', 'id' => 12 ),
  4. array( 'name' => 'Nazwa2', 'id' => 21 ),
  5. array( 'name' => 'Nazwa3', 'id' => 34 ),
  6. array( 'name' => 'Nazwa4', 'id' => 25 ),
  7. array( 'name' => 'Nazwa5', 'id' => 18 ),
  8. );
  9. // To dostajesz z GET
  10. $id =21;
  11. // A tu wybierasz nastepny element
  12. foreach($tablica as $k => $v)
  13. {
  14. if ($v['id'] == $id)
  15. {
  16. // Trafilismy na nasze id, wiec bierzemy nastepne
  17. echo 'Nastepny element to: '.$tablica[$k+1]['name'];
  18. // nie ma sensu iterowac dalej
  19. break;
  20. }
  21. }

//Edit: poprawka kodu
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.