Paginare dinamica - probleme
Moderatori: Moderatori, Start Moderator
-
esix
- PHPRomania Supporter
- Mesaje: 19
- Membru din: Dum Noi 21, 2004 1:00 pm
- Localitate: Calafat
- Contact:
Paginare dinamica - probleme
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
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:
-
mihnea sim
- Average Member
- Mesaje: 149
- Membru din: Vin Aug 20, 2004 9:15 pm
- Localitate: Alexandria
- Contact:
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]
[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"
-
mihnea sim
- Average Member
- Mesaje: 149
- Membru din: Vin Aug 20, 2004 9:15 pm
- Localitate: Alexandria
- Contact:
- 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!
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 )
...
..nuj dc m-am facut inteles..ca de obicei nu sunt inteles!
$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 )
...
Today is a good day for... php
www.anunturi-utile.ro - anunturi gratuite
www.anunturi-utile.ro - anunturi gratuite
Cine este conectat
Utilizatori ce ce navighează pe acest forum: Niciun utilizator înregistrat și 20 vizitatori