Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [PHP]Wyświetlenie następnego elementu z tablicy
piotr485
post
Post #1





Grupa: Zarejestrowani
Postów: 292
Pomógł: 0
Dołączył: 10.07.2009

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


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:
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 12)
ziqzaq
post
Post #2





Grupa: Zarejestrowani
Postów: 428
Pomógł: 128
Dołączył: 17.06.2007

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


O to chodzi?
$tablica[1]['nazwa']
Go to the top of the page
+Quote Post
emp
post
Post #3





Grupa: Zarejestrowani
Postów: 195
Pomógł: 14
Dołączył: 12.01.2006
Skąd: Gotham City

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


  1. while (list($id , $nazwa ) = each($tablica)) { echo $id => $nazwa; }


Manual: PHP: each - Manual

Ten post edytował emp 18.08.2009, 17:33:01
Go to the top of the page
+Quote Post
piotr485
post
Post #4





Grupa: Zarejestrowani
Postów: 292
Pomógł: 0
Dołączył: 10.07.2009

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


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 ?

Go to the top of the page
+Quote Post
ziqzaq
post
Post #5





Grupa: Zarejestrowani
Postów: 428
Pomógł: 128
Dołączył: 17.06.2007

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


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. }


Ten post edytował ziqzaq 18.08.2009, 17:47:37
Go to the top of the page
+Quote Post
piotr485
post
Post #6





Grupa: Zarejestrowani
Postów: 292
Pomógł: 0
Dołączył: 10.07.2009

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


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 ?
Go to the top of the page
+Quote Post
ziqzaq
post
Post #7





Grupa: Zarejestrowani
Postów: 428
Pomógł: 128
Dołączył: 17.06.2007

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


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'];


Ten post edytował ziqzaq 19.08.2009, 07:49:43
Go to the top of the page
+Quote Post
Pawel_W
post
Post #8





Grupa: Zarejestrowani
Postów: 1 675
Pomógł: 286
Dołączył: 15.06.2009
Skąd: Wieliczka

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


napisz sobie własną funkcję, która doda ci to 1, będzie prościej (IMG:style_emoticons/default/biggrin.gif)
Go to the top of the page
+Quote Post
ziqzaq
post
Post #9





Grupa: Zarejestrowani
Postów: 428
Pomógł: 128
Dołączył: 17.06.2007

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


Cytat(Pawel_W @ 19.08.2009, 08:50:41 ) *
napisz sobie własną funkcję, która doda ci to 1, będzie prościej (IMG:style_emoticons/default/biggrin.gif)

Do czego chcesz dodawać to 1?
Zakładając, że nie wiadomo czy elementy tablicy będą miały id posortowane.

Ten post edytował ziqzaq 19.08.2009, 07:55:05
Go to the top of the page
+Quote Post
piotr485
post
Post #10





Grupa: Zarejestrowani
Postów: 292
Pomógł: 0
Dołączył: 10.07.2009

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


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

Ten post edytował piotr485 19.08.2009, 09:03:10
Go to the top of the page
+Quote Post
ziqzaq
post
Post #11





Grupa: Zarejestrowani
Postów: 428
Pomógł: 128
Dołączył: 17.06.2007

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


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).

Ten post edytował ziqzaq 19.08.2009, 09:09:29
Go to the top of the page
+Quote Post
piotr485
post
Post #12





Grupa: Zarejestrowani
Postów: 292
Pomógł: 0
Dołączył: 10.07.2009

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


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!

Ten post edytował piotr485 19.08.2009, 09:23:45
Go to the top of the page
+Quote Post
ziqzaq
post
Post #13





Grupa: Zarejestrowani
Postów: 428
Pomógł: 128
Dołączył: 17.06.2007

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


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

Ten post edytował ziqzaq 19.08.2009, 10:57:35
Go to the top of the page
+Quote Post

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

 



RSS Aktualny czas: 25.08.2025 - 06:46