problema paginare

Aici prezentati probleme, intrebari, sau orice subiecte legate de scripturi si tutoriale de pe site.
Avatar utilizator
trif
Mesaje: 500

problema paginare

salut, am luat codul php de paginare de pe sitele vostru si vreau sa il implementaz la sitele meu si uite cum este el fara paginare

Cod: Selectaţi tot

 <?php
$litera = $_GET['id'];
$query="SELECT * FROM cantari_rosii WHERE denumire LIKE '$litera%' ORDER BY id DESC";
$result=mysql_query($query);
$num=mysql_num_rows($result);
echo '<b><center>Cantari POWER POINT</center></b><br>';
echo '<center><a href="cantari.php">TOATE</a> <a href="cantari.php?id=a">A</a> <a href="cantari.php?id=b">B</a> ...</center><br>';
echo '<center><table border="1" width="700" >';
echo '<tr> <th> Denumire </th>  <th> Data</th> <th> Descarca</th></tr>';
$i=0;
while ($i < $num) {
  $rand=mysql_fetch_array($result);
	echo '<tr>  <td><center>'.$rand['denumire'].'</center></td> <td><center>'.$rand['data'].' </center></td><td><a href="cantari.php/'.$rand['descarca'].' "><center><img src="../imagini/buton-descarca.png"/></center></td></a> </tr>';
    ++$i;
} echo '</table></center>';

?>
si codul cu paginare

Cod: Selectaţi tot

<?php
// Script de paginare, de la https://marplo.net

// Datele pt. conectare la baza de date
// MODIFICATI
$host = "localhost";	// server MySQL
$utilizator = "root"; 
$parola = "parola";
$numebd = "nume_bd";	// nume baza de date

// Conectarea la baza de date
$conn = mysql_connect($host, $utilizator, $parola);
if (!$conn) {
  echo 'Conectare nereusita la MySQL'; 
  exit;
}

// Selectarea bazei de date
if (!mysql_select_db($numebd, $conn)) {
  echo 'Baza de date nu a putut fi selectata deoarece : '. mysql_error();
  exit;
}

// Setarea pentru format UTF-8
$sql = "SET NAMES 'utf8'";
mysql_query($sql, $conn);

// Afla cate linii sunt in tabel (MODIFICATI 'nume_tb') din baza de date  
$sql = "SELECT COUNT(*) FROM `nume_tb`";  
$result = mysql_query($sql, $conn) or trigger_error(E_USER_ERROR);  
$r = mysql_fetch_row($result);  
$numrows = $r[0];  
 
// Stabileste numarul de linii din tabel afisate in pagina 
$rowsperpage = 10;  
// afla numarul total necesar de pagini 
$totalpages = ceil($numrows / $rowsperpage);		// ceil face rotunjire la int. maxim
 
// Obtine pagina curenta sau seteaza default 
if (isset($_GET['currentpage']) && is_numeric($_GET['currentpage'])) {  
  // seteaza variabila ca int 
  $currentpage = (int) $_GET['currentpage'];  
} else {  
  // pagina care este initial afisata (pagina default) 
  $currentpage = 1;  
}
 
// daca pagina curenta e mai mare decat total pagini...
if ($currentpage > $totalpages) {  
  // seteaza pagina curenta la ultima pagina  
  $currentpage = $totalpages;  
} 
// daca pagina curenta e mai mica decat prima pagina...  
if ($currentpage < 1) {  
  // seteaza pagina curenta la prima pagina   
  $currentpage = 1;  
} 
 
// lista cu pagini, in functie de pagina curenta   
$offset = ($currentpage - 1) * $rowsperpage;  
 
// obtine datele din tabel (MODIFICATI 'nume_tb') din baza de date  
$sql = "SELECT * FROM `nume_tb` LIMIT $offset, $rowsperpage";  
$result = mysql_query($sql, $conn) or trigger_error(E_USER_ERROR);  
 
