Visualizzazione dei risultati da 1 a 6 su 6
  1. #1
    Utente di HTML.it
    Registrato dal
    Jun 2014
    Messaggi
    17

    Sisstema di voti con database SQL e script in PHP

    Ciao a tutti, innanzi tutto voglio fare un breve presentazione dato che mi sono appena registrato:
    sono luc99a, come si può dedurre dal nome sono nato nel 1999 (ho 15 anni in questo momento) e mi chiamo Luca.
    Ora però veniamo a ciò che vi voglio chiedere.
    Nel mio sito web dove pubblico alcune cose che programmo io vorrei aggiungere un sistema di voti per ciascuna applicazione/webgame.
    Avevo pensato di utilizzare per questo PHP e SQL però mi trovo nell'indecisione fra varie strade. Ciò in cui vi chiedo di aiutarmi è appunto scegliere quale è la migliore (o proporne un'altra se credete sia opportuno).
    -1. Creare una tabella nel database per ogni applicazione/webgame e strutturare così le colonne:
    ID IP
    L'ID sarà un intero con auto-increment, l'IP sarà una VARCHAR contenente l'IP del votante al fine di evitare più voti da parte dello stesso utente.
    Per mostrare il numero di voti sulla pagina basterà prendere l'ID più grande nella colonna ID (non sono un esperto di SQL, ma credo si possa fare).
    -2. Creare un unica tabella per tutte le applicazioni/webgame e strutturare così le colonne:
    name IP
    Dove name sarà il nome dell'applicazione/webgame e IP sarà di nuoco l'IP del votante
    Per sapere il numero di voti di una applicazione/webgame basterà contare le linee nella query
    SELECT * FROM votes WHERE name=''
    (votes sarebbe il nome della tabella, fra i due apici ci andrebbe il nome dell'applicazione/webgame)
    -3. Creare un unica tabella con un unica linea per ogni applicazione/webgame con queste colonne
    name votes
    Dove name è il nome e votes è il numero di voti. In questo caso utilizzerei di cookie per vedere se l'utente ha già votato (o alternativamente un altra tabella, oppure anche un file XML).

    Bene queste sono 3 strade che ho pensato, fatemi sapere quale per voi è la migliore e se ne avete un migliore proponetela.

    PS. Ho visto ora il titolo sbagliato ma non trovo il tasto modifica per il titolo
    Ultima modifica di luc99a; 17-06-2014 a 17:16 Motivo: Grammatica

  2. #2
    Quote Originariamente inviata da luc99a Visualizza il messaggio
    Ciao a tutti, innanzi tutto voglio fare un breve presentazione dato che mi sono appena registrato:
    sono luc99a, come si può dedurre dal nome sono nato nel 1999 (ho 15 anni in questo momento) e mi chiamo Luca.
    Ora però veniamo a ciò che vi voglio chiedere.
    Nel mio sito web dove pubblico alcune cose che programmo io vorrei aggiungere un sistema di voti per ciascuna applicazione/webgame.
    Avevo pensato di utilizzare per questo PHP e SQL però mi trovo nell'indecisione fra varie strade. Ciò in cui vi chiedo di aiutarmi è appunto scegliere quale è la migliore (o proporne un'altra se credete sia opportuno).
    -1. Creare una tabella nel database per ogni applicazione/webgame e strutturare così le colonne:
    ID IP
    L'ID sarà un intero con auto-increment, l'IP sarà una VARCHAR contenente l'IP del votante al fine di evitare più voti da parte dello stesso utente.
    Per mostrare il numero di voti sulla pagina basterà prendere l'ID più grande nella colonna ID (non sono un esperto di SQL, ma credo si possa fare).
    -2. Creare un unica tabella per tutte le applicazioni/webgame e strutturare così le colonne:
    name IP
    Dove name sarà il nome dell'applicazione/webgame e IP sarà di nuoco l'IP del votante
    Per sapere il numero di voti di una applicazione/webgame basterà contare le linee nella query
    SELECT * FROM votes WHERE name=''
    (votes sarebbe il nome della tabella, fra i due apici ci andrebbe il nome dell'applicazione/webgame)
    -3. Creare un unica tabella con un unica linea per ogni applicazione/webgame con queste colonne
    name votes
    Dove name è il nome e votes è il numero di voti. In questo caso utilizzerei di cookie per vedere se l'utente ha già votato (o alternativamente un altra tabella, oppure anche un file XML).

    Bene queste sono 3 strade che ho pensato, fatemi sapere quale per voi è la migliore e se ne avete un migliore proponetela.

    PS. Ho visto ora il titolo sbagliato ma non trovo il tasto modifica per il titolo
    ciao,
    tra le 3 opzioni direi che la seconda e' la migliore
    Non si può risolvere un problema usando lo stesso modo di pensare che ha creato quel problema.
    Albert Einstein

    Siate Affamati, siate Folli, siate Onesti e siate Generosi

  3. #3
    Utente di HTML.it
    Registrato dal
    Jun 2014
    Messaggi
    17
    Quote Originariamente inviata da bomberdini Visualizza il messaggio
    ciao,
    tra le 3 opzioni direi che la seconda e' la migliore
    Grazie mille della risposta, seguirò questa opzione allora

  4. #4
    Utente di HTML.it
    Registrato dal
    Jun 2014
    Messaggi
    17
    Ho fatto, @bomberdini saresti così gentile di dare un giudizio al codice che ho scritto?

    Questa è la classe che userò ogni volta che qualcosa necessita del sistema per i voti.
    Codice PHP:
    <?php    
    class Vote {            
      private 
    $tablename;     
      private 
    $name;      
      private 
    $IP;            
      public function 
    __construct($tablename$name$IP) {          
        
    $this->name $name;
        
    $this->tablename $tablename;       
        
    $this->IP $IP;      
      }            
      
      public function 
    getVotes() {          
        require(
    "connect.php");        
        
    $query mysql_query("SELECT * FROM $this->tablename WHERE name='$this->name'");       
        
    $rows mysql_num_rows($query);          
        
    mysql_close();        
        return 
    $rows;      
      }            

      public function 
    addVote() {          
        require(
    "connect.php");        
        
    $query mysql_query("SELECT * FROM $this->tablename WHERE IP='$this->IP'");        
        if (
    mysql_num_rows($query) > 0) {            
          echo 
    "<p>You have already voted this program</p>";            
          return 
    FALSE;        
        }        
        
    mysql_query("INSERT INTO $this->tablename (name, IP) VALUES ('$this->name', '$this->IP')");
        
    mysql_close();        
        return 
    TRUE;      
      }        
    }  
    ?>
    Questo è il codice che uso dove si da la possibilità di votare

    Codice PHP:
    <?php
    require_once("vote.class.php"); //c'è tutto il percorso ma non lo scrivo perchè potrebbe essere spam                               
    $vote = new Vote("votes""javachat"$_SERVER["REMOTE_ADDR"]);                        
    if (
    $_GET["voting"] == "true") {                            
      if (
    $vote->addVote()) {                               
         
    header("URL".$_SERVER["PHP_SELF"]); //anche qui c'è l'URL del sito che ho tolto
      
    }                        
    }                        
    echo 
    "<p>Votes: " $vote->getVotes() . "</p>";
    echo 
    "<a href=\""$_SERVER["PHP_SELF"]. "?voting=true\" >Vote</a>";
    ?>
    C'è qualcosa che non va? Funzionare funziona, però se c'è un modo più elegante per scriverlo potresti dirmelo per favore?
    Ultima modifica di luc99a; 19-06-2014 a 16:20 Motivo: Formattazione codice

  5. #5
    non mi sono del tutto chiare le tue intenzioni, comunque un primo consiglio per ottenere codice piu' performante e' quello di evitare di scrivere query in questo modo : select *

    E' preferibile per un discorso di efficienza indicare esplicitamente i campi che si vuole estrarre...
    Non si può risolvere un problema usando lo stesso modo di pensare che ha creato quel problema.
    Albert Einstein

    Siate Affamati, siate Folli, siate Onesti e siate Generosi

  6. #6
    Utente di HTML.it
    Registrato dal
    Jun 2014
    Messaggi
    17
    Quote Originariamente inviata da bomberdini Visualizza il messaggio
    non mi sono del tutto chiare le tue intenzioni, comunque un primo consiglio per ottenere codice piu' performante e' quello di evitare di scrivere query in questo modo : select *

    E' preferibile per un discorso di efficienza indicare esplicitamente i campi che si vuole estrarre...
    Le intenzioni sono quelle descritte nel primo post, usando la seconda opzione.
    La query vedrò di cambiarla (è la prima volta che uso un Database e non ho neanche mai letto una guida di SQL).
    Nella prima query che faccio dentro al metodo addVote() della classe Vote ho aggiunto
    AND name='$this->name'

    Nella seconda parte di codice quando creo l'oggetto $vote, "votes" è il nome della tabella, "javachat" è il nome dell'applicazione, $_SERVER["REMOTE_ADDR"]. Su questo ero stato poco chiaro

Tag per questa discussione

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.