Sistema di votazione PHP, Html, Javascript

di il
11 risposte

Sistema di votazione PHP, Html, Javascript

Buongiorno, spero di trovare aiuto... allora senza troppi giri di parole posto direttamente il codice:

<html>
    <head>
        <link rel="stylesheet" type="text/css" href="styleIndex.css" />
        <script type="text/javascript">
            function value(val) { 
                 <?php
                    $rate = val; //come posso sistemare questa istruzione?
                    mysql_connect("localhost", "root", "root") or die("Errore nella connessione al DB\n".mysql_error());
                    mysql_select_db("votazione") or die("Errore nella selezione del DB\n".mysql_error());
                    $select = mysql_query("SELECT * FROM tab ORDER BY id DESC LIMIT 1") or die ("Errore nella selezione degli elementi dal db: ".mysql_error());
                    $array = mysql_fetch_array($select) or die ("Errore nella creazione dell'array: ".mysql_error());
                    $somma = $array[somma];
                    $media = $array[media];
                    $num = $array[id];

                    $somma += $rate;
                    $media = $somma/$num;

                    $insert = mysql_query("INSERT INTO tab (voto, somma, media) VALUES ('$rate', '$somma', '$media')") or die ("Errore nell'inserimento dati nella tab: ".mysql_error());
                    if ($insert) {
                        mysql_close() or die ("Errore nella chiusura del db: ".mysql_error()); 
                    }
                ?>
            }
        </script>
    </head>
    <body>
        <div id="votazione">
            <span class="costellazione" id="stella5" title="eccelente" onclick="value('10');">&#9734;</span>
            <span class="costellazione" id="stella4" title="ottimo" onclick="value('8');">&#9734;</span>
            <span class="costellazione" id="stella3" title="buono" onclick="value('6');">&#9734;</span>
            <span class="costellazione" id="stella2" title="discreto" onclick="value('4');">&#9734;</span>
            <span class="costellazione" id="stella1" title="scarso" onclick="value('2');">&#9734;</span>
        </div>
    </body>
</html>
E' possibile inserire codice php all'interno di uno script javascript? Se non è possibile come posso risolvere questa situazione? Grazie

