Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 13
  1. #1

    [Come fare un sondaggio]

    Salve a tutti.........ci sono molte applicazioni web che un utente può usare per arricchire il proprio sito e renderlo
    più interessante e dinamico. Una di queste sono i sondaggi. Questo sondaggio (Ho messo delle squadre solo cosi per indicazione)che vi sto per illustrare e creato in php naturalmente appoggiandosi ad
    un database Mysql con qualche effetto di javascript. Non ho curato la grafica l'ho solo fatto funzionare poi ognuno sceglie la grafica migliore.
    E' molto facile da comprendere come state per vedere. Scusate gli "Orrori" di ortografia e altro......

    Questa applicazione e ha i seguenti file....

    1)db_connect.php
    2)install.php
    3)scegli.htm
    4)vai.php
    5)guarda.php
    6)vota.gif

    Guardiamoli uno per uno le loro funzionalità

    1)db_connect.php

    Questo è il file che verra incluso nei file vai.php, guarda.php. E il file di connessione a mysql e di selezione al database

    Codice PHP:
    <?php
    mysql_connect
    ("localhost""root") or die("Impossibile connettersi al database");
    mysql_select_db("sondaggio") or die("Impossibile selezionare il database");
    ?>
    Come si puo notare dopo essermi connesso al database seleziono la tabella sondaggio che ancora non ho creato ma che faro presto

    2)install.php

    Questo file è quello che uso per installare la mia tabella. Per sicurezza dopo aver creato la tabella cancello il file.Ora posto il codice e poi lo commentiamo zona per zona.


    Codice PHP:
    <?php
    $connessione
    =mysql_connect("localhost""root") or die("Impossibile connettersi al database");
    if (
    $connessione) {
    echo 
    "Connessione a mysql riuscita
    "
    ;
    }else{
    echo
    " Connessione fallita
    "
    ;
    }

    $databasemysql_create_db(sondaggio,$connessione);
    if (
    $database) {
    echo 
    "Creazione  database riuscita
    "
    ;
    }else{
    echo
    " Creazione database fallita probabilmente c'e già
    "
    ;
    }

    $db_name="sondaggio";
    $selezionemysql_select_db($db_name);
    if (
    $selezione) {
    echo 
    "Selezione  database riuscita
    "
    ;
    }else{
    echo
    " Selezione fallita
    "
    ;
    }

    $creatabella"CREATE TABLE nomi (
    id INT (5) UNSIGNED not null AUTO_INCREMENT, 
    italia  DECIMAL,
    portogallo  DECIMAL,
    spagna  DECIMAL,
    francia  DECIMAL,
    inghilterra  DECIMAL,
    PRIMARY KEY (id))"
    ;

    $crea=mysql_query($creatabella,$connessione) or die("Impossibile eseguire la query [b]$ciao[/b]<a href=\"inserisci.php\">
    Inserisci un messaggio</a>

    [b]Errore[/b]:"
    .mysql_error());


    if (
    $crea) {
    echo 
    "Creazione Tabella riuscita
    "
    ;
    }else{
    echo
    " Creazione  Tabella fallita
    "
    ;


    }

    $creatabella"INSERT INTO nomi (italia, portogallo, spagna, francia, inghilterra)
    VALUES(
    '0',
    '0', 
    '0',
    '0',
    '0'
    )

    "
    ;

    $crea=mysql_query($creatabella) or die("Impossibile eseguire la query [b]$ciao[/b]
    [b]Errore[/b]:"
    .mysql_error());

    if (
    $crea) {
    echo 
    "Inserimento riuscito
    "
    ;
    }else{
    echo
    "Inserimento Fallito
    "
    ;
    }

    mysql_close();
    ?>

    Come si puo notare da codice queste sono le prime tre operazioni

    Mi collego al database
    Creo la tabella
    Seleziono la tabella

    Dopo avere fatto questo cerchiamo di installare la tabella e strutturare il nostro database con

    Codice PHP:
    $creatabella"CREATE TABLE nomi (
    id INT (5) UNSIGNED not null AUTO_INCREMENT, 
    italia  DECIMAL,
    portogallo  DECIMAL,
    spagna  DECIMAL,
    francia  DECIMAL,
    inghilterra  DECIMAL,
    PRIMARY KEY (id))"
    ;

    $crea=mysql_query($creatabella,$connessione) or die("Impossibile eseguire la query [b]$ciao[/b]<a href=\"inserisci.php\">
    Inserisci un messaggio</a>

    [b]Errore[/b]:"
    .mysql_error());
    if (
    $crea) {
    echo 
    "Creazione Tabella riuscita
    "
    ;
    }else{
    echo
    " Creazione  Tabella fallita
    "
    ;

    Come si nota creo una tabella nomi con i nomi delle squadre che nel campo hanno come descrizione DECIMAL (cosi dico a mysql che li andranno numeri decimali).
    Poi faccio la query e la controllo
    Il file non è pero finito qui perche subito dopo vi trovate questo codice

    Codice PHP:
    $creatabella"INSERT INTO nomi (italia, portogallo, spagna, francia, inghilterra)
    VALUES(
    '0',
    '0', 
    '0',
    '0',
    '0'
    )

    "
    ;

    $crea=mysql_query($creatabella) or die("Impossibile eseguire la query [b]$ciao[/b]
    [b]Errore[/b]:"
    .mysql_error());

    if (
    $crea) {
    echo 
    "Inserimento riuscito
    "
    ;
    }else{
    echo
    "Inserimento Fallito
    "
    ;


    Questo codice grazie alla voce INSERT INTO mi fa inserire dati nei campi che io impostero a zero.Poi faccio la query e controllo. Avrei potuto agire in due modi:

    Uno è quello di settare i campi a zero cosiche io ogni volta che si vota incremento di uno
    L'altro era di lasciare stare pero poi quando si votava dovevo controllare che il campo non fosse nullo e quindi non devo incrementare ma mettere uno.
    Mi spiego meglio
    Nel primo caso quando si vota faccio in modo che php legga nel database e mi incrementi di uno il numero. Nel secondo(se non setto tutto i campi = a 0) php non riesce a
    incrementarmi i dati di uno perche i campi hanno valore null, quindi io devo fare in modo che se il campo è vuoto si inserisca uno altrimenti si incrementi.

    Siccome la via piu breve era la prima ho scelto quella.

    3)scegli.htm

    diamo un occhiatina veloce a questo file

    <html>
    <head>
    <title>Sondaggio</title>
    </head>

    <body>

    <form action="vai.php" method="post">
    Italia<input type="radio" value="italia" name="paese">

    Spagna<input type="radio" value="spagna" name="paese">

    Portogallo<input type="radio" value="portogallo" name="paese">

    Francia<input type="radio" value="francia" name="paese">

    Inghilterra<input type="radio" value="inghilterra" name="paese">

    <input type="submit" value="VOTA">
    </form>

    </body>
    </html>

    Niente da spiegare qui un form semplice che punta a via.php con metodo post e usa il tipo radio passando il valore come nome

    4)vai.php

    Innanzitutto includo il file di connessione

    Codice PHP:
    <?php
    include("db_connect.php");


    $risultati_mysql=mysql_query("SELECT * FROM nomi ");
    while (
    $riga1=mysql_fetch_array($risultati_mysql))
    {
    $id=$riga1["$paese"];
    $idnuovo=($id 1);
    }

    $sql="UPDATE nomi SET $paese='$idnuovo'  ";
    if(!
    mysql_query($sql)){
    echo 
    "Errore impossibile  votare";
    echo 
    "<script>
    function redirect(){
       window.location.replace(\"scegli.htm\");
    }
    setTimeout(\"redirect()\", 2000);

    </script>"
    ;
    exit();
    }else{
    echo 
    "Voto valido";

    echo 
    "<script>
    function redirect(){
       window.location.replace(\"guarda.php\");
    }
    setTimeout(\"redirect()\", 2000);

    </script>"
    ;


    }
    mysql_close();
    ?>
    Ecco cosa faccio dopo essermi collegato a mysql dopo aver selezionato la nostra tabella sondaggi.
    Faccio una query di selezione(mysql_query("SELECT * FROM nomi ")) e prendo tutta la tabella nomi. La inserisco in un array (mysql_fetch_array($risultati_mysql)
    ed subito dopo in una variabile chiamata $id metto il valore della colonna chiamata $paese (che è il nome che passo tramite form selezionando il paese). Poi creo
    una nuova variabile $idnuovo e gli assegno il valore della variabile $id +1 . Dopo aver fatto cio faccio UPDATE nomi SET $paese='$idnuovo' che praticamente modifica
    il campo passato attraverso form con il nuovo valore. Dopidichè controllo che la query sia valida e nel caso sia errata lancio un javascript mandando l'utente alla pagia scegli.htm
    altrimenti se la query e valida lo mando alla pagina guarda.php .
    Codice PHP:
    $risultati_mysql=mysql_query("SELECT * FROM nomi ");
    while (
    $riga1=mysql_fetch_array($risultati_mysql))
    {
    $id=$riga1["$paese"];
    $idnuovo=($id 1);
    }

    $sql="UPDATE nomi SET $paese='$idnuovo'  ";
    if(!
    mysql_query($sql)){
    echo 
    "Errore impossibile  votare";
    echo 
    "<script>
    function redirect(){
       window.location.replace(\"scegli.htm\");
    }
    setTimeout(\"redirect()\", 2000);

    </script>"
    ;
    exit();

    5)guarda.php

    In questo file dovete avere dimestichezza con le operazioni matematiche....
    Dopo aver incluso il file di connessione seleziono la tabella nomi e la metto in un array. Poi creo delle variabili che contengono ognuna i valori dei
    campi di ogni squadra. Praticamente in ogni variabile ci sta il numero dei voti ottenuti. Quindi per vedere quanti voti in totale abbiamo facciamo la somma
    delle variabili

    $totale=$spagna+$italia+$portogallo+$francia+$ingh ilterra;
    .
    La somma a noi ci serve per due motivi: uno e che vogliamo mostrare agli utenti quante
    persone fino ad ora hanno votato, l'altro dobbiamo fare la percentuale di ogni paese. Per fare la percentuale si fa (VOTI OTTENUTI) per 100 diviso (VOTI TOTALI).
    $percspagna= $spagna*100/$totale; . Per avere un sondaggio piu pulito io arrotondo il risultato a due cifre dopo la virgola con $s=round($percspagna, 2); $s e la
    variabile che contiene il nostro dato round e la funzione che arrotonda $percspagna e la percentuale e 2 sono le cifre massime dopo la virgola. Ora noi abbiamo
    ottenuto la percentuale. Questa io la usero per due motivi come per il totale: uno per mostrare agli utenti quanta percentuale ha un campo l'altra la uso per dimensionare
    la mia immagine. La percentuale che io ottengo non ha il simblo % dopo il numero quindi e solo un numero normale. Cioe se la spagna ha preso il 40% dei voti quando calcolo
    la percentuale la variabile $s conterra 40 e non 40%. Questa precisazione va fatta perche quando inseriro il valore per mostrare la percentuale devo aggiunfere manualmente
    il simbolo %. Quando devo mostrare la mia immagine è diverso perche modifico dinamicamente il width(GRAZIE BUBU BUBU). Se ho un immagine di 100px puo andare bene quella misura ma 100 px sono pochi. IO nel file
    6)vota.gif ho una gif lunga 300 px. Allora per prendere le dimensioni della nostra barra che ogni paese avrà (il grafico che andremo a creare) moltiplico il numero che ottengo dalla
    percentuale per 3.

    Perche lo moltiplico per 3

    E semplice : quanto ottengo la percentuale abbiamo detto prima che ottengo 40 e non 40%. Quindi la mia immagine avra di lunghezz 40 px(calcolo fatto su 100). La mia
    immagine e 300 px quindi tre volte il valore con cui si calcola la percentuale. Come potete vedere sotto e molto chiaro lo schema e per mettere in ordine ho usato il tag pre


    Codice PHP:
    <?php
    include("db_connect.php");


    $risultati_mysql=mysql_query("SELECT * FROM nomi ");
    while (
    $riga1=mysql_fetch_array($risultati_mysql))
    {
    $spagna=$riga1["spagna"];
    $italia=$riga1["italia"];
    $portogallo=$riga1["portogallo"];
    $francia=$riga1["francia"];
    $inghilterra=$riga1["inghilterra"];

    }


    $totale=$spagna+$italia+$portogallo+$francia+$inghilterra;
    echo 
    "In totale ci sono $totale voti";

    $percspagna$spagna*100/$totale;
    $s=round($percspagna2);


    $percitalia$italia*100/$totale;
    $i=round($percitalia2);


    $percfrancia$francia*100/$totale;
    $f=round($percfrancia2);


    $percportogallo$portogallo*100/$totale;
    $p=round($percportogallo2);


    $percin$inghilterra*100/$totale;
    $n=round($percin2);

    //ora faccio il calcono della lunghezza dell immagine
    $s1=$s*3;
    $i1=$i*3;
    $p1=$p*3;
    $f1=$f*3;
    $n1=$n*3;

    echo 
    "<pre>";
    echo 
    "Spagna            <img src=\"vota.jpg\" height=10 width=$s1>   $s%
    "
    ;
    echo 
    "Italia            <img src=\"vota.jpg\" height=10 width=$i1>   $i%
    "
    ;
    echo 
    "Portogallo        <img src=\"vota.jpg\" height=10 width=$p1>   $p%
    "
    ;
    echo 
    "Francia           <img src=\"vota.jpg\" height=10 width=$f1>   $f%
    "
    ;
    echo 
    "Inghilterra       <img src=\"vota.jpg\" height=10 width=$n1>   $n%
    "
    ;
    echo 
    " </pre>";
    mysql_close();

    ?>
    Questa applicazione puo essere implementata in tanti modi per far si che non si posssa votare piu di 1 volta in un giorno.
    Si puo fare con i cookie oppure memorizzando l'ip..
    Io vi mostro con i cookie come si fa...
    Prendete il file vai.php e subito dopo <?php mettete

    Codice PHP:
    if($paese){
    setcookie ("sondaggio","cookie impostato",time()+86400,"/");
    }
    if(
    $sondaggio){
    echo 
    "Si puo votare solo una volta al giorno";
    exit();

    Cioè se si passa un valore con $paese(perche uno puo provare anche a non votare) si setta un cookie chiamato sondaggio. Poi basta
    Controllare se c'e.....


    Se qualcuno ha altre implementazioni per i sondaggi le posti pure io l'ho fatto in modo veloce....

    Ciao Ciao

  2. #2
    ke tostata complimenti, ma xo ci sono sondaggi ke usano file di testo e registrano l'ip su un altro in html.it

  3. #3
    si si loso.......

    a me piace usare mysql perche è molto piu affidabile dei file di testo......

    Per l'ip imparero e mettero qualcosisa

    Ancora devo studiare un pochino.....

  4. #4
    se qualcuno sa come si fa posti pure altrimenti studierò

    ciao ciao

  5. #5
    Grazie a gm per aver cambiato il titolo ed aver aggiunto la pillolla!!!!!!!!!!!!!!

    :sexpulp:

  6. #6
    mh...la tabella non mi sembra fatta bene...
    Codice PHP:
    CREATE TABLE nomi (
    id INT (5UNSIGNED not null AUTO_INCREMENT
    italia  DECIMAL,
    portogallo  DECIMAL,
    spagna  DECIMAL,
    francia  DECIMAL,
    inghilterra  DECIMAL,
    PRIMARY KEY (id)) 
    In questo modo se vogliamo cambiare le risposte al sondaggio bisogna cambiare nomi ai campi...secondo me sarebbe meglio fare tre celle per campo...tipo

    domanda | Chi vincerà gli europei
    risposta1 | Francia | numero voti
    risposta2 | Danimarca* | numero voti
    risposta3 | Portogallo | numero voti
    risposta4 | Spagna | numero voti
    risposta4 | Inghilterra | numero voti

    *Non ho messo Italia per ovvi motivi scaramantici :sgrat:
    Il mio sito: CIONCO.ALTERVISTA.ORG
    Lloyd Bank$
    I roll with the gangstas don't get fly with your mouth
    The wrong punchline'll have niggas inside of your house

  7. #7
    In effetti ls tabella puo essere strutturata in vari modi......

    Ognuno la fa a suo piacimento e anche da cosa deve fare

    Come la fai tu hai piu utilità cmq

  8. #8
    esiste un esempio funzionante di questo sondaggio?

    Grazie!
    Francesco
    Ciao!

  9. #9
    Originariamente inviato da fmortara
    esiste un esempio funzionante di questo sondaggio?

    Grazie!
    Francesco
    piu o meno è sul mio sito in firma......ora è cambiato ma le funzionalita sono le stesse

  10. #10
    bump

    (sto aggiornando la data alle vecchie pillole per evitare che vengano cancellate. non scrivete ca22ate se non avete nulla da dire)
    Addio Aldo, amico mio... [03/12/70 - 16/08/03]

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 © 2024 vBulletin Solutions, Inc. All rights reserved.