Votazione con stelle

FoxWorn3365

Nuovo Utente
22 Set 2020
6
0
1
Ciao a tutti, qualcuno conosce un codice per creare uno script per votare una pagina da 0 a 5 stelle e mostrare in un'altra pagina la votazione media della pagina dove si vota?
E ci sarebbe un metodo per mettere più in alto le pagine con i voti più alti?
Grazie in anticipo
 
qualcuno conosce un codice per creare uno script
Non ho capito!!! un codice per creare lo script?
Lo script è il codice stesso, di conseguenza qualquadra non cosa!
Cmq bando le stupidagini: devi scriverlo tu non ci sono codici generici da implementare su portali custom!!!

E ci sarebbe un metodo per mettere più in alto le pagine con i voti più alti?
Certo
Codice:
ORDER BY  FIELD (ID, _id_numerici)
 
Intanto devi preparare il layout (io uso questo, preso da codepen):
HTML:
<form>
 <div class="star-rating">
      <input id="star-5" type="radio" name="rating" value="5" />
      <label for="star-5" title="5 stars">
        <i class="active fa fa-star fa-lg" aria-hidden="true"></i>
      </label>
      <input id="star-4" type="radio" name="rating" value="4" />
      <label for="star-4" title="4 stars">
        <i class="active fa fa-star fa-lg" aria-hidden="true"></i>
      </label>
      <input id="star-3" type="radio" name="rating" value="3" />
      <label for="star-3" title="3 stars">
        <i class="active fa fa-star fa-lg" aria-hidden="true"></i>
      </label>
      <input id="star-2" type="radio" name="rating" value="2" />
      <label for="star-2" title="2 stars">
        <i class="active fa fa-star fa-lg" aria-hidden="true"></i>
      </label>
      <input id="star-1" type="radio" name="rating" value="1" />
      <label for="star-1" title="1 star">
        <i class="active fa fa-star fa-lg" aria-hidden="true"></i>
      </label>
    </div>
    </form>
Poi aggiungici uno stile CSS, per renderlo bello graficamente:
HTML:
.star-rating {
    direction: rtl;
    display: inline-block;
}

.star-rating input[type=radio] {
    display: none
}

.star-rating label {
    color: #bbb;
    font-size: 22px;
    padding: 0;
    cursor: pointer;
    -webkit-transition: all .3s ease-in-out;
    transition: all .3s ease-in-out
}

.star-rating label:hover,
.star-rating label:hover ~ label,
.star-rating input[type=radio]:checked ~ label {
    color: #f2b600
}

Poi devi prendere il numero di stelle che ha selezionato l'utente, io lo faccio senza ricaricare la pagina, usando jQuery e Ajax, direttamente quando l'utente clicca su una stelletta (senza dover schiacciare altri bottoni):
HTML:
$(document).ready(function(){
$('input[name=rating]').change(function(){
    var voto = $( 'input[name=rating]:checked' ).val();
    $.ajax({
        type:'POST',
        url:"valutation.php",
        data:{'voto':voto},
        success:function(fmsg){
        },
        error:function(){
            alert('Some problem occured, please try again.');
        }
    });
});
});

Poi crei un file PHP dove prendi il voto selezionato dall'utente e lo inserisci nel database (io non so come è strutturato il tuo database)
PHP:
$voto = $_POST['voto'];
$sql = mysqli_query($conn, "..query per inserire nel db il voto");

Infine devi creare un'altra pagina, dove mostri le medie delle valutazioni, ma qui dovrei sapere come è strutturato il tuo database
 
Intanto devi preparare il layout (io uso questo, preso da codepen):
HTML:
<form>
<div class="star-rating">
      <input id="star-5" type="radio" name="rating" value="5" />
      <label for="star-5" title="5 stars">
        <i class="active fa fa-star fa-lg" aria-hidden="true"></i>
      </label>
      <input id="star-4" type="radio" name="rating" value="4" />
      <label for="star-4" title="4 stars">
        <i class="active fa fa-star fa-lg" aria-hidden="true"></i>
      </label>
      <input id="star-3" type="radio" name="rating" value="3" />
      <label for="star-3" title="3 stars">
        <i class="active fa fa-star fa-lg" aria-hidden="true"></i>
      </label>
      <input id="star-2" type="radio" name="rating" value="2" />
      <label for="star-2" title="2 stars">
        <i class="active fa fa-star fa-lg" aria-hidden="true"></i>
      </label>
      <input id="star-1" type="radio" name="rating" value="1" />
      <label for="star-1" title="1 star">
        <i class="active fa fa-star fa-lg" aria-hidden="true"></i>
      </label>
    </div>
    </form>
Poi aggiungici uno stile CSS, per renderlo bello graficamente:
HTML:
.star-rating {
    direction: rtl;
    display: inline-block;
}

.star-rating input[type=radio] {
    display: none
}

.star-rating label {
    color: #bbb;
    font-size: 22px;
    padding: 0;
    cursor: pointer;
    -webkit-transition: all .3s ease-in-out;
    transition: all .3s ease-in-out
}

.star-rating label:hover,
.star-rating label:hover ~ label,
.star-rating input[type=radio]:checked ~ label {
    color: #f2b600
}

Poi devi prendere il numero di stelle che ha selezionato l'utente, io lo faccio senza ricaricare la pagina, usando jQuery e Ajax, direttamente quando l'utente clicca su una stelletta (senza dover schiacciare altri bottoni):
HTML:
$(document).ready(function(){
$('input[name=rating]').change(function(){
    var voto = $( 'input[name=rating]:checked' ).val();
    $.ajax({
        type:'POST',
        url:"valutation.php",
        data:{'voto':voto},
        success:function(fmsg){
        },
        error:function(){
            alert('Some problem occured, please try again.');
        }
    });
});
});

Poi crei un file PHP dove prendi il voto selezionato dall'utente e lo inserisci nel database (io non so come è strutturato il tuo database)
PHP:
$voto = $_POST['voto'];
$sql = mysqli_query($conn, "..query per inserire nel db il voto");

Infine devi creare un'altra pagina, dove mostri le medie delle valutazioni, ma qui dovrei sapere come è strutturato il tuo database



Mi potresti spiegare meglio come strutturarlo es (1. Crea un file di nome index.php 2. ecc....)
Perchè io sono alle prime armi e non ci sto capendo molto :(
 

Discussioni simili