Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP]Następny/poprzedni numer ID w sesji
Forum PHP.pl > Forum > Przedszkole
northwest
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?smile.gif


Bardzo proszę o pomoc,
Northwest

fate
dodać / odjąć od obecnie wyświetlanego jakos produktu ID wartość 1
northwest
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 sad.gif
northwest
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 smile.gif
ctom
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 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.
fate
ź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
northwest
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 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 sad.gif

Wie ktoś może jak to naprawić?
Bardzo prosiłbym o pomoc w naprawieniu powyższego kodu,
Northwest
prz3kus
zobacz to http://php.net/manual/en/function.in-array.php
northwest
próbowałem:
  1. $key = array_search(2, $_SESSION['koszyk_porownanie']);



ale niestety nic nie zwraca sad.gif
ctom
@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ć 
northwest
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 sad.gif
Przepraszam za zamieszanie

mam błąd: Fatal error: Maximum execution time of 30 seconds exceeded
ctom
  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);
northwest
dziękuję, pomogło smile.gif)

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


tak
northwest
czyli nie element poprzedni, a ten który znajduje się przed poprzednim smile.gif

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

a jak to pobrać?smile.gif

Może bardziej zobrazuje o co mi chodzi smile.gif
Na stronie jednocześnie mam widoczne 2 produkty... Dlatego zawsze ID muszą być widoczne 2 numerki do przodu/tyłu smile.gif
ctom
@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ę
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.