// parcurgerea matricei cu datele obtinute 
while ($list = mysql_fetch_assoc($result)) {  
  // - MODIFICATI numele coloanelor tabelului ('id' si 'texte')
  // Stocheaza datele returnate de MySQL in variabile array pt. fiecare coloana
  $id[] = $list['id'];
  $text[] = $list['texte'];
}
mysql_close();	// Incheie conexiunea cu mysql

/*** Afisarea datelor obtinute ***/
// Parcurge variabilele array setate in bucla WHILE
for($i=0; $i<count($id); $i++) {
  // Aici puteti adauga cod HTML pentru aspectul grafic al afisarii
  echo $id[$i]. " - ". $text[$i]. "<br />";
}

/*** Construirea link-urilor pt. paginare ***/ 
// raza nr. link-uri din jurul celui curent 
$range = 3;
 
// Link-uri inapoi, daca pagina curenta nu e prima
if ($currentpage > 1) {  
  // arata << pt. link la prima pagina  
  echo " <a href='{$_SERVER['PHP_SELF']}?currentpage=1'><<</a> &nbsp; ";  
  // obtine nr. pagina din urma 
  $prevpage = $currentpage - 1;  
  // arata < pt. link la o pagina in urma 
  echo " <a href='{$_SERVER['PHP_SELF']}?currentpage=$prevpage'><</a> &nbsp;";  
} 
 
// definirea link-urilor din raza paginii curente
for ($x = ($currentpage - $range); $x < (($currentpage + $range) + 1); $x++) {  
  // daca e un nr. de pagina valid ... 
  if (($x > 0) && ($x <= $totalpages)) {  
	 // daca nr. e pagina curenta ...  
	 if ($x == $currentpage) {  
		// afiseaza nr. pagina fara a fi link  
		echo " [<b>$x</b>] ";  
	 // daca nr. nu e pagina curenta ...  
	 } else {  
		// il face link  
	echo " <a href='{$_SERVER['PHP_SELF']}?currentpage=$x'>$x</a> ";  
	 }  
  }
}
		  
// Daca pagina curenta nu e ultima, afiseaza link inainte si spre ultima pagina
if ($currentpage != $totalpages) {  
  // obtine pagina urmatoare 
  $nextpage = $currentpage + 1;  
   // arata > pt. urmatoarea pagina   
  echo "&nbsp; <a href='{$_SERVER['PHP_SELF']}?currentpage=$nextpage'>></a> ";  
  //  arata >> pt. ultima pagina
  echo " &nbsp; <a href='{$_SERVER['PHP_SELF']}?currentpage=$totalpages'>>></a> ";  
}
?>
si uite ce am facut eu

Cod: Selectaţi tot

<?php
$host = "localhost";
$utilizator = "root"; 
$parola = "ialexs";
$numebd = "cantari_ppt";	
$conn = mysql_connect($host, $utilizator, $parola);
if (!$conn) {
  echo 'Conectare nereusita la MySQL'; 
  exit;
}
if (!mysql_select_db($numebd, $conn)) {
  echo 'Baza de date nu a putut fi selectata deoarece : '. mysql_error();
  exit;
}
$sql = "SET NAMES 'utf8'";
mysql_query($sql, $conn);

// Afla cate linii sunt in tabel (MODIFICATI 'cantari_rosii') din baza de date  
 $litera = $_GET['id'];
