paginare php
Scris: Dum Noi 28, 2010
De cateva zile stau cu ochii in PC pt a rezolva problema cu paginarea da nu reusesc.
In mare merge codul . Dar eu de ex selectez masiniile din BD dupa anumite criterii: marca, an, etc. Si dc aleg dupa marca prima pagina este bine dar dupa aceea, imi arata masiniile din alta marca. Pana a introduce codul pt paginare a mers bine dar acum nu. Deci nu reusesc sa fac cumva legatura.
Codul este:
Stiu ca este cam lung . Dar va rog dc puteti sa ma ajutati.
Va multumesc.
In mare merge codul . Dar eu de ex selectez masiniile din BD dupa anumite criterii: marca, an, etc. Si dc aleg dupa marca prima pagina este bine dar dupa aceea, imi arata masiniile din alta marca. Pana a introduce codul pt paginare a mers bine dar acum nu. Deci nu reusesc sa fac cumva legatura.
Codul este:
Cod: Selectaţi tot
<?php
function get_search_cars($marca, $data_fabricatie, $caroserie,$combustibil,$portiere,$culoare)
{ $conn = db_connect();
$text="SELECT * FROM cars";
$where=" WHERE 'id'='id'";
$order="order by data desc";
if ($marca) $where .= " AND marca ='".$marca."'";
if ($data_fabricatie) $where .= " AND data_fabricatie ='".$data_fabricatie."'";
if ($caroserie) $where .= " AND caroserie='".$caroserie."'";
if ($combustibil) $where .= " AND combustibil='".$combustibil."'";
if ($portiere) $where .= " AND portiere='".$portiere."'";
if ($culoare) $where .= " AND culoare='".$culoare."'";
$query=$text.$where.$order;
$result = mysql_query($query);
if (!$result)
return false;
$num_cars = mysql_num_rows($result);
//arata cate masini sunt in baza de date la fiecare marca
echo '<div class="afisare_nr_masini">Anunturi gasite: '.$num_cars.'</div>';
if ($num_cars == 0)
{
echo '<table><tr><td>Ne pare rau, nu a fost gasit
niciun anunt dupa criteriile de cautare selectate.<br/>
Refaceti cautarea selectand mai putine criterii sau folositi alte filtre.</td></tr></table>';
}
$numrows = $num_cars;
echo $numrows ;
// Stabileste numarul de linii din tabel afisate in pagina
$rowsperpage = 10;
// afla numarul total necesar de pagini
$totalpages = ceil($numrows / $rowsperpage);
echo '; pagini '.$totalpages;
// 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
$text="SELECT * FROM cars";
$where=" WHERE 'id'='id'";
$order="order by data desc LIMIT $offset, $rowsperpage";
if ($marca) $where .= " AND marca ='".$marca."'";
if ($data_fabricatie) $where .= " AND data_fabricatie ='".$data_fabricatie."'";
if ($caroserie) $where .= " AND caroserie='".$caroserie."'";
if ($combustibil) $where .= " AND combustibil='".$combustibil."'";
if ($portiere) $where .= " AND portiere='".$portiere."'";
if ($culoare) $where .= " AND culoare='".$culoare."'";
$query=$text.$where.$order;
$result = mysql_query($query);
if (!$result)
return false;
$num_cars = mysql_num_rows($result);
//arata cate masini sunt in baza de date la fiecare marca
echo '<div class="afisare_nr_masini">Anunturi gasite: '.$num_cars.'</div>';
if ($num_cars == 0)
{
echo '<table><tr><td>Ne pare rau, nu a fost gasit
niciun anunt dupa criteriile de cautare selectate.<br/>
Refaceti cautarea selectand mai putine criterii sau folositi alte filtre.</td></tr></table>';
}
/*** 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> ";
// 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> ";
}
// 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 " <a href='{$_SERVER['PHP_SELF']}?currentpage=$nextpage'>></a> ";
// arata >> pt. ultima pagina
echo " <a href='{$_SERVER['PHP_SELF']}?currentpage=$totalpages'>>></a> ";
}
$result = db_result_to_array($result);
return $result;
}
?>
Va multumesc.