Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP][MySQL]Manipulacja w pętli ?
Forum PHP.pl > Forum > Przedszkole
piotr485
Witam Serdecznie!

Mam taki problemik:

Mam mały katalog firm, tworzę coś takiego "następna firma", "poprzednia firma", aby to zrobic posługuję się id FIRMA w GET

Udało mi się zapętlić id które potrzebuje do stworzenia linków i wywołując kod w petli while:

  1. while($row = mysql_fetch_array($wynik_firm)) {
  2. $aktualne_get_firma = $_GET['firma'];
  3. $nazwa_firmy = $row['nazwa_firmy'];
  4. $id = $row['id'];
  5.  
  6. if($aktualne_get_firma == $id) {echo 'Aktualne ID'.$id;}
  7.  
  8. echo $nazwa_firmy.' '.$id.'<br /><br />';
  9.  
  10. }

Z aktualnym GET nie mam problemu smile.gif, limit z zapytania domyslam sie ze bedzie trzeba ustawic na 1, ale jak uzyskac ID 20 przegladajac strone 18, a przykladowo 20 jest nastepnym id ktory by lecial po petli nie mam pojecia jak to napisac probowalem poprzez
  1. if($aktualne_get_firma < $id){echo 'TUTAJ ALBO OD NAJWIEKSZEGO ALBO OD NAJMNIEJSZEGO'.$id;}
ale to jest bez sensu. Jak moge to zrobic.

Poprosze o jakies podpowiedzi! Z gory dziekuje
CyberDuck_
Jak chcesz wyswietlic poprzednia albo nastepna firme to
i tak musisz odswierzyc strone. Zrob poprostu inne zapytanie
do bazy ktore Ci przy odswierzeniu firme nastepna
lub poprzednia firme pokaze jako aktualna, itd ...
W linku mozesz zawsze umieszczac np cos takiego :
  1. echo "<a href='skrypt.php?id=$id" ."&strona=poprzednia'>Poprzednia</a> "
  2. ."<a href='skrypt.php?id=$id" ."&strona=nastepna'>Nastepna</a> ";
piotr485
Może innaczej bo jednak tak jak myslalem nie da rady, a ze nikt mi nieodpisal to stwierdzam ze nikt nie zrozumial mojego pytania.

Wyświetlam za pomoca petli while dwie zmienne z bazy danych:
Nazwa firmy i ID
wyswietlam za pomoca echo i wyglada to ta:

nazwa firmy ID4
o nazwa firmy ID8
peszcze inna nazwa ID6

Zakładając, że id to parametry GET[firma] i aktualnie bedac w get[firma] = 8 jak wyswielic tylko poprzednie id w tym przypadku 4 a jak osobno id6 i nazwe firmy tak abym mogl stworzyc przyciski "nastepna", "poprzednia" - dodam ze warunek lub funkcja nie moze sie opierac na liczeniu wieksza id mniejsza id z tego wzgledu ze musi byc to posortowane alfabetycznie wg firm, a id sa rozne moze byc mniejsze wieksze,
Fifi209
Wrzuć wszystko do tablicy i po indeksach.

array (

[0] = array('firma'),
[1] = array('firma2'),
[2] = array('firma3')

)

Jeżeli wyświetlasz firma2 to sprawdzasz czy istnieje coś w tej tablicy "wcześniej" array_key_exists i później tą samą funkcją (ew. policzyć ile elementów w tablicy count )
piotr485
Cytat(CyberDuck_ @ 18.08.2009, 14:07:49 ) *
Jak chcesz wyswietlic poprzednia albo nastepna firme to
i tak musisz odswierzyc strone. Zrob poprostu inne zapytanie
do bazy ktore Ci przy odswierzeniu firme nastepna
lub poprzednia firme pokaze jako aktualna, itd ...
W linku mozesz zawsze umieszczac np cos takiego :
  1. echo "<a href='skrypt.php?id=$id" ."&strona=poprzednia'>Poprzednia</a> "
  2. ."<a href='skrypt.php?id=$id" ."&strona=nastepna'>Nastepna</a> ";


Tyle to jeszcze wiem, ale chodzi o to aby dostac odpowiednie ID do poprzednia i odpowiednie do nastepna.

