| Subiectul anterior :: Subiectul următor |
| Autor |
Mesaj |
esix
Data înscrierii: 21/Noi/2004
Mesaje: 19
Locație: Calafat
|
| Trimis: Dum Dec 12, 2004 10:39 am Titlul subiectului: Paginare dinamica - probleme |
|
|
Am 2 blocuri de cod: unul afiseaza obiectele din tabel, altul afiseaza Pagina: 0 1 2 3....
PRIMA PARTE:
an style="color: #000000"><?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>';
}
PARTEA A DOUA:
an style="color: #000000"><?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++;
}
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 |
|
| Sus |
|
mihnea sim
Data înscrierii: 20/Aug/2004
Mesaje: 149
Locație: Alexandria
|
| Trimis: Dum Dec 12, 2004 5:20 pm Titlul subiectului: |
|
|
| an style="color: #000000"><?php $pag = 1;
while($pag < round($cat / $ob)){
print "<a href='".$_SERVER['PHP_SELF']."?pag=".$pag."'>"."$pag"."</a>"." ";
$pag++;
} |
|
| Sus |
|
esix
Data înscrierii: 21/Noi/2004
Mesaje: 19
Locație: Calafat
|
| Trimis: Dum Dec 12, 2004 7:09 pm Titlul subiectului: |
|
|
mihnea sim a scris: an style="color: #000000"><?php $pag = 1;
while($pag < round($cat / $ob)){
print "<a href='".$_SERVER['PHP_SELF']."?pag=".$pag."'>"."$pag"."</a>"." ";
$pag++;
}
Nu inteleg?! pai asta este acelasi cod care l-am scris eu... Pe mine ma intereseaza sa imi afiseze Pagina:1234 nu Pagina:01234 si totodata m-ar interesa sa scot link-ul de pe pagina curenta... |
|
| Sus |
|
mihnea sim
Data înscrierii: 20/Aug/2004
Mesaje: 149
Locație: Alexandria
|
| Trimis: Dum Dec 12, 2004 10:15 pm Titlul subiectului: |
|
|
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:
an style="color: #000000"><?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++; |
|
| Sus |
|
esix
Data înscrierii: 21/Noi/2004
Mesaje: 19
Locație: Calafat
|
| Trimis: Dum Dec 12, 2004 10:44 pm Titlul subiectului: |
|
|
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: 1234 |
|
| Sus |
|
beeuser
Data înscrierii: 20/Mai/2004
Mesaje: 384
|
| Trimis: Dum Dec 12, 2004 11:40 pm Titlul subiectului: |
|
|
pear site:
http://pear.php.net/manual/en/package.html.pager.php |
|
| Sus |
|
stefan03
Data înscrierii: 01/Iun/2004
Mesaje: 28
Locație: Ploiesti
|
| Trimis: Mie Feb 23, 2005 9:39 pm Titlul subiectului: |
|
|
Link scos de pe pagina activa
Cod:
$cmd = "SELECT * from `produse`";
$rez = mysql_query($cmd);
$cat = mysql_num_rows($rez);
$pag = 0;
while($pag < round($cat / $ob)){
$pg = $pag + 1;
if ($_GET['pag'] == ($pg-1)){
print "$pg";
}else{
print "<a href='".$_SERVER['PHP_SELF']."?pag=".$pag."'>".$pg."</a>"." "; }
$pag++;
}
|
|
| Sus |
|
NDC
Data înscrierii: 19/Feb/2005
Mesaje: 127
|
| Trimis: Joi Feb 24, 2005 1:44 am Titlul subiectului: Re: Paginare dinamica - probleme |
|
|
Salut,
n-ar fi rau sa optimizezi totusi procesul:
esix a scris:
PARTEA A DOUA:
an style="color: #000000"><?php $cmd = "SELECT * from `shop_produse`";
$rez = mysql_query($cmd);
$cat = mysql_num_rows($rez);
Deci tu selectezi TOT din baza de date? Un query ca asta intoarce un ditamai resource, merge lent si incetineste serverul. Corect este
Cod: $cmd = "SELECT COUNT(*) from `shop_produse`";
$rez = mysql_fetch_row(mysql_query($cmd));
$cat =$rez[0]; |
|
| Sus |
|
mihnea sim
Data înscrierii: 20/Aug/2004
Mesaje: 149
Locație: Alexandria
|
| Trimis: Joi Feb 24, 2005 8:06 am Titlul subiectului: |
|
|
| daca esti preocupat de timpul de executie ... si mai eficient ar fi mysql_result in loc de mysql_fetch_row ;) |
|
| Sus |
|
beginner18
Data înscrierii: 30/Aug/2004
Mesaje: 714
Locație: Bucuresti
|
| Trimis: Lun Mar 07, 2005 1:07 pm Titlul subiectului: 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:
an style="color: #000000"><?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>";
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! |
|
| Sus |
|
NDC
Data înscrierii: 19/Feb/2005
Mesaje: 127
|
| Trimis: Lun Mar 07, 2005 10:17 pm Titlul subiectului: Re: nu stiu daca mai intereseaza pe cineva dar am postat sa |
|
|
beginner18 a scris: mi se pare ca este gresit la ce a scris mihnea sim:
...
pentru ca, acea functie round nu fac ce trebuie.
...
Codul pe care l-am facut si afiseaza tot(acu 10 min am terminat de lucrat la el, ca imi trebuia pentru forum) este:
...
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 )
...
... :D ..nuj dc m-am facut inteles..ca de obicei nu sunt inteles!
Nu inteleg de ce trebuie sa reinventezi roata??
Exista functia ceil(). Stii ce face? returneaza numarul intreg imediat urmator argumentului dat, daca acesta are parte fractionara. Pentru 2 returneaza 2, pentru 2.1 returneaza 3 etc.
Va complicati atata pentru un script de paginare care e la mintea unui elev de clasa a cincea. [/b] |
|
| Sus |
|
beginner18
Data înscrierii: 30/Aug/2004
Mesaje: 714
Locație: Bucuresti
|
| Trimis: Lun Mar 07, 2005 10:25 pm Titlul subiectului: |
|
|
| uite...hai sa invatam sa gandim..crezi tu ca daca stiam de aceasta functie, as mai fi facut porcaria aia? |
|
| Sus |
|
raul_
Data înscrierii: 15/Sep/2005
Mesaje: 711
|
| Trimis: Lun Ian 23, 2006 3:13 pm Titlul subiectului: |
|
|
| [STERS] |
|
| Sus |
|
beginner18
Data înscrierii: 30/Aug/2004
Mesaje: 714
Locație: Bucuresti
|
| Trimis: Lun Ian 23, 2006 3:22 pm Titlul subiectului: |
|
|
e vechi postu!!! nu mai are rost..iti dai seama ca am gasit de atunci!!!!
merci oricum |
|
| Sus |
|
raul_
Data înscrierii: 15/Sep/2005
Mesaje: 711
|
| Trimis: Lun Ian 23, 2006 3:24 pm Titlul subiectului: |
|
|
| [STERS] |
|
| Sus |
|
PHPRomania Bot
Bot Member
Data înscrierii: 27/Dec/2007
Mesaje: 1
Locaţie: Server Google |
| Trimis: Mie Dec 26, 2007 7:01 pm Titlul subiectului: Ad |
|
|
|
|
|
| Sus |
|
| |