$sql="SELECT * FROM cantari_rosii WHERE denumire LIKE '$litera%' ORDER BY id DESC";
$result = mysql_query($sql, $conn) or trigger_error(E_USER_ERROR);  
$r = mysql_fetch_row($result);  
echo '<b><center>Cantari POWER POINT</center></b><br>';
echo '<center><a href="cantari.php">TOATE</a> <a href="cantari.php?id=a">A</a> <a href="cantari.php?id=b">B</a> <a href="cantari.php?id=c">C</a> <a href="cantari.php?id=d">D</a> <a href="cantari.php?id=e">E</a> <a href="cantari.php?id=f">F</a> <a href="cantari.php?id=g">G</a> <a href="cantari.php?id=h">H</a> <a href="cantari.php?id=i">I</a> <a href="cantari.php?id=j">J</a> <a href="cantari.php?id=k">K</a> <a href="cantari.php?id=l">L</a> <a href="cantari.php?id=m">M</a> <a href="cantari.php?id=n">N</a> <a href="cantari.php?id=o">O</a> <a href="cantari.php?id=p">P</a> <a href="cantari.php?id=q">Q</a> <a href="cantari.php?id=r">R</a> <a href="cantari.php?id=s">S</a> <a href="cantari.php?id=t">T</a> <a href="cantari.php?id=u">U</a> <a href="cantari.php?id=v">V</a> <a href="cantari.php?id=w">W</a> <a href="cantari.php?id=x">X</a> <a href="cantari.php?id=y">Y</a> <a href="cantari.php?id=z">Z</a></center><br>';
echo '<center><table border="1" width="700" >';
echo '<tr> <th> Denumire </th>  <th> Data</th> <th> Descarca</th></tr></table>';
$numrows = $r[0];  
// Stabileste numarul de linii din tabel afisate in pagina 
$rowsperpage = 10;  
// afla numarul total necesar de pagini 
$totalpages = ceil($numrows / $rowsperpage);		// ceil face rotunjire la int. maxim
// Obtine pagina curenta sau seteaza default 
if (isset($_GET['currentpage']) && is_numeric($_GET['currentpage'])) {  
  // seteaza variabila ca int 
  $currentpage = (int) $_GET['currentpage'];  
} else {  
  // pagina care este initial afisata (pagina default) 
  $currentpage = 1;  
}
// daca pagina curenta e mai mare decat total pagini...
if ($currentpage > $totalpages) {  
  // seteaza pagina curenta la ultima pagina  
  $currentpage = $totalpages;  
} 
// daca pagina curenta e mai mica decat prima pagina...  
if ($currentpage < 1) {  
  // seteaza pagina curenta la prima pagina   
  $currentpage = 1;  
} 
// lista cu pagini, in functie de pagina curenta   
$offset = ($currentpage - 1) * $rowsperpage;  
 
// obtine datele din tabel (MODIFICATI 'cantari_rosii') din baza de date  
$sql = "SELECT * FROM `cantari_rosii` LIMIT $offset, $rowsperpage";  
$result = mysql_query($sql, $conn) or trigger_error(E_USER_ERROR);  
 
// parcurgerea matricei cu datele obtinute 
while ($list = mysql_fetch_assoc($result)) {  
  // - MODIFICATI numele coloanelor tabelului ('id' si 'texte')
  // Stocheaza datele returnate de MySQL in variabile array pt. fiecare coloana

  $denumire[] = $list['denumire'];
}
mysql_close();	// Incheie conexiunea cu mysql

/*** Afisarea datelor obtinute ***/
// Parcurge variabilele array setate in bucla WHILE
for($i=0; $i<count($id); $i++) {
  // Aici puteti adauga cod HTML pentru aspectul grafic al afisarii
echo '<tr>' '<td>' '<center>'. $denumire[$i].'</center>''</td>' '<td>''<center>'. $data[$i]. '</center>''</td>''<td>''<a href="cantari.php/'.$descarca[$i].''">'<center>''<img src="'../imagini/buton-descarca.png"/>''</center>''</td>''</a>''</tr>';
}
/*** Construirea link-urilor pt. paginare ***/ 
// raza nr. link-uri din jurul celui curent 
$range = 3;
 
// Link-uri inapoi, daca pagina curenta nu e prima
if ($currentpage > 1) {  
  // arata << pt. link la prima pagina  
  echo " <a href='{$_SERVER['PHP_SELF']}?currentpage=1'><<</a> &nbsp; ";  
  // obtine nr. pagina din urma 
  $prevpage = $currentpage - 1;  
  // arata < pt. link la o pagina in urma 
  echo " <a href='{$_SERVER['PHP_SELF']}?currentpage=$prevpage'><</a> &nbsp;";  
} 
 
