Capito, hai proprio colto nel segno (il CMS), quindi dici che se il codice e' lungo e' meglio fare una classe per strutturarlo per bene.
Dato che hai indovinato (
) ti mostro il codice di una pagina che sto facendo:
Codice PHP:
<?php
class categorie {
// Gestisce quale operazione eseguire
function start() {
switch($_GET['op']){
case "edit":
$this->printEdit();
break;
case "editok":
$this->edit();
break;
case "delete":
$this->delete();
break;
case "create":
$this->create();
break;
default:
$this->printPanel();
break;
}
}
// Mostra la lista di categorie
function printList() {
$query = mysql_query("SELECT * FROM category ORDER BY ordine");
echo "<table align='center' border='1'>";
while($echo = mysql_fetch_array($query)){
if($echo[3] == 0){$tipo = "default";}
else{$tipo = "html";}
echo "<tr><td>".$echo[1]." (Posizione: ".$echo[2].", Tipo: ".$tipo.")</td><td>[url='index.php?act=categorie&op=edit&id=".$echo[0]."']Modifica[/url]</td><td>[url='index.php?act=categorie&op=delete&id=".$echo[0]."']Cancella[/url]</td></tr>";
}
echo "</table>
";
}
// Mostra il pannello del modulo
function printPanel() {
echo "Categorie:
";
$this->printList();
?>
<form name="cat" action="index.php?act=categorie&op=create" method="post">
Inserisci una nuova categoria:
Nome: <input type="text" name="name">
Tipo: <select name="tipo" onChange="selectcat()">
<option value="0">Default</option>
<option value="1">Html (contiene codice html)</option>
</select>
<div id="html" style="display:none;"><textarea name="text">Inserire il contenuto HTML della categoria</textarea></div>
Posizione (rispetto alle altre categorie): <input type="text" name="ordine"> (default = 0)
<input type="submit" value="Crea">
</form>
<?php
}
// Mostra il pannello di modifica categoria
function printEdit() {
global $DB;
$echo = $DB->queryAndFetch("SELECT name,ordine,tipo,text FROM category WHERE id='".$_GET['id']."'");
echo "<form action='index.php?act=categorie&op=editok' method='post'>";
echo "<input type='hidden' name='id' value='".$_GET['id']."'>";
echo "Inserire il nuovo nome della categoria: ";
echo "<input type='text' name='name' value='".$echo[0]."'>
";
if($echo[2] == 1){
echo "Modificare il contenuto HTML:
";
echo "<textarea name='text'>".$echo[3]."</textarea></div>";
}
echo "Inserire la nuova posizione: ";
echo "<input type='text' name='ordine' value='".$echo[1]."'>
";
echo "<input type='submit' value='Modifica'>";
echo "</form>";
}
// Modifica la categoria
function edit() {
if(mysql_query("UPDATE category SET name='".$_POST[name]."',ordine='".$_POST[ordine]."',text='".$_POST[text]."' WHERE id='".$_POST[id]."'")){
echo "Categoria modificata con successo.";
}
else{
echo "Errore nella modifica della categoria";
}
}
// Cancella la categoria
function delete() {
if(mysql_query("DELETE FROM content WHERE category='".$_GET['id']."'") && mysql_query("DELETE FROM category WHERE id='".$_GET['id']."'")){
echo "Categoria eliminata con successo.";
}
else{
echo "Errore nell'eliminazione della categoria";
}
}
// Crea la categoria
function create() {
if(mysql_query("INSERT INTO category (name,ordine,tipo,text) VALUES ('".$_POST[name]."','".$_POST[ordine]."','".$_POST[tipo]."','".$_POST[text]."')")){
echo "Categoria \"".$_POST[name]."\" aggiunta.";
}
else{
echo "Errore nella creazione della categoria.";
}
}
}
$CATEGORIE = new categorie;
?>
Questo viene poi richiamato tramite $CATEGORIE->start(); da un'altra pagina.
In questo caso trovi sensato usare le classi? io direi di si perche' cosi' chi vuole modificare il codice si trova tutto diviso in maniera pulita ed inoltre racchiuso in una classe che indica che l'insieme di funzioni riguarda un determinato "argomento" di operazioni.