Paginare dinamica - probleme

Secţiune dedicată începatorilor.

Moderatori: Moderatori, Start Moderator

esix
PHPRomania Supporter
Mesaje: 19
Membru din: Dum Noi 21, 2004 1:00 pm
Localitate: Calafat
Contact:

Paginare dinamica - probleme

Mesajde esix » Dum Dec 12, 2004 10:39 am

Am 2 blocuri de cod: unul afiseaza obiectele din tabel, altul afiseaza Pagina: 0 1 2 3....

PRIMA PARTE:
[php]$pag = $_GET['pag'];
$ob = 3;
$min = $pag * $ob;
print '<br>';
$cmd = "SELECT * from `shop_produse` LIMIT $min, $ob";
$rez = mysql_query($cmd);
while($rnd = mysql_fetch_array($rez, MYSQL_ASSOC)){
print $rnd['Produs'].'<br>';
}[/php]


PARTEA A DOUA:
[php]$cmd = "SELECT * from `shop_produse`";
$rez = mysql_query($cmd);
$cat = mysql_num_rows($rez);
$pag = 0;
while($pag <= round($cat / $ob)){
print "<a href='".$_SERVER['PHP_SELF']."?pag=".$pag."'>"."$pag"."</a>"." ";
$pag++;
}[/php]

De afisat imi afiseaza corespunzator, dar as dori sa inceapa paginarea, sa zicem de la 1 2 3 4... nu de la 0 1 2 3 4... si sa scot link-ul de pe pagina curenta



mihnea sim
Average Member
Mesaje: 149
Membru din: Vin Aug 20, 2004 9:15 pm
Localitate: Alexandria
Contact:

Mesajde mihnea sim » Dum Dec 12, 2004 5:20 pm

[php]
$pag = 1;
while($pag < round($cat / $ob)){
  print "<a href='".$_SERVER['PHP_SELF']."?pag=".$pag."'>"."$pag"."</a>"." ";
  $pag++;
}
[/php]
"o istorie aberanta si injusta copleseste fiinta si o arunca afara din lumea ei"

esix
PHPRomania Supporter
Mesaje: 19
Membru din: Dum Noi 21, 2004 1:00 pm
Localitate: Calafat
Contact:

Mesajde esix » Dum Dec 12, 2004 7:09 pm


mihnea sim
Average Member
Mesaje: 149
Membru din: Vin Aug 20, 2004 9:15 pm
Localitate: Alexandria
Contact:

Mesajde mihnea sim » Dum Dec 12, 2004 10:15 pm

Pai eu am initializat $pag cu 1, iar in loc de "<=" am zis "<", dar acum vad ca am o greseala de algoritm. Uite o varianta corecta:

