Buna Ziua.
Am facut aproape toate modificarile respective!Nu am stiut la offset ce trebuie facut!
Acum imi apar cum trebuie linkurile,de forma:
subcategorie.php?page=11¤tpage=1
Nu primesc mesaje de eroare nici cand dau inainte inapoi etc.
Dar daca am la $rowsperpage sa spunem 10 rezultate si in baza de date am pana in 10 rezultate e ok!Daca am mai multe rezultate,la pagina a 2-a tot rezultate de pe prima pagina primesc!
Cod: Selectaţi tot
<?php
if(isset($_GET['page'])) $page = $_GET['page'];
if(isset($_GET['currentpage'])) $currentpage = $_GET['currentpage'];
$host = "localhost"; // server MySQL
$utilizator = "root";
$parola = "";
$numebd = "anunturi"; // 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 anunturi, subcategorii WHERE anunturi.subCategorie=subcategorii.id_sub AND id_sub=".$page."";
$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 = 8;
// 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 anunturi.*, subcategorii.numeSc FROM anunturi
JOIN subcategorii ON(anunturi.subCategorie=subcategorii.id_sub) WHERE id_sub=".$page." ";
$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['subCategorie'];
$a[] = $list['continut'];
$b[] = $list['tipPret'];
$c[] = $list['email'];
$d[] = $list['telefon'];
$e[] = $list['valid'];
}
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?>
<div class='anunt'> <a href=/layer%2023.07.2011/anunt.php?id=<?php echo $id[$i]; ?> <b>titlu:</b><?php echo $a[$i]; ?><br></div>
<?php
}
/*** 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']}?page=$page¤tpage=1'><<</a> ";
// obtine nr. pagina din urma
$prevpage = $currentpage - 1;
// arata < pt. link la o pagina in urma
echo " <a href='{$_SERVER['PHP_SELF']}?page=$page¤tpage=$prevpage'><</a> ";
}
// 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']}?page=$page¤tpage=$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 " <a href='{$_SERVER['PHP_SELF']}?page=$page¤tpage=$nextpage'>></a> ";
// arata >> pt. ultima pagina
echo " <a href='{$_SERVER['PHP_SELF']}?page=$page¤tpage=$totalpages'>>></a> ";
}
?>
Stiti cumva o rezolvare pentru aceasta problema?Scuze daca sunt prea insistent!
Va doresc o zi placuta,
Multumesc
Edit:
Revin la eroarea respectiva!
In prima faza am uitat sa completez in query LIMIT $rowsperpage,$offset.
Acum la:
subcategorie.php?page=11¤tpage=1
(Notice: Undefined variable: id in C:\wamp\www\pretul zilei 06.04.2012\subcategorie.php on line 102)
adica aici :
for($i=0; $i<count($id); $i++) {
Pagina a-2a o afiseaza corect. (
subcategorie.php?page=11¤tpage=2 )
Pagina a-3a imi ia pagina a2a+pagina a3a! (
subcategorie.php?page=11¤tpage=3 )
Pagina a-4-a imi ia pagina a2a+pagina a3a+pagina a4a! (
subcategorie.php?page=11¤tpage=4 )
Deci sirul ar continua in felul asta!