Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [PHP]Następny/poprzedni numer ID w sesji
northwest
post
Post #1





Grupa: Zarejestrowani
Postów: 788
Pomógł: 1
Dołączył: 17.09.2004

Ostrzeżenie: (10%)
X----


Witam serdecznie,
Mam w tablicy, w sesji taką zawartość:
  1. (
  2. [0] => Array
  3. (
  4. [id] => 2
  5. )
  6. [1] => Array
  7. (
  8. [id] => 12
  9. )
  10. [2] => Array
  11. (
  12. [id] => 32
  13. )
  14.  
  15. )


To są ulubione produkty. Chce zrobić strzałki (linki) po których kliknięciu będę miał przekierowanie na następną stronę "ulubionego produktu".

W jaki sposób sprawdzić i pobrać następujące ID z tej sesji/tablicy?(IMG:style_emoticons/default/smile.gif)


Bardzo proszę o pomoc,
Northwest

Go to the top of the page
+Quote Post
fate
post
Post #2





Grupa: Zarejestrowani
Postów: 824
Pomógł: 106
Dołączył: 14.03.2012
Skąd: Warszawa

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


dodać / odjąć od obecnie wyświetlanego jakos produktu ID wartość 1
Go to the top of the page
+Quote Post
northwest
post
Post #3





Grupa: Zarejestrowani
Postów: 788
Pomógł: 1
Dołączył: 17.09.2004

Ostrzeżenie: (10%)
X----


id nie są rosnące/malejące....

Może być kombinacja 1,2,3,4,5,6,7,8.... ale też może być 300, 1, 23, 13, 32 (IMG:style_emoticons/default/sad.gif)
Go to the top of the page
+Quote Post
ctom
post
Post #4





Grupa: Zarejestrowani
Postów: 321
Pomógł: 55
Dołączył: 19.04.2009

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


http://php.net/manual/en/function.next.php
Go to the top of the page
+Quote Post
northwest
post
Post #5





Grupa: Zarejestrowani
Postów: 788
Pomógł: 1
Dołączył: 17.09.2004

Ostrzeżenie: (10%)
X----


to nie do końca to.
Załóżmy że ma w tablicy: 4,2,12,73,12

i jestem na stronie o id=2

$poprzednie = 4 i nastepne = 12 (IMG:style_emoticons/default/smile.gif)
Go to the top of the page
+Quote Post
ctom
post
Post #6





Grupa: Zarejestrowani
Postów: 321
Pomógł: 55
Dołączył: 19.04.2009

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


Cytat(northwest @ 3.07.2015, 22:58:53 ) *
Załóżmy że ma w tablicy: 4,2,12,73,12

i jestem na stronie o id=2

$poprzednie = 4 i nastepne = 12 (IMG:style_emoticons/default/smile.gif)


  1. $arr = [4,2,12,73,12];
  2. $id = 2;
  3. while(current($arr) != $id) next($arr);
  4.  
  5. $nastepna = next($arr);
  6. $obecna = prev($arr);
  7. $poprzednia = prev($arr);


z tym, że problemem są duplikaty wartości (np 12) ... w takim wypadku musisz pomyśleć i innym przekazywaniu parametru do identyfikacji pozycji w tablicy.

Ten post edytował ctom 4.07.2015, 06:09:17
Go to the top of the page
+Quote Post
fate
post
Post #7





Grupa: Zarejestrowani
Postów: 824
Pomógł: 106
Dołączył: 14.03.2012
Skąd: Warszawa

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


źle się wyraziłem chodziło mi o index tablicy do ktorego podpiete jest ID, do wyswietlania na pewno uzywasz tego indexu i na tym trzeba operowac
Go to the top of the page
+Quote Post
northwest
post
Post #8





Grupa: Zarejestrowani
Postów: 788
Pomógł: 1
Dołączył: 17.09.2004

Ostrzeżenie: (10%)
X----


Cytat(ctom @ 4.07.2015, 05:08:20 ) *
  1. $arr = [4,2,12,73,12];
  2. $id = 2;
  3. while(current($arr) != $id) next($arr);
  4.  
  5. $nastepna = next($arr);
  6. $obecna = prev($arr);
  7. $poprzednia = prev($arr);


z tym, że problemem są duplikaty wartości (np 12) ... w takim wypadku musisz pomyśleć i innym przekazywaniu parametru do identyfikacji pozycji w tablicy.


Dziękuję bardzo, to by działało (IMG:style_emoticons/default/smile.gif) Mam tylko namieszane coś z dodawaniem do tablicy (problem w powyższym kodzie występuje w momencie gdy są duplikaty).
Mam takie dodawanie do tablicy:
  1. $save_to_por = array('id'=>czysc_sql_liczby($_POST['por_poz_send_to_por'])); // dodawane id produktu
  2. $if_used = null;
  3. foreach ($_SESSION['koszyk_porownanie'] as $value) {
  4. if($_POST['por_poz_send_to_upd'] == $value){
  5. $if_used = 1; // mam już taki wpis
  6. }
  7. }
  8. if($if_used == ""){
  9. //dodaj_koszyk_porownanie($save_to_por); dodaj do koszyka, nie ma duplikatu
  10. }


Jednak mój kod coś nie do końca działa, "przepuszcza" i zapisuje do sesji duplikaty (IMG:style_emoticons/default/sad.gif)

Wie ktoś może jak to naprawić?
Bardzo prosiłbym o pomoc w naprawieniu powyższego kodu,
Northwest
Go to the top of the page
+Quote Post
prz3kus
post
Post #9





Grupa: Zarejestrowani
Postów: 260
Pomógł: 30
Dołączył: 22.01.2007

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