// definirea link-urilor din raza paginii curente
for ($x = ($currentpage - $range); $x < (($currentpage + $range) + 1); $x++) {  
  // daca e un nr. de pagina valid ... 
  if (($x > 0) && ($x <= $totalpages)) {  
	 // daca nr. e pagina curenta ...  
	 if ($x == $currentpage) {  
		// afiseaza nr. pagina fara a fi link  
		echo " [<b>$x</b>] ";  
	 // daca nr. nu e pagina curenta ...  
	 } else {  
		// il face link  
	echo " <a href='{$_SERVER['PHP_SELF']}?currentpage=$x'>$x</a> ";  
	 }  
  }
}
		  
// Daca pagina curenta nu e ultima, afiseaza link inainte si spre ultima pagina
if ($currentpage != $totalpages) {  
  // obtine pagina urmatoare 
  $nextpage = $currentpage + 1;  
   // arata > pt. urmatoarea pagina   
  echo "&nbsp; <a href='{$_SERVER['PHP_SELF']}?currentpage=$nextpage'>></a> ";  
  //  arata >> pt. ultima pagina
  echo " &nbsp; <a href='{$_SERVER['PHP_SELF']}?currentpage=$totalpages'>>></a> ";  
}
?>
si imi da eroare asta Parse error: syntax error, unexpected T_CONSTANT_ENCAPSED_STRING, expecting ',' or ';' in C... la linia

Cod: Selectaţi tot

  // Aici puteti adauga cod HTML pentru aspectul grafic al afisarii
echo '<tr>' '<td>' '<center>'. $denumire[$i].'</center>''</td>' '<td>''<center>'. $data[$i]. '</center>''</td>''<td>''<a href="cantari.php/'.$descarca[$i].''">'<center>''<img src="'../imagini/buton-descarca.png"/>''</center>''</td>''</a>''</tr>';
am pus si comentariu ca sa iti fie mai usor sa iti dai seama unde este. poti sa te uiti si sa imi zici ce am gresit? cu stima trif
M-am hotarat!
De ce sa fiu trist?
Oricum nu intereseaza pe nimeni...!
Mai bine sunt fericit si ii enervez pe toti cu fericirea mea!
http://www.cantaricrestine.ro
---> cu stima Trif

MarPlo Mesaje: 4343
M-am uitat doar la ultimul cod, dupa eroarea la linia...
I-am facut corectarile unde am vazut ca trebuie (greseli de imbricare in sir, legate de ghilimele simple puse gresit). In rest, la adaptarea paginarii, presupun ca stii mai bine ce ai facut; e prea mult cod ca sa verific.
Deci, inlocuieste codul pus dupa eroare la linia ..., cu urmatorul.

Cod: Selectaţi tot

      // Aici puteti adauga cod HTML pentru aspectul grafic al afisarii
    echo '<tr><td><center>'. $denumire[$i]. '</center></td><td><center>'. $data[$i]. '</center></td><td><a href="cantari.php/'.$descarca[$i].'"><center><img src="../imagini/buton-descarca.png"/></center></td></a></tr>';

trif Mesaje: 500
am facut asa:

Cod: Selectaţi tot

while ($list = mysql_fetch_assoc($result)) {  
$i=0;
while ($i < $count)
{
  $rand=mysql_fetch_array($result);
   ++$i;
}
echo '<tr>  <td><center>'.$rand['denumire'].'</center></td> <td><center>'.$rand['data'].' </center></td><td><a href="cantari.php/'.$rand['descarca'].' "><center><img src="../imagini/buton-descarca.png"/></center></td></a> </tr>';
}echo '</table></center>';
dar imi ia prima cantare si ii face array cate inregistrari sunt. cu stima trif
M-am hotarat!
De ce sa fiu trist?
Oricum nu intereseaza pe nimeni...!
Mai bine sunt fericit si ii enervez pe toti cu fericirea mea!
http://www.cantaricrestine.ro
---> cu stima Trif

MarPlo Mesaje: 4343
Poate e gresit ca ai WHILE in WHILE. Pentru parsat ce ia din db e suficient unul, adica asa:

Cod: Selectaţi tot

    while ($rand=mysql_fetch_array($result)) {
    echo '<tr>  <td><center>'.$rand['denumire'].'</center></td> <td><center>'.$rand['data'].' </center></td><td><a href="cantari.php/'.$rand['descarca'].' "><center><img src="../imagini/buton-descarca.png"/></center></td></a> </tr>';
    }
 echo '</table></center>';
