• User Newbie

    Emblema classi php

    Ciao a tutti, avrei un emblema sulle classi php, secondo voi e' conveniente fare un codice cosi':
    [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><a href='index.php?act=categorie&op=edit&id=".$echo[0]."'>Modifica</a></td><td><a href='index.php?act=categorie&op=delete&id=".$echo[0]."'>Cancella</a></td></tr>"; 
    
          } 
    
          echo "</table><br>"; 
    } 
     
    // Mostra il pannello del modulo 
    function printPanel() { 
          echo "Categorie:<br>"; 
        $this->printList(); 
        ?> 
    
        <form name="cat" action="index.php?act=categorie&op=create" method="post"> 
    
        Inserisci una nuova categoria:<br> 
    
        Nome: <input type="text" name="name"><br> 
        Tipo: <select name="tipo" onChange="selectcat()"> 
        <option value="0">Default</option> 
        <option value="1">Html (contiene codice html)</option> 
        </select><br> 
        <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)<br> 
    
        <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]."'><br>"; 
          if($echo[2] == 1){ 
          echo "Modificare il contenuto HTML: <br>"; 
          echo "<textarea name='text'>".$echo[3]."</textarea></div>"; 
          } 
          echo "Inserire la nuova posizione: "; 
          echo "<input type='text' name='ordine' value='".$echo[1]."'><br>"; 
    
          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;
    ?>[/PHP]
    E richiamare il tutto tramite $CATEGORIE->start(); ? Questo vorrei farlo semplicemente per racchiudere le funzioni che servono ad una sola entita'.
    </div>


  • User Attivo

    Ciao le classi si usano di solito per creare oggetti che userai da più parti ed in più progetti (si spera!). 🙂

    Percui ti consiglio di evitare che la classe utilizzi variabili globali (nel tuo caso il $_GET) ma che si basi, per rispondere, solamente dei dati che gli fornisci nella chiamata.
    Inoltre ti consiglio di sostituire gli echo in una concatenazione di stringhe. In questo modo quando chiami la classe lei genera una stringa di output che poi sarai tu a decidere se metterla in output con echo oppure farne altre elaborazioni.

    Per esempio:
    echo $categorie->start($_GET);

    In pratica gli passi la GET e visualizzi il risultato con la ECHO.

    :fumato:


  • User Newbie

    @InuYaksa said:

    Ciao le classi si usano di solito per creare oggetti che userai da più parti ed in più progetti (si spera!). 🙂

    Percui ti consiglio di evitare che la classe utilizzi variabili globali (nel tuo caso il $_GET) ma che si basi, per rispondere, solamente dei dati che gli fornisci nella chiamata.
    Inoltre ti consiglio di sostituire gli echo in una concatenazione di stringhe. In questo modo quando chiami la classe lei genera una stringa di output che poi sarai tu a decidere se metterla in output con echo oppure farne altre elaborazioni.

    Per esempio:
    echo $categorie->start($_GET);

    In pratica gli passi la GET e visualizzi il risultato con la ECHO.

    :fumato:
    Grazie mille dalla risposta... Ma quindi per te e' inutile fare una classe di quel tipo? Io vorrei farla solo per sezionare il codice in modo da renderlo piu' pulito


  • User Attivo

    ciao, come ti ha scritto InuYaksa, le classi conviene usarle quando si usano gli oggetti e in questo caso nn ti serve far uso della classe che hai postato

    ciao
    **