Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [php]czy można zrobić z tego funkcje albo coś?
Forum PHP.pl > Forum > Przedszkole
lamcpp
witam, tutaj kawałek kodu stronnicowania, który niemal identyczny (poza zapytaniem SELECT który jest rózne, w zależnośći od zmiennych pobranych z GETA) jest w conajmniej 10 miejscach u mnie na stronie:


  1. $strona = 20;
  2.  
  3. if(isset($_GET['p']) && is_numeric($_GET['p']))
  4. {
  5. $ilosc_stron = $_GET['p'];
  6. }
  7. else
  8. {
  9. $r = mysqli_query($dbc,"SELECT COUNT(id) FROM zdjecie");
  10. $w = mysqli_fetch_array($r,MYSQLI_NUM);
  11. $ilosc_wszystkich = $w[0];
  12. if($ilosc_wszystkich > $strona)
  13. {
  14. $ilosc_stron = ceil($ilosc_wszystkich / $strona);
  15. }
  16. else
  17. {
  18. $ilosc_stron = 1;
  19. }
  20. }
  21.  
  22. if(isset($_GET['s']) && is_numeric($_GET['s']))
  23. {
  24. $start = $_GET['s'];
  25. }
  26. else
  27. {
  28. $start = 0;
  29. }

zmienia się jedynie zapytanie. Czy idzie zrobić z tego funkcje i czy to logiczne podejscie?bo to tylko kawałek kodu stronnicowania, reszta jest już tak zintegrowana z innym kodem ze nie idzie nic z nią zrobić.
próbowałem wstawić function nazwa_funkcji($zmienna ="")
kod funkcji....
i w miejscu gdzie mam ten niepowtarzajacy się select wczytać tego SELECTA ze zmiennej:
$r = mysqli_query($dbc,"$zmienna");
a później wyświetlić to na stronie wywołując funkcje poprostu po nazwie. Ale pokazują mi się błędy, że zapytanie nie pobiera żadnych wartości itp. Czy wogóle to dobre myślenie zeby to ująć w funkcje, a jeśli tak to czy jako parametr można przesyłać całe zapytanie SQL, a jesli tak to jak to zrobić by błędów nie było:)
Blame
Skoro kod ci się powtarza to tak, ale skoro pisałeś function nazwa_funkcji($zmienna ="") to się nie dziwie, że nie działa bo powinno wyglądać tak:function nazwa_funkcji($zmienna), przy czym $zmienna to jest to twoje SELECT.
lamcpp
to miała być wartość domyślna czyli:
  1.  
  2. function nazwa_funkcji($zmienna ="DOMYŚLNY SELECT,KTÓRY WYKONA SIE GDY NIE MA ARGUMENTU PODANEGO")
patryk9200
może przedstawię tobie mój sposób na stronicowanie, myślę, że jest trochę lepszy a na dodatek w formie funcji:
  1. function Podstrony ($l_odp,$l_odp_nastronie,$l_odp_napasku,$a)
  2. { //funkcja tworząca nawigację
  3. echo '<center><table><tr>';
  4. $l_odp_podz = intval($l_odp/$l_odp_nastronie)+1;
  5. $l_odp_podz_mod = $l_odp%$l_odp_nastronie;
  6. if($l_odp_podz_mod>0){++$l_odp_podz;}
  7. if($a>=$l_odp_podz){$a=$l_odp_podz-1;}
  8. if($a>1){$tablica['prev']=$a-1;}else {$tablica['prev']=0;}
  9. if($a<=$l_odp_napasku){$koniec=$l_odp_napasku*2+2;}else{$koniec=$a+$l_odp_napasku+1;}
  10. if($a<=$koniec-$l_odp_napasku){$star=$a-$l_odp_napasku;}
  11. if($a>=$l_odp_podz-$l_odp_napasku){$star=$l_odp_podz-$l_odp_napasku*2-1;}
  12. if($koniec>$l_odp_podz){$koniec=$l_odp_podz;}
  13. if($star<1){$star=1;}
  14. for($i=$star;$i<$koniec;++$i){
  15. if($i<$a){$tablica[]=$i;}
  16. if($i==$a){$tablica['active'] = $i;}
  17. if($i>$a){$tablica[]=$i;}
  18. }
  19. if($a<$l_odp_podz-1){$tablica['next']=$a+1;}else{$tablica['next']=0;}
  20. $nawigacja = $tablica;
  21. foreach($nawigacja as $klucz => $wartosc)
  22. {
  23. if(is_numeric($klucz)){
  24. $tresc .= '<td style="background-color: #c8c8c8"><a href="?page='.$wartosc.'">'.$wartosc.'</a></td>' ;
  25. }else{
  26. if($klucz == 'prev'){$tresc .= '<td style="background-color:#989899"><a href="?page='.$wartosc.'"><</a></td>';}
  27. if($klucz == 'next'){$tresc .= '<td style="background-color:#989899"><a href="?page='.$wartosc.'">></a></td>';}
  28. if($klucz == 'active'){$tresc .= '<td style="background-color: #666667"><a href="?page='.$wartosc.'"><strong>'.$wartosc.'</strong></a></td>';}
  29. }
  30. }
  31. echo $tresc;
  32. echo '</tr></table></center>';
  33. }

a jak działa?
tak:
Podstrony($ilosc_wierszy, 10, 3, $_GET['page']);
$ilość wierszy= ilość rekordów w bazie
10 = co ile rekordów ma stronicować
3= ile linków do podstron ma mieć (3 na każdą stronę czyli razem 6) można zmineijszyć jak i zwiększyć
$_GET['page'] = aktualna strona na której jesteśmy
lamcpp
no tak, tylko że ten skrypt dotyczy tablic, a ja operuje na bazie danych.
patryk9200
jakich tablic? to operuje na bazie danych pokażę Tobie jak go stosuję:
  1. //Zapytanie do bazy danych zliczające liczbę rekordów
  2. $zapytanie = mysql_query("SELECT * FROM ".$dbprefix."news WHERE page='".PageID."'");
  3. $ilosc_wierszy = mysql_num_rows($zapytanie);
  4. //Wywołuję funkcję
  5. Podstrony($ilosc_wierszy, 10, 3, $_GET['page']);
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.