11 Risposte

  • Re: Sistema di votazione PHP, Html, Javascript

    Sì, ma non per quello che vuoi fare tu.

    Ovvero, tu vuoi assegnare una variabile js ad una php, ma ciò non è possibile, perché vorrebbe dire che dovresti avere a disposizione la variabile js prima di aver inviato la pagina al client. Invece, puoi assegnare una variabile php ad una js.

    Per quel che vuoi fare tu dovresti usare una chiamata ajax che invia ad una pagina php la variabile val.
  • Re: Sistema di votazione PHP, Html, Javascript

    Posso usare un'altra soluzione forse più semplice ovvero quella di lanciare una form con il valore della stella che ho cliccato, in questo modo ricaricando la pagina potrei aggiornare il DB facendo la query e riaggiornando anche la pagina con la nuova media di punteggi?
    
    <html>
        <head>
            <link rel="stylesheet" type="text/css" href="style.css" />
            <title>Votazione con form</title>
        </head>
        <body>
            <div id="votazione">
                <form name="sent-rating" action="" method="post" id="sent-rating">
                    <input type="radio" value="10" name="star" class="costellazione" id="stella1" title="eccelente" onclick="sent_value(10);" />
                    <input type="radio" value="8" name="star" class="costellazione" id="stella2" title="ottimo" onclick="sent_value(8);" />
                    <input type="radio" value="6" name="star" class="costellazione" id="stella3" title="buono" onclick="sent_value(6);" />
                    <input type="radio" value="4" name="star" class="costellazione" id="stella4" title="discreto" onclick="sent_value(4);" />
                    <input type="radio" value="2" name="star" class="costellazione" id="stella5" title="scarso" onclick="sent_value(2);" />
                </form>
            </div>
        </body>
    </html>
    
    Inoltre per la chiamata ajax devo interagire il codice per forza usando jquery o posso utilizzare normalmente javascript?
  • Re: Sistema di votazione PHP, Html, Javascript

    Si, puoi usare un form, e sì, per ajax puoi usare anche js senza jquery.
  • Re: Sistema di votazione PHP, Html, Javascript

    Ho riscritto il codice utilizzando un form, jquery e ajax. Puoi dare un'occhiata? Grazie mille
    index.php
    
    <html>
        <head>
            <link rel="stylesheet" type="text/css" href="style.css" />
            <title>Votazione con form</title>
            <script type="text/javascript" src="http://code.jquery.com/jquery-1.6.2.min.js"></script>
            <script type="text/javascript">
                $(document).ready(function() { 
                    $(".costellazione").click(function(){ 
                        var voto = this.value;
                        //chiamata ajax
                        $.ajax ({
                            type: "POST",
                            url: "rating.php",
                            data: voto,
                            dataType: "html",
                        });
                    });
                });
            </script>
        </head>
        <body>
            <div id="votazione">
                <form name="sent-rating" id="sent-rating">
                    <input type="radio" value="10" name="star" class="costellazione" id="stella1" title="eccelente" />
                    <input type="radio" value="8" name="star" class="costellazione" id="stella2" title="ottimo" />
                    <input type="radio" value="6" name="star" class="costellazione" id="stella3" title="buono" />
                    <input type="radio" value="4" name="star" class="costellazione" id="stella4" title="discreto" />
                    <input type="radio" value="2" name="star" class="costellazione" id="stella5" title="scarso" />
                </form>
                
            </div>
        </body>
    </html>
    
    rating.php
    
    <?php
        $rate = $_POST['voto'];
        
        mysql_connect("localhost", "root", "root") or die("Errore nella connessione al DB\n".mysql_error());
        mysql_select_db("votazione") or die("Errore nella selezione del DB\n".mysql_error());
        $select = mysql_query("SELECT * FROM tab ORDER BY id DESC LIMIT 1") or die ("Errore nella selezione degli elementi dal db: ".mysql_error());
        $array = mysql_fetch_array($select) or die ("Errore nella creazione dell'array: ".mysql_error());
        $somma = $array[somma];
        $media = $array[media];
        $num = $array[id];
    
        $somma += $rate;
        $media = $somma/$num;
    
        $insert = mysql_query("INSERT INTO tab (voto, somma, media) VALUES ('$rate', '$somma', '$media')") or die ("Errore nell'inserimento dati nella tab: ".mysql_error());
        if ($insert) {
            mysql_close() or die ("Errore nella chiusura del db: ".mysql_error()); 
        }
    ?>
    
    Tralascio il file style.css
  • Re: Sistema di votazione PHP, Html, Javascript

    Ho risolto questo problema.. grazie!
    Se ora io vorrei colorare le stelle a seconda della percentuale di voto come potrei fare?
  • Re: Sistema di votazione PHP, Html, Javascript

    dvaosta ha scritto:


    Si, puoi usare un form, e sì, per ajax puoi usare anche js senza jquery.
    Nel mio codice PHP e JQuery/Ajax è possibile controllare con il PHP se ho lanciato o meno un form senza utilizzare il submit ma solo con i radio button? Quindi senza poter fare una cosa del tipo
    if (!(isset($_POST['submit']))) { }
  • Re: Sistema di votazione PHP, Html, Javascript

    Fabio97 ha scritto:


    dvaosta ha scritto:


    Si, puoi usare un form, e sì, per ajax puoi usare anche js senza jquery.
    Nel mio codice PHP e JQuery/Ajax è possibile controllare con il PHP se ho lanciato o meno un form senza utilizzare il submit ma solo con i radio button? Quindi senza poter fare una cosa del tipo
    if (!(isset($_POST['submit']))) { }
    
    if(!isset($_POST)) {}
    
    $_POST è un array che viene inizializzato se e solo se sono stati inviati dei dati col metodo post. Quindi puoi verificare se l'array è set o no.

    Il controllo che hai postato tu solitamente viene usato solo nel caso in cui si abbiano più form che puntano alla stessa pagina php, per cui devi usare il name di un campo (ad esempio il submit) per distinguerli.
  • Re: Sistema di votazione PHP, Html, Javascript

    Per colorare le stelle dovrai richiedere alla pagina php le percentuali di risposta per ogni stella, inserite in una struttura adatta per l'interscambio di dati, come ad esempio un oggetto json, oppure una stringa codificata in base 64 contenente un array.

    Un altra soluzione, che forse per te è più semplice, consiste nell'effettuare ulteriori chiamate ajax, una per ogni stella, al fine di richiedere le varie percentuali una alla volta.

    Una volta che hai le percentuali, confido che cercando nella documentazione di jquery trovarai i metodi che ti servono per colorare le stelle.
  • Re: Sistema di votazione PHP, Html, Javascript

    dvaosta ha scritto:


    $_POST è un array che viene inizializzato se e solo se sono stati inviati dei dati col metodo post. Quindi puoi verificare se l'array è set o no.
    Ho provato con
    if(!isset($_POST)) {}
    ma va sempre nel ramo dell'else. come posso risolvere?
    
    <html>
        <head>
            <link rel="stylesheet" type="text/css" href="style.css" />
            <title>Votazione con form</title>
            <script type="text/javascript" src="http://code.jquery.com/jquery-1.6.2.min.js"></script>
            <script type="text/javascript">
                $(document).ready(function() { 
                    $(".costellazione").click(function(){ 
                        var voto = $(this).val();
                        //chiamata ajax
                        $.ajax ({
                            type: "POST",
                            url: "rating.php",
                            data: {voto:voto},
                            dataType: "html"
                        });
                    });
                });
            </script>
        </head>
        <body>
            <div id="votazione">
                <?php 
                if(!isset($_POST)) {
                ?>
                <form name="sent-rating" id="sent-rating">
                    <input type="radio" value="10" name="star" class="costellazione" id="stella1" title="eccelente" />
                    <input type="radio" value="8" name="star" class="costellazione" id="stella2" title="ottimo" />
                    <input type="radio" value="6" name="star" class="costellazione" id="stella3" title="buono" />
                    <input type="radio" value="4" name="star" class="costellazione" id="stella4" title="discreto" />
                    <input type="radio" value="2" name="star" class="costellazione" id="stella5" title="scarso" />
                </form> 
                <?php 
                } else {
                    //coloro le stelle
                }
                ?>
            </div>
        </body>
    </html>
    
  • Re: Sistema di votazione PHP, Html, Javascript

    dvaosta ha scritto:


    Per colorare le stelle dovrai richiedere alla pagina php le percentuali di risposta per ogni stella, inserite in una struttura adatta per l'interscambio di dati, come ad esempio un oggetto json, oppure una stringa codificata in base 64 contenente un array.

    Un altra soluzione, che forse per te è più semplice, consiste nell'effettuare ulteriori chiamate ajax, una per ogni stella, al fine di richiedere le varie percentuali una alla volta.

    Una volta che hai le percentuali, confido che cercando nella documentazione di jquery trovarai i metodi che ti servono per colorare le stelle.
    Non c'è un metodo più semplice (dato che io la media percentuale ce l'ho già in un database)? Quindi mi basterebbe prendere la media dal db. Le percentuali per ogni stella invece le imposto io già dall'inizio, ovvero ognuna con valore 20% dato che sono 5 le stelle. In questo modo ho un totale di 100%. In questo modo posso passare direttamente alla documentazione javascript con i metodi per colorare le stelle, giusto?
  • Re: Sistema di votazione PHP, Html, Javascript

    Alla fine sono riuscito a risolvere
Devi accedere o registrarti per scrivere nel forum
11 risposte