Un singur fisier php pentru mai multe categorii

Discutii despre script-uri si coduri PHP-MySQL, precum si lucru cu XML in PHP.
cadou
Mesaje:328

Un singur fisier php pentru mai multe categorii

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.

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>";  
 
} ;
?>
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 :

Cod: Selectaţi tot

RewriteRule ^bancuri-(.*).php$ bancuri-.php?categorie=(.*) [NC,L]
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.

MarPlo Mesaje:4343
Ca sa administrezi mai multe categorii printr-un singur fisier php, se adauga un nume cu categoria in adresa URL, se preia cu $_GET in php categoria, apoi se executa instructiunile in functie de valoarea preluata.
Intre perechile de date "nume=valoare" din adresa URL (cele dupa "...php?") se adauga "&".
Exemplu, adresa link-ului fara rescriere:
site.ro/fisier.php?categorie=xxxx&pagina=xxxx

Cod: Selectaţi tot

if(isset($_GET['categorie'])) {
  $categorie = strip_tags($_GET['categorie']);
  if($categorie == 'cursuri') {
    echo 'Categoria Cursuri';
  }
  else if($categorie == 'plante') {
    echo 'Categoria despre Plante';
  }
}
else echo 'Nici o categorie';
 
- La rescrierile cu adaugare extensie ".php" in adresa URL nu ma bag.

cadou Mesaje:328
Ok sa uitam de partea cu htacces. sa ne rezumam la asta :
Deci am inlocuit codu :

Cod: Selectaţi tot

if (isset($_GET['categorie'])) {
    $categorie = $_GET['categorie'];
 
cu:

Cod: Selectaţi tot

if(isset($_GET['categorie'])) {
  $categorie = strip_tags($_GET['categorie']);
  if($categorie == 'animale') {
    echo 'Categoria animale';
  }
  else if($categorie == 'seci') {
    echo 'Categoria seci';
  }
}
else echo 'Nici o categorie';
 
Si apare eroarea :

Cod: Selectaţi tot

Parse error: syntax error, unexpected '}' in /bancuri-.php on line 96
Adica la linia asta de cod

Cod: Selectaţi tot

} else { echo " Id-ul primit nu are nici o valoare. "; }
Adica nu pricep, cu codu meu merge, dar cu al tau da eroarea aia pe la linia 96, ce legatura are linia 96 cu linia 46-56 unde am inlocuit codu ?

Subiecte similare