Un singur fisier php pentru mai multe categorii
Scris: Dum Noi 25, 2012
Inainte sa imi vina ideea asta facusem mai multe fisiere pentru a afisa cateogoriile, adica asa :
Aveam 10 categorii, aveam 10 fisiere denumite dupa categorii, ok mergea perfect, dar am stat si m-am gandit daca peste ceva timp din alea 10 categorii se vor face 30-40 ? Ce fac ? Fac 30-40 fisiere la fiecare categorie in plus ?
Am stat si m-am gandit pana am gasit o solutie, un singur fisier php pentru toate cateogoriile, am stat si am modificat cum m-am priceput si am obtinut urmatorul cod de mai jos.
Problema e ca am link-u de forma :
site.ro/bancuri-.php?categorie=XXXXX
Dar daca am mai multe pagini, cum vor veni ? "site.ro/bancuri-.php?categorie=xxxx?pagina=xxxx" ? nu ca nu merge.
Am incercat sa modific in htacces asa :
Ca sa obtin link de genu: "site.ro/bancuri-categoriaXXXX.php"
Dar nu merge.
Iar cu paginare sa fie: "site.ro/bancuri-categoriaXXXX.php?pagina=5"
Daca am aceea linie de regula in htacces si incerc sa accesez: "site.ro/bancuri-categoriaXXXX.php" , zice asa :
Categoria nu exista.
Desi exista.
Aveam 10 categorii, aveam 10 fisiere denumite dupa categorii, ok mergea perfect, dar am stat si m-am gandit daca peste ceva timp din alea 10 categorii se vor face 30-40 ? Ce fac ? Fac 30-40 fisiere la fiecare categorie in plus ?
Am stat si m-am gandit pana am gasit o solutie, un singur fisier php pentru toate cateogoriile, am stat si am modificat cum m-am priceput si am obtinut urmatorul cod de mai jos.
Cod: Selectaţi tot
<?php session_start();
ini_set('display_errors',1);
error_reporting(E_ALL);
include('meniu-sus.php');
include('conectare.php');
// Setarea pentru format UTF-8
$sql = "SET NAMES 'utf8'";
mysql_query($sql, $connect);
// Afla cate linii sunt in tabel (MODIFICATI 'nume_tb') din baza de date
$sql = "SELECT COUNT(*) FROM `bancuri`";
$result = mysql_query($sql, $connect) 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['pagina']) && is_numeric($_GET['pagina'])) {
// seteaza variabila ca int
$pagina = (int) $_GET['pagina'];
} else {
// pagina care este initial afisata (pagina default)
$pagina = 1;
}
// daca pagina curenta e mai mare decat total pagini...
if ($pagina > $totalpages) {
// seteaza pagina curenta la ultima pagina
$pagina = $totalpages;
}
// daca pagina curenta e mai mica decat prima pagina...
if ($pagina < 1) {
// seteaza pagina curenta la prima pagina
$pagina = 1;
}
// lista cu pagini, in functie de pagina curenta
$offset = ($pagina - 1) * $rowsperpage;
// obtine datele din tabel (MODIFICATI 'nume_tb') din baza de date
if (isset($_GET['categorie'])) {
$categorie = $_GET['categorie'];
$sql = "SELECT `id`, nume, categorie, banc, data FROM `bancuri` WHERE `categorie`='$categorie' ORDER BY `id` DESC LIMIT $offset, $rowsperpage";
$rezultat = mysql_query($sql);
if (mysql_num_rows($rezultat) == 0) {echo "Categoria nu exista";}
else {
while ($rand = mysql_fetch_assoc($rezultat)) {
echo '
<html>
<head>
<title>Bancuri - '.$rand['categorie'].' </title>
<link rel="shortcut icon" type="image/x-icon" href="/favicon/0.gif">
<meta name="description" content="Bancuri '.$rand['categorie'].'. Cele mai bune bancuri: bancuri betivi, bancuri cu Bula,glume cu Alinutza, bancuri tari, bancuri cu blonde" />
<meta name="keywords" content="'.$rand['categorie'].', '.$rand['banc'].', '.$rand['nume'].'" />
<meta content="text/html; charset=utf-8" http-equiv="content-type" />
<meta name="resource-type" content="document" />
<meta http-equiv="pragma" content="no-cache" />
<meta name="revisit-after" content="5 days" />
<meta name="MSSmartTagsPreventParsing" content="TRUE" />
<meta name="robots" content="ALL" />
<meta name="robots" content="index, follow" />
<meta name="language" content="RO" />
<meta name="doc-class" content="Completed" />
<meta name="doc-rights" content="Copyrighted Work" />
<meta name="Copyright" content="(c) 2013 ScapaDePlictiseala Romania" />
<meta name="Rating" content="General" />
<meta name="Owner" content="ScapaDePlictiseala Romania" />
<base href="http://www.scapadeplictiseala.tk/" />
</head>
<body>
<table border=0><tr><td width=800 bgcolor=#e8e7e7> Adaugat de <b>'.$rand['nume'].'</b> la <b>'.$rand['data'].'</b> in <b>Bancuri '.$rand['categorie'].'</b><br>
<b>'.$rand['banc'].'</b><br><br>
<center>
<a href="ymsgr:im?msg=www.scapadeplictiseala.tk/bancuri.php '.$rand['banc'].'" style=color:#000000; title="Trimite Bancuri pe Messenger">Trimite pe Messenger <img src=/imagini/ym.png></a>
</center>
</td></tr>
</table><br>';
}
}
} else { echo " Id-ul primit nu are nici o valoare. "; }
/*** 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 ( $pagina > 1) {
// arata << pt. link la prima pagina
echo "<a href='{$_SERVER['PHP_SELF']}'>Prima Pagina</a> ";
// obtine nr. pagina din urma
$prevpage = $pagina - 1;
}
// definirea link-urilor din raza paginii curente
for ($x = ($pagina - $range); $x < (($pagina + $range) + 1); $x++) {
// daca e un nr. de pagina valid ...
if (($x > 0) && ($x <= $totalpages)) {
// daca nr. e pagina curenta ...
if ($x == $pagina) {
// afiseaza nr. pagina fara a fi link
echo " [<b>$x</b>] ";
// daca nr. nu e pagina curenta ...
} else {
// il face link
echo " <a href='/pagina$x'>$x</a> ";
}
}
}
// Daca pagina curenta nu e ultima, afiseaza link inainte si spre ultima pagina
if ($pagina != $totalpages) {
// obtine pagina urmatoare
$nextpage = $pagina + 1;
// arata >> pt. ultima pagina
echo " <a href='/aici la link-uri le editez cand va fi nevoie$totalpages'>Ultima Pagina</a> </center>";
} ;
?>
site.ro/bancuri-.php?categorie=XXXXX
Dar daca am mai multe pagini, cum vor veni ? "site.ro/bancuri-.php?categorie=xxxx?pagina=xxxx" ? nu ca nu merge.
Am incercat sa modific in htacces asa :
Cod: Selectaţi tot
RewriteRule ^bancuri-(.*).php$ bancuri-.php?categorie=(.*) [NC,L]
Dar nu merge.
Iar cu paginare sa fie: "site.ro/bancuri-categoriaXXXX.php?pagina=5"
Daca am aceea linie de regula in htacces si incerc sa accesez: "site.ro/bancuri-categoriaXXXX.php" , zice asa :
Categoria nu exista.
Desi exista.