Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP][MYSQL]Zmiana priorytetu - jak pobrać wyniki
Forum PHP.pl > Forum > Przedszkole
dobryvinyl.com
Witam,

mam dość nietypowy problem. Chcialbym poprosić o pomoc w jego rozwiązaniu.

Mam tabele w bazie ktora zawiera kontakty, zawiera ona kolumne o nazwie priorytet.
Przyjmuje ona wartosci od 1 do 99. Rekordy pobieram w następujący sposób, pomijajac oczywiscie polaczenie itd

  1. <?php
  2. while ($row_list = mysql_fetch_array($response_list)) {
  3. $lp++;
  4. echo $lp . "-";
  5. echo $row_list[priorytet];
  6. echo $lp . "<BR>";
  7. }
  8. ?>


Wynikiem jest w tym momecie coś takiego

1 - 66
2 - 78
3 - 82
4 - 95
5 - 99

Zalezaloby mi teraz zeby pobraz za kazdym razem jescze poprzedni i kolejny rekord z tablicy, zby wynik wygladał tak:

1 - 66 - p: - n:78
2 - 78 - p:66 - n:82
3 - 82 - p:78 - n:95
4 - 95 - p:82 - n:99
5 - 99 - p:95 - n:

ułatwi mi to przekazywanie koment umożliwiających zamiane konkretnych rekordów miesjcami. o ile poprzedni rekord jestem w sanie sobie zdefiniowac, przypisujac wartosc do nowej zmiennej to calkowicie niewiem jak zabrac sie za przedstawienie kolejnego.
wizard144
Nie rozumiem, opisz problem lepiej...
dobryvinyl.com
Za pomocą petli while wyswietlam wszystkie rekordy z bazy danych, jak teraz wyswietlic w jednej pozycji wartosc poprzedniego, aktualnego i nastepnego pola z kolumny priorytet.

Zaluzmy ze tabela wyglada tak:

id | tytul | priorytet
1 | tytul A | 99
2 | tytul B | 70
3 | tytul C | 20
4 | tytul D | 10


i jak teraz to wyswietlic zby efekt byl taki

1 tytul A - poprzedni priorytet: XX - aktualny priorytet: 99 - nastepny priorytet: 70
2 tytul B - poprzedni priorytet: 99 - aktualny priorytet: 70 - nastepny priorytet: 20
3 tytul C - poprzedni priorytet: 70 - aktualny priorytet: 20 - nastepny priorytet: 10
4 tytul D - poprzedni priorytet: 20 - aktualny priorytet: 10 - nastepny priorytet: XX

O ile jak jest aktualny i poprzedni jestem wstanie zrobic, to niewiem jak dobrac sie do nastepnej wartosci.
Ponizej kod jaki mam w głowie

  1. <?php
  2. while ($row_list = mysql_fetch_array($response_list)) {
  3.  
  4.     print "$row_list[id] $row_list[tytul] - poprzedni priorytet: $poprzedni - aktualny priorytet: $row_list[priorytet] - nastepny priorytet: ? ? ? ?</br>";
  5.  
  6. $poprzedni = $row_list[priorytet];
  7.  
  8.    }
  9. ?>


Czy teraz jest to jaśniejsze?
kornel-php
Wrzuć to co pobierasz do tablicy $tab[] i potem odczytaj:

  1. <?php
  2. $i = 0;
  3.  
  4. while($i<$n) {
  5.  
  6.   echo 'poprzedni '.$tab[$i-1];
  7.   echo 'aktualny '.$tab[$i];
  8.   echo 'nastepny '.$tab[$i+1];
  9.  
  10.   $i++;
  11.  
  12. }
  13. ?>


Coś takiego.
dobryvinyl.com
kornel-php a czy mozesz mnie jakos bardzij na konkretne tory skierowac?
jakis przyklad, chocby szkielet?

Juz Ci bardzo dzikuje ale bede wdzieczny za wytlumaczenie.
kornel-php
Ok. Zamiast wyświetlać dane na ekran wrzucasz je do tablicy za pomocą pętli, dzięki której wyciągasz dane z bazy. I tak dla każdego kolejnego rekordu:

  1. <?php
  2. $i = 0;
  3. while(są_dane) { $tab[$i] = $wynik_zapytania; $i++; }
  4. ?>


Teraz uporządkowane dane masz już w tablicy. Odczytujesz je podobną instrukcją:

  1. <?php
  2. while(są_dane) {
  3.  
  4.   echo $tab[$i-1]; // element poprzedni (o 1 mniejszy)
  5.   echo $tab[$i]; // element bieżący
  6.   echo $tab[$i+1]; // element następny (o 1 większy)
  7.  
  8.   $i++; // przejdź do kolejnego elementu
  9.  
  10. }
  11. ?>


Łapiesz?
dobryvinyl.com
Cos mi to nie idzie, domyslam sie ze popelniam gdzies blad w miejscu są_dane. Powalcze jeszcze, mam nadzieje ze znajde rozwiazanie. Tak czy siak bardzo dziekujeza pomoc.
zelu
Zamiast są dane musisz wstawić mysql_fetch_assoc (lub podobne)... To tylko ogólny schemat a nie gotowy kod smile.gif

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