Moje zapytanie wyglada tak:

  1. $zapytanie_firm = '
  2. SELECT id, nazwa_firmy
  3.  
  4. FROM katalog_firm
  5. ORDER BY katalog_firm.nazwa_firmy
  6. ';
  7.  
  8. $wynik_firm = mysql_query ($zapytanie_firm) or die (mysql_error());
  9. while($row = mysql_fetch_array($wynik_firm)) {
  10. $nazwa_firmy = $row['nazwa_firmy'];
  11. $id = $row['id'];
  12.  
  13. echo $nazwa_firmy.' '.$id.'<br /><br />';
CyberDuck_
Nie to nie ja nie zrozumialem tylko Ty niezrozumiales
mojej odpowiedzi smile.gif Chodzi o to, ze jak tworzysz po powrocie
odpowiedz z linka to wedlug tego co napisalem masz dwie zmienne:
$id aktualnego i $kierunek od aktualnego.
Wystarczy odpowiednio zadac pytanie.
Przeanalizuj to co napisalem.
Chyba ze chcesz w linku od razu wyswietlic nazwe poprzedniej
i nastepnej firmy to wtedy musisz zadac tez odpowienio pytanie
i dodac do niego LIMIT numer_pozycji, 3 .
Wtedy otrzymasz odpowiedz z bazy trzech rekordow od danej
pozycji w gore. Poprostu w zaleznosci od kierunku zadajesz
pytanie : WHERE id<'$id' albo jesli nastepna firma to WHERE id>'$id'.
Wedlug tego co napisalem o tym LIMIT mozesz miec to wzbogacic o
WHERE id<'$id' LIMIT 1, 3.
W zaleznosci od tego ktory kierunek byl wskazany to mozesz
wyswietlic z tych trzech wynikow pierwszy albo trzeci rekord.
Juz po wyswietleniu strony linki nastepny i poprzedni znowu beda
wskazywac na nastepny i poprzedni od aktualnie wskazywanego, itd ...
piotr485
Cytat(fifi209 @ 18.08.2009, 14:16:10 ) *
Wrzuć wszystko do tablicy i po indeksach.

array (

[0] = array('firma'),
[1] = array('firma2'),
[2] = array('firma3')

)

Jeżeli wyświetlasz firma2 to sprawdzasz czy istnieje coś w tej tablicy "wcześniej" array_key_exists i później tą samą funkcją (ew. policzyć ile elementów w tablicy count )


jakoś array_key_exist nie chciało mi działac, poki co stworzylem sobie taka tablice:

  1. $firmy = array (
  2.  
  3. 0 => "Pierwsza firma na wykazie",
  4. 1 => firma2,
  5. 2 => firma3,
  6. 5 => "firma inna",
  7. 4 => "Ostatnia firma na wykazie"
  8.  
  9. );
  10.  


Nie wiedzialem ze tablice maja tyle funkcji, po manualu chodze i znalazlem ciekawe funkcje next prev i wlasnie zatrzymalem sie na next, mianowicie chce wyswietlic nastepna tablice z GET, ale nie dziala

  1. $teraz = $_GET['firma'];
  2. $teraz2 = $firmy[$teraz];
  3. echo next($teraz2);


Warning: next() [function.next]: Passed variable is not an array or object in on line 89

Chciałem wyświetlic nastepna tablice zmiennej $teraz2, ale nie dziala nie wiem dlaczego ?

Dlaczego ten kod nie działa ? a dokładnie to funkcja next ? Co z nią jest nie tak ? sad.gif

  1. $firmy = array (
  2.  
  3. 11 => array (
  4. tytul => "Firma pierwsza",
  5. id => 11
  6.  
  7. ),
  8.  
  9. 22 => array (
  10. tytul => "Środkowa",
  11. id => 22
  12.  
  13. ),
  14.  
  15. 65 => array (
  16. tytul => "Ostatnia",
  17. id => 65
  18.  
  19. )
  20.  
  21. );
  22.  
  23. $cos = $firmy[$_GET['firma']][tytul];
  24. $cos1 = next($firmy);
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.