Problema script paginare

Aici prezentati probleme, intrebari, sau orice subiecte legate de scripturi si tutoriale de pe site.
MarPlo
Administratorul site-ului
Mesaje: 4343

Problema script paginare

Conectarea se face in cadrul clasei, cu datele din proprietatea array $mysql; nu functioneaza cu o conectare din exterior.
Daca vrei sa folosesti datele de conectare scrise in "bd.php", depinde cum le ai acolo adaugate. Trebuie sa stii sa lucrezi cu clase si proprietati.
Se include fisierul "bd.php" in functia __construct(), si tot in ea se atribue la proprietatea $mysql variabilele cu datele din acel fisier.

Cod: Selectaţi tot

public function __construct() {
  include 'bd.php';
  $this->mysql['host'] = $var_host_din_bd;
  $this->mysql['user'] = $var_user_din_bd;
  // ...
}
 

dim Mesaje: 61
Multumesc pt indrumare acum functioneaza da mai am cateva intrebari:
1. in momentu in cate schimb numaru de afisari si sunt pe o pagina mai mare care nu mai exista imi returneaza 0 rezultate dar nu imi apare si paginareanoua nici un link sa pot sa ajung la pagile existente. Ce pot sa fac??
2. daca am mai multe pagini pot sa folosesc aceiasi clasa de paginare??? din ce am vazut in exemplu pot sa schimb tabelul din basa de date da problema e ca nu am aceleasi coloane in el deci nu o sa imi afiseze ce trebuie. pot sa fac ceva ???

MarPlo Mesaje: 4343
1. Ca sa afiseze link-uri de paginare si cand e accesata o pagina mai mare care nu exista, incearca asa, in functia getLinks(), inlocuieste:

Cod: Selectaţi tot

$currentpage = $this->idpage + 1;
 
Cu:

Cod: Selectaţi tot

$currentpage = (($this->idpage + 1) <= $this->totalpages) ? $this->idpage + 1 : $this->totalpages;
 
2. Ca sa folosesti tabele cu coloane diferite, unde e acest cod, in functia getMysqlRows():

Cod: Selectaţi tot

while($row = $resql->fetch_assoc()) {
  $re_cnt .=  '<h3>'. $row['title']. '</h3>'. $row['id']. '<div class="content">'. $row['content']. '</div>';
}
 
Incearca sa adaugi conditii de utilizare coloane in functie de numele tabelului.
De exemplu:

Cod: Selectaţi tot

while($row = $resql->fetch_assoc()) {
  if($this->table == 'table1') $re_cnt .=  '<h3>'. $row['title']. '</h3>'. $row['id']. '<div class="content">'. $row['content']. '</div>';
  else if($this->table == 'table2') $re_cnt .=  '<div>'. $row['col1']. '</div><div class="content">'. $row['col2']. '</div>';
}
 

dim Mesaje: 61
Multumesc acum imi apare si paginare sub textu " 0 rezultate ", dar in momentu in care nu am nici un element in table in loc sa apara " 0 inregistrari in table" apare tot " 0 rezultate ".
Cand nu am intrari ar trebui sa apara 0 inregistrari in tabel, mesaju nu este cel correct.

Acum ca am alta pagina de conectare pot sa scot mesajele de eroare pt BD?

Cod: Selectaţi tot

 else $re_cnt .= 'Eroare: '. $this->conn->error;

  $this->conn->close();
}
else $re_cnt .= 'Nu exista connectare la baza de date MySQL '. mysqli_connect_error();
Nu cred ca mai sunt necesare?

MarPlo Mesaje: 4343
Nu stiu cu ce afecteaza daca apare mesaj "0 rezultate" sau '0 inregistrari', eu asi lasa asa.
Faci cum crezi cu mesajele de conectare, oricum nu incurca.

dim Mesaje: 61
Scuze ca te stresses cu tot felu de intrebari incercam daor sa imi dau seama daca pot sa pun conditi pt a afisa si mesaju respectiv
Asta pt a incerca sa inteleg mai bine scriptu tau
Am rezolvat problema asta cam asa:

Cod: Selectaţi tot

$sql = "SELECT * FROM `$this->table` LIMIT $startrow, $this->rowsperpage";
          if($resql = $this->conn->query($sql)) {
            // daca $totalpages este = 0 
             if($this->totalpages == 0)  echo '0 inregistrari in table;
             
            // daca $resql contine cel putin un rand
            elseif($resql->num_rows > 0) {
              // AICI MODIFICATI numele coloanelor si creati codul HTML
              while($row = $resql->fetch_assoc()) {
              .....
              }
            }
            else  $re_cnt .= '0 rezultate;
            }
        }    
      }
  }

    return $re_cnt;
  }
 
Si daca tot am zis ca te stresez sa continui
Am o problema in IE sa zicem ca am 10 pagini si le vizitez pe toate iar apoi modific numaru de afisari
imi apar mai putine sau apar mai multe depinde de modificare
problema este ca in momentu in care vizitez paginle imi rame aceiasi paginare pe toate chiar daca pe prima am dat refresh pe prima
trebuie sa le dau la toate la rand
nu m-ar deranja dar daca o sa vreu sa pun un buton de modificate nr de afisari pe pagina cred ca atunci ar fi o problema
sti cum pot sa scap de problemuta asta.

Acum as mai avea inca o intrebare
dupa ce am rezolvat problema cu afisarea din cele doau tabele as fi curios daca pot sa creez si doua coduri HTML pt afiasarea datelor sa zicem din primu tanel dar cu o alta aranjare cu un alt aspect.

MarPlo Mesaje: 4343
Salut
Problema mentionata in IE este de la inregistrarea paginii in cache de catre browser.
Ca o pagina sa nu fie adaugata de browser in cache, trebuie aceste tag-uri in zona <head> a codului html.

Cod: Selectaţi tot

<META HTTP-EQUIV="Pragma" CONTENT="no-cache">
<META HTTP-EQUIV="Expires" CONTENT="-1">
La restul modificarilor pe care vrei sa le faci nu ma bag.

Subiecte similare