- Daca nu merge, nu stiu ce atceva e fiindca nu am stat sa urmaresc ce modificari ai facut si nici nu iau coduri modificate la verificat.

trif Mesaje: 500
merge dar dupa ce am pus

Cod: Selectaţi tot

  while ($rand=mysql_fetch_array($result)) {
    echo '<tr>  <td><center>'.$rand['denumire'].'</center></td> <td><center>'.$rand['data'].' </center></td><td><a href="cantari.php/'.$rand['descarca'].' "><center><img src="../imagini/buton-descarca.png"/></center></td></a> </tr>';
    }
echo '</table></center>';
nu mai merge secventa cu litere

Cod: Selectaţi tot

$litera = $_GET['id'];
$sql="SELECT * FROM cantari_rosii WHERE denumire LIKE '$litera%' ORDER BY id DESC";
$result = mysql_query($sql, $conn) or trigger_error(E_USER_ERROR);  
$r = mysql_fetch_row($result);  
echo '<b><center>Cantari POWER POINT</center></b><br>';
echo '<center><a href="cantari.php">TOATE</a> <a href="cantari.php?id=a">A</a> <a href="cantari.php?id=b">B</a> ...</center><br>';
echo '<center><table border="1" width="700" >';
echo '<tr> <th> Denumire </th>  <th> Data</th> <th> Descarca</th></tr>';
cu stima trif
M-am hotarat!
De ce sa fiu trist?
Oricum nu intereseaza pe nimeni...!
Mai bine sunt fericit si ii enervez pe toti cu fericirea mea!
http://www.cantaricrestine.ro
---> cu stima Trif

MarPlo Mesaje: 4343
Probabil ar trebui:

