Salve, oggi vedremo come creare un semplice sistema di votazione sfruttando il php e un database mysql.
Iniziamo subito connettendoci al database, quindi scriveremo:
Come abbiamo visto, abbiamo usato una sola riga per selezionare e connetterci al database invece che 5-6, vediamo cosa dobbiamo sostituire:
Ora andiamo a creare la tabella contenente i voti:
Come possiamo notare abbiamo aggiunto accanto a CREATE TABLE la parte IF NOT EXISTS, quindi verrà creata solo se la tabella non esiste, onde evitare problemi. Abbiamo creato due campi, uno contenente l' IP del visitatore che voterà e uno col voto scelto.
Ora troviamo l' IP del visitatore e facciamo subito un controllo col database.
Analizzando ciò che abbiamo scritto, noteremo che $ip , tramite $_SERVER['REMOTE_ADDR'] contiene l' IP del votante, mentre la if a seguire controlla quante righe (mysql_num_rows) della tabella voti (FROM voti) esistono dove sotto al campo ip (WHERE ip) è uguale all' ip del visitatore. Quindi, se il numero di righe è uguale a 0, ovvero non c'è nessuna riga..
Stampiamo a video il form per votare. echo <<<EOT contenuto EOT; è un modo migliore per scrivere dell' HTML in PHP, in questo modo non avremo problemi di apici.
Il form è strutturato in modo che appaiano 5 input radio (input a cerchio) che valgono 1 2 3 4 5, ovvero i nostri voti e dopo c'è un input submit alla cui pressione vengono inviati i dati al PHP, quindi..
Se è pieno $_POST['voto'], ovvero la votazione $voto prende il suo valore ($voto = (isset($_POST['voto'])) ), altrimenti ( ? ) prende il valore di null ($_POST['voto'] : null; ).
Quindi se stato premuto il submit ( && isset($_POST['votato'])) { ) e il valore di $_POST['voto'] non è null ( if(!is_null($voto) ) , inseriamo nel database l' ip e il voto scelto e lo rimandiamo alla pagina corrente.
Se invece il submit è premuto ma il campo è vuoto..
Gli diciamo che deve scegliere un voto per proseguire.
Tornando alla if principale del numero di righe, abbiamo visto se il numero di righe 0, ma se invece è diverso da 0 e quindi l' ip è già presente..
Selezioniamo la somma dei voti a cui daremo il nome voto_totale ( SELECT SUM(voto) as voto_totale ) dalla tabella voti ( FROM voti ) e lo assegneremo alla variabile $voti, poi..
Contiamo quanti voti ci sono che chiameremo num_voti ( SELECT COUNT(voto) as num_voti ) e valorizziamo $num_voti con questo risultato ( $num_voti = $select_num['num_voti']; )..
Con una semplice operazione matematica stabiliamo la media dei voti
E stampiamo a video i dati raccolti..
Quindi il codice completo finale sarà:
Spero vi sia stato d' aiuto anche la spiegazione dei codici ^^
Iniziamo subito connettendoci al database, quindi scriveremo:
PHP:
Perfavore,
Entra
oppure
Registrati
per vedere i codici!
Come abbiamo visto, abbiamo usato una sola riga per selezionare e connetterci al database invece che 5-6, vediamo cosa dobbiamo sostituire:
- NOME DEL DATABASE col nome del nostro database, se usate altervista e il vostro sito ad esempio è pippo.altervista.org, il vostro database sarà my_pippo, se invece utilizzare un hosting troverete il nome del database e tutti gli altri dati nel pannello di controllo del sito;
- HOSTNAME è l' host su cui risiede il vostro db, se usate altervista è localhost, se usate un hosting lo troverete nel pannello di controllo del sito, solitamente è rappresentato da un IP l' hostname su hosting;
- USERNAME è l' username del database, se usate altervista userete il nome del vostro sito come username, quindi se avete pippo.altervista.org sarà pippo, se usate un hosting lo troverete nel pannello di controllo del sito;
- PASSWORD è la password per accedere al database, se usate altervista potete lasciare vuoto questo campo,se usate un hosting va riempito per forza e troverete questo dato nel pannello di controllo del sito;
Ora andiamo a creare la tabella contenente i voti:
PHP:
Perfavore,
Entra
oppure
Registrati
per vedere i codici!
Come possiamo notare abbiamo aggiunto accanto a CREATE TABLE la parte IF NOT EXISTS, quindi verrà creata solo se la tabella non esiste, onde evitare problemi. Abbiamo creato due campi, uno contenente l' IP del visitatore che voterà e uno col voto scelto.
Ora troviamo l' IP del visitatore e facciamo subito un controllo col database.
PHP:
Perfavore,
Entra
oppure
Registrati
per vedere i codici!
Analizzando ciò che abbiamo scritto, noteremo che $ip , tramite $_SERVER['REMOTE_ADDR'] contiene l' IP del votante, mentre la if a seguire controlla quante righe (mysql_num_rows) della tabella voti (FROM voti) esistono dove sotto al campo ip (WHERE ip) è uguale all' ip del visitatore. Quindi, se il numero di righe è uguale a 0, ovvero non c'è nessuna riga..
PHP:
Perfavore,
Entra
oppure
Registrati
per vedere i codici!
Stampiamo a video il form per votare. echo <<<EOT contenuto EOT; è un modo migliore per scrivere dell' HTML in PHP, in questo modo non avremo problemi di apici.
Il form è strutturato in modo che appaiano 5 input radio (input a cerchio) che valgono 1 2 3 4 5, ovvero i nostri voti e dopo c'è un input submit alla cui pressione vengono inviati i dati al PHP, quindi..
PHP:
Perfavore,
Entra
oppure
Registrati
per vedere i codici!
Se è pieno $_POST['voto'], ovvero la votazione $voto prende il suo valore ($voto = (isset($_POST['voto'])) ), altrimenti ( ? ) prende il valore di null ($_POST['voto'] : null; ).
Quindi se stato premuto il submit ( && isset($_POST['votato'])) { ) e il valore di $_POST['voto'] non è null ( if(!is_null($voto) ) , inseriamo nel database l' ip e il voto scelto e lo rimandiamo alla pagina corrente.
Se invece il submit è premuto ma il campo è vuoto..
PHP:
Perfavore,
Entra
oppure
Registrati
per vedere i codici!
Gli diciamo che deve scegliere un voto per proseguire.
Tornando alla if principale del numero di righe, abbiamo visto se il numero di righe 0, ma se invece è diverso da 0 e quindi l' ip è già presente..
PHP:
Perfavore,
Entra
oppure
Registrati
per vedere i codici!
Selezioniamo la somma dei voti a cui daremo il nome voto_totale ( SELECT SUM(voto) as voto_totale ) dalla tabella voti ( FROM voti ) e lo assegneremo alla variabile $voti, poi..
PHP:
Perfavore,
Entra
oppure
Registrati
per vedere i codici!
Contiamo quanti voti ci sono che chiameremo num_voti ( SELECT COUNT(voto) as num_voti ) e valorizziamo $num_voti con questo risultato ( $num_voti = $select_num['num_voti']; )..
Con una semplice operazione matematica stabiliamo la media dei voti
PHP:
Perfavore,
Entra
oppure
Registrati
per vedere i codici!
E stampiamo a video i dati raccolti..
PHP:
Perfavore,
Entra
oppure
Registrati
per vedere i codici!
Quindi il codice completo finale sarà:
PHP:
Perfavore,
Entra
oppure
Registrati
per vedere i codici!
Spero vi sia stato d' aiuto anche la spiegazione dei codici ^^