zobacz to http://php.net/manual/en/function.in-array.php
Go to the top of the page
+Quote Post
northwest
post
Post #10





Grupa: Zarejestrowani
Postów: 788
Pomógł: 1
Dołączył: 17.09.2004

Ostrzeżenie: (10%)
X----


próbowałem:
  1. $key = array_search(2, $_SESSION['koszyk_porownanie']);



ale niestety nic nie zwraca (IMG:style_emoticons/default/sad.gif)
Go to the top of the page
+Quote Post
ctom
post
Post #11





Grupa: Zarejestrowani
Postów: 321
Pomógł: 55
Dołączył: 19.04.2009

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


@northwest zbierz to do kupy i napisz co Ty masz na wejściu a co chcesz na wyjściu ...bo w pierwszym poście masz pewną strukturę tablicy ... ja dałem Ci przykład wykorzystania funkcji next() do przytoczonej przez Ciebie "płaskiej" tablicy... teraz masz problem z duplikatami - tylko skonkretyzuj jakie informacje i jak chcesz je przechowywać 
Go to the top of the page
+Quote Post
northwest
post
Post #12





Grupa: Zarejestrowani
Postów: 788
Pomógł: 1
Dołączył: 17.09.2004

Ostrzeżenie: (10%)
X----


mam taką tablicę:
  1. (
  2. [0] => Array
  3. (
  4. [id] => 5
  5. )
  6.  
  7. [1] => Array
  8. (
  9. [id] => 6
  10. )
  11.  
  12. [2] => Array
  13. (
  14. [id] => 1
  15. )
  16.  
  17. [3] => Array
  18. (
  19. [id] => 2
  20. )
  21.  
  22. [4] => Array
  23. (
  24. [id] => 3
  25. )
  26.  
  27. [5] => Array
  28. (
  29. [id] => 4
  30. )
  31.  
  32. )



I ten kod następne/poprzednie mi nie działa jednak (IMG:style_emoticons/default/sad.gif)
Przepraszam za zamieszanie

mam błąd: Fatal error: Maximum execution time of 30 seconds exceeded
Go to the top of the page
+Quote Post
ctom
post
Post #13





Grupa: Zarejestrowani
Postów: 321
Pomógł: 55
Dołączył: 19.04.2009

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


  1. $cart = array(
  2. array('id' => 5),
  3. array('id' => 6),
  4. array('id' => 1),
  5. array('id' => 2),
  6. array('id' => 3),
  7. array('id' => 4),
  8. );
  9.  
  10. /**
  11. /* Dodawanie danych do koszyka
  12. /* zakladam, że dodawane dane mają taką strukture ['id' => 12]
  13. */
  14. function dodajDoKoszyka(Array $arr, &$cart){
  15. if( !in_array( $arr['id'], array_column($cart,'id')) ) $cart[] = $arr;
  16. }
  17.  
  18. /**
  19. /* pobierz pozycję z koszyka (??) czy jak to tam nazwiesz
  20. /* zakladm, że $id istnieje w koszyku... (ty dopisz jakies walidacje)
  21. */
  22. function pobierzPozycje($id, $cart){
  23. $_arr = array_column($cart, 'id');
  24. while(current($_arr) != $id) next($_arr);
  25. return array(next($_arr), prev($_arr), prev($_arr));
  26.  
  27. }
  28.  
  29. dodajDoKoszyka(array('id'=>19), $cart);
  30.  
  31.  
  32. $id = 5;
  33. list($nastepna, $obecna, $poprzednia) = pobierzPozycje($id, $cart);
  34.  
  35. var_dump(array_column($cart, 'id'),$nastepna, $obecna, $poprzednia);
Go to the top of the page
+Quote Post
northwest
post
Post #14





Grupa: Zarejestrowani
Postów: 788
Pomógł: 1
Dołączył: 17.09.2004

Ostrzeżenie: (10%)
X----


dziękuję, pomogło (IMG:style_emoticons/default/smile.gif) )

a da się w jakiś prosty sposób pobrać id przedostatniego elementu?
Go to the top of the page
+Quote Post
ctom
post
Post #15





Grupa: Zarejestrowani
Postów: 321
Pomógł: 55
Dołączył: 19.04.2009

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


Cytat(northwest @ 8.07.2015, 20:49:57 ) *
a da się w jakiś prosty sposób pobrać id przedostatniego elementu?


tak
Go to the top of the page
+Quote Post
northwest
post
Post #16





Grupa: Zarejestrowani
Postów: 788
Pomógł: 1
Dołączył: 17.09.2004

Ostrzeżenie: (10%)
X----


czyli nie element poprzedni, a ten który znajduje się przed poprzednim (IMG:style_emoticons/default/smile.gif)

Cytat(ctom @ 8.07.2015, 18:57:08 ) *
tak

a jak to pobrać?(IMG:style_emoticons/default/smile.gif)

Może bardziej zobrazuje o co mi chodzi (IMG:style_emoticons/default/smile.gif)
Na stronie jednocześnie mam widoczne 2 produkty... Dlatego zawsze ID muszą być widoczne 2 numerki do przodu/tyłu (IMG:style_emoticons/default/smile.gif)
Go to the top of the page
+Quote Post
ctom
post
Post #17





Grupa: Zarejestrowani
Postów: 321
Pomógł: 55
Dołączył: 19.04.2009

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


@northwest ile poświęciłeś czasu przejrzenie zawartości tego linka, który Ci wcześniej podesłałem ... tam jest coś takiego jak "see also"

masz już prawie wszystko na tacy .... pokombinuj troszkę
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 - 02:37