Cod: Selectaţi tot

    $litera = $_GET['id'];
    $sql2="SELECT * FROM cantari_rosii WHERE denumire LIKE '$litera%' ORDER BY id DESC";
    $result2 = mysql_query($sql2, $conn) or trigger_error(E_USER_ERROR); 
   // Cod inceput tabel
    while ($r = mysql_fetch_row($result2); {
     // Aici ce a preluat in $r['coloana'];
   }
   // Cod link-uri litere

trif Mesaje: 500
am modificat si merge dar nu in totalitate ci este o mica problema si urmatoarea este: merge cand dau sa aleaga doar cantarile cu o anumita litera dar daca sunt 2 cantari numerotarea mi-o face ca la toate cantarile nu ca la cate o gasit. si am facut urmatoarele schimbari:

Cod: Selectaţi tot

$sql="SELECT * FROM cantari_ppt  ORDER BY id DESC";
$result = mysql_query($sql, $conn) or trigger_error(E_USER_ERROR); 
$r = mysql_fetch_row($result);  
si

Cod: Selectaţi tot

 // obtine datele din tabel (MODIFICATI 'cantari_ppt') din baza de date  
$litera = $_GET['id'];
$sql="SELECT * FROM cantari_ppt WHERE denumire LIKE '$litera%' ORDER BY id DESC LIMIT $offset, $rowsperpage";
$result = mysql_query($sql, $conn) or trigger_error(E_USER_ERROR); 
echo '<b><center>Cantari POWER POINT</center></b><br>';
echo '<center><table border="1" width="700" >';
echo '<tr> <th> Denumire </th>  <th> Data</th> <th> Descarca</th></tr>';
// parcurgerea matricei cu datele obtinute
  while ($rand=mysql_fetch_array($result)) {
    echo '<tr>  <td><center>'.$rand['denumire'].'</center></td> <td><center>'.$rand['data'].' </center></td><td><a href="cantari.php/'.$rand['descarca'].' "><center><img src="imagini/buton-descarca.png"/></center></td></a> </tr>';
    }
echo '<center><a href="cantari.php">TOATE</a> <a href="cantari.php?id=a">A</a> <a href="cantari.php?id=b">B</a> ...</center><br>';
echo '</table></center>';
/*** Construirea link-urilor pt. paginare ***/ 
si cum am zis nu imi face o numerotare noua dupa rezultatele pe care mi-le afiseaza. cu stima trif
M-am hotarat!
De ce sa fiu trist?
Oricum nu intereseaza pe nimeni...!
Mai bine sunt fericit si ii enervez pe toti cu fericirea mea!
http://www.cantaricrestine.ro
---> cu stima Trif

MarPlo Mesaje: 4343
Pt. numerotare, incearca sa pui un indice in afara lui WHIILE, apoi il maresti cu 1 si-l afisezi in WHILE.

trif Mesaje: 500
asa?:

Cod: Selectaţi tot

$litera = $_GET['id'];
$sql="SELECT * FROM cantari_ppt WHERE denumire LIKE '$litera%' ORDER BY id DESC LIMIT $offset, $rowsperpage";
$result = mysql_query($sql, $conn) or trigger_error(E_USER_ERROR); 
$r2 = mysql_fetch_row($result);  
echo '<b><center>Cantari POWER POINT</center></b><br>';
echo '<center><table border="1" width="700" >';
echo '<tr> <th> Denumire </th>  <th> Data</th> <th> Descarca</th></tr>';

// parcurgerea matricei cu datele obtinute
$numrows2 = $r2[0];  
$rowsperpage2 = 4;  
$totalpages2 = ceil($numrows2 / $rowsperpage2);	
  while ($rand=mysql_fetch_array($result)) {
    echo '<tr>  <td><center>'.$rand['denumire'].'</center></td> <td><center>'.$rand['data'].' </center></td><td><a href="cantari.php/'.$rand['descarca'].' "><center><img src="imagini/buton-descarca.png"/></center></td></a> </tr>';
    }
echo '<center><a href="cantari.php">TOATE</a> <a href="cantari.php?id=a">A</a> <a href="cantari.php?id=b">B</a> ...</center><br>';
echo '</table></center>';
ca altfel nu stiu cum, si nu merge. cu stima trif
M-am hotarat!
De ce sa fiu trist?
Oricum nu intereseaza pe nimeni...!
Mai bine sunt fericit si ii enervez pe toti cu fericirea mea!
http://www.cantaricrestine.ro
---> cu stima Trif

MarPlo Mesaje: 4343
Nici eu nu stiu, nu reiese clar ce vrei sa faci. Mai cauta pe net si mai studiaza tutoriale sau ce gasesti despre ce vrei sa faci.

trif Mesaje: 500
pai ceea ce vreau este urmatoarea: sa imi numeroteze pagina cu toate rezultatele pe care le afiseaza dar atunci cand dau pe o litera sa imi renumeroteze rezultatele noi. de exemplu imi afiseaza toate cantarile ppt avand o anumita numerotare a rezultatelor si asta merge dar dupaia daca dau pe "A" imi afiseza doar cantarile ppt cu litera "A" dar sa imi faca o alta numerotare noua a rezultatelor care sunt pentru cantarile ppt care incep cu "A" nu numerotarea pe care s-a facut pt toate cantarile. cred ca intelegi. cu stima trif
M-am hotarat!
De ce sa fiu trist?
Oricum nu intereseaza pe nimeni...!
Mai bine sunt fericit si ii enervez pe toti cu fericirea mea!
http://www.cantaricrestine.ro
---> cu stima Trif

MarPlo Mesaje: 4343
Dupa cum am inteles ar merge cam asa (daca e ce presupun).
E doar un model scurt ce trebuie sa-l adaptezi la ce ai.

Cod: Selectaţi tot

<?php
// ...
$sql="SELECT * FROM `cantari_ppt` WHERE `denumire` LIKE '$litera%' ORDER BY id DESC LIMIT $offset, $rowsperpage";
$result = mysql_query($sql, $conn) or trigger_error(E_USER_ERROR);  // Din baza de date
$i_n = 0; // Indice de numerotare

while ($rand=mysql_fetch_array($result)) {
  $i_n++;
  echo $i_n. ' ... '. $rand['coloana']. ' ...<br />';
}
// ...
?>

Subiecte similare