[php]
$cmd = "SELECT * from `shop_produse`";
$rez = mysql_query($cmd);
$cat = mysql_num_rows($rez);
$pag = 0;
while($pag <= round($cat / $ob)){
$pg = $pag + 1;
  print "<a href='".$_SERVER['PHP_SELF']."?pag=".$pag."'>".$pg."</a>"." ";
  $pag++;
[/php]
"o istorie aberanta si injusta copleseste fiinta si o arunca afara din lumea ei"

esix
PHPRomania Supporter
Mesaje: 19
Membru din: Dum Noi 21, 2004 1:00 pm
Localitate: Calafat
Contact:

Mesajde esix » Dum Dec 12, 2004 10:44 pm

Ok, am sesizat eroarea mea. Acum nu reusesc sa ma gasesc o solutie pentru a afisa fara link pagina curenta. Spre exemplu eu ma aflu acum pe pagina 2 si vreau sa vad paginarea in felul urmator:

Pagina: 2

beeuser
Senior Member
Mesaje: 390
Membru din: Joi Mai 20, 2004 10:32 am
Contact:

Mesajde beeuser » Dum Dec 12, 2004 11:40 pm

pear site:


stefan03
PHPRomania Supporter
Mesaje: 28
Membru din: Mar Iun 01, 2004 12:01 pm
Localitate: Ploiesti

Mesajde stefan03 » Mie Feb 23, 2005 9:39 pm


NDC
Average Member
Mesaje: 127
Membru din: Sâm Feb 19, 2005 11:07 pm
Contact:

Re: Paginare dinamica - probleme

Mesajde NDC » Joi Feb 24, 2005 1:44 am


mihnea sim
Average Member
Mesaje: 149
Membru din: Vin Aug 20, 2004 9:15 pm
Localitate: Alexandria
Contact:

Mesajde mihnea sim » Joi Feb 24, 2005 8:06 am

"o istorie aberanta si injusta copleseste fiinta si o arunca afara din lumea ei"

Avatar utilizator
fabby
Senior Member
Mesaje: 1071
Membru din: Lun Aug 30, 2004 11:51 pm
Localitate: Bucuresti
Contact:

nu stiu daca mai intereseaza pe cineva dar am postat sa fie!

Mesajde fabby » Lun Mar 07, 2005 1:07 pm

mi se pare ca este gresit la ce a scris mihnea sim:

$cmd = "SELECT * from `shop_produse`";
$rez = mysql_query($cmd);
$cat = mysql_num_rows($rez);
$pag = 0;
while($pag <= round($cat / $ob)){
$pg = $pag + 1;
print "<a href='".$_SERVER['PHP_SELF']."?pag=".$pag."'>".$pg."</a>"." ";
$pag++; }

pentru ca, acea functie round nu fac ce trebuie. Si sa demonstrez printr-un exmeplu:
Daca $cat=21 //$cat este nr inregistrarilor
si $ob=10 //iar $ob cred ca reprezinta numarul de inreg pe pagina
round($cat,$ob)=2 ..deci imi face 2 pagini
insa mie imi trebuie 3 pagini:
1 - primele 10 inregistrari
2 - urmatoarele 10 inregistrari
3 - ultima inregistrare

deci, la acel round($cat,$ob) se pierde 1 inregistrare.
Codul pe care l-am facut si afiseaza tot(acu 10 min am terminat de lucrat la el, ca imi trebuia pentru forum) este:

[php]

$query="select * from forum_posts;";
$result=mysql_query($query) or die(mysql_error());
$num=mysql_num_rows($result);
$i=$num%$nrpepagina;
$j=($num-$i)/$nrpepagina;
if($i!=0){
$j=$j+1;
}

if($i==0){
$j=$j-1;}

for($k=1;$k<=$j;$k++){
echo "<a href=\"forum_view.php?webdesign=instalare&pagina=$k\">$k</a>";
echo" ";
}
echo"<br>";

[/php]

Explicatii la el:
de fapt, el cauta sa vada daca restul numarul inregistrarilor % numarul de inreg pe pagina, este 0, atunci, sunt (numarul inregistrarilor / numarul de inreg pe pagina) pagini
daca este diferit de 0, atunci sunt: [numarul inregistrarilor / numarul de inreg pe pagina] + 1 pagini ( am pus in paranteza patrata ca asa arat ca e parte intreaga din acea impartire )
mai exact, daca sunt 21 de inregistrari si 10 sa fie pe pagina
21%10 !=0
[21/10]=2
deci sunt 2+1 pagini(mai adaug 1, ca sa intre ultima inregistrare, pe pagina a 3-a )
... :D ..nuj dc m-am facut inteles..ca de obicei nu sunt inteles!
Today is a good day for... php
www.anunturi-utile.ro - anunturi gratuite

NDC
Average Member
Mesaje: 127
Membru din: Sâm Feb 19, 2005 11:07 pm
Contact:

Re: nu stiu daca mai intereseaza pe cineva dar am postat sa

Mesajde NDC » Lun Mar 07, 2005 10:17 pm


Avatar utilizator
fabby
Senior Member
Mesaje: 1071
Membru din: Lun Aug 30, 2004 11:51 pm
Localitate: Bucuresti
Contact:

Mesajde fabby » Lun Mar 07, 2005 10:25 pm

Today is a good day for... php

www.anunturi-utile.ro - anunturi gratuite

Avatar utilizator
raul_
Senior Member
Mesaje: 711
Membru din: Joi Sep 15, 2005 8:00 am

Mesajde raul_ » Lun Ian 23, 2006 3:13 pm

[STERS]
Ultima oară modificat Mar Ian 24, 2006 4:25 pm de către raul_, modificat 1 dată în total.

Avatar utilizator
fabby
Senior Member
Mesaje: 1071
Membru din: Lun Aug 30, 2004 11:51 pm
Localitate: Bucuresti
Contact:

Mesajde fabby » Lun Ian 23, 2006 3:22 pm

e vechi postu!!! nu mai are rost..iti dai seama ca am gasit de atunci!!!!
merci oricum
Today is a good day for... php

www.anunturi-utile.ro - anunturi gratuite

Avatar utilizator
raul_
Senior Member
Mesaje: 711
Membru din: Joi Sep 15, 2005 8:00 am

Mesajde raul_ » Lun Ian 23, 2006 3:24 pm

[STERS]
Ultima oară modificat Mar Ian 24, 2006 4:46 pm de către raul_, modificat de 2 ori în total.


Înapoi la “PHP Incepători”

Cine este conectat

Utilizatori ce ce navighează pe acest forum: Niciun utilizator înregistrat și 20 vizitatori