Visualizzazione risultati 1 fino 11 di 11

Discussione: Sistema di voti

  1. #1
    L'avatar di silverseraph
    silverseraph non è connesso AlterGuru
    Data registrazione
    27-04-2005
    Residenza
    Localhost
    Messaggi
    1,104

    Predefinito Sistema di voti

    Salve ragazzi, vorrei sapere come potrei realizzare un sistema di voti come questo:

    http://www.cellulari.it/html/OpinioniCel.asp?ID=003355

    Dove c'è un punteggio e poi sotto indica la media.

    Vi preannuncio che questo sistema lo vorrei preferibilmente gestire tramite database di testo.

    grazie

  2. #2
    Guest

    Predefinito

    Non è una cosa semplicissima, ma penso che potrai trovare qualche script da adattare per i tuoi scopi su http://www.hotscripts.com/PHP/Scripts_and_Programs/

  3. #3
    L'avatar di silverseraph
    silverseraph non è connesso AlterGuru
    Data registrazione
    27-04-2005
    Residenza
    Localhost
    Messaggi
    1,104

    Predefinito

    lo so che nn è facile, apposta chiedo il vostro aiuto :P

    comunque, sfortunatamente, in quel link non ho trovato nulla, almeno che io non abbia cercato male.

  4. #4
    Guest

    Predefinito

    Citazione Originalmente inviato da silverseraph
    Salve ragazzi, vorrei sapere come potrei realizzare un sistema di voti come questo:

    http://www.cellulari.it/html/OpinioniCel.asp?ID=003355

    Dove c'è un punteggio e poi sotto indica la media.

    Vi preannuncio che questo sistema lo vorrei preferibilmente gestire tramite database di testo.

    grazie
    Puoi creare un file contenente righe di questo tipo:

    id:media:n

    dove id è l'id di qualcosa a cui vuoi applicare i voti, media rappresenta la media dei voti e n rappresenta il numero di voti.

    In questo modo puoi aggiungere un voto moltiplicando media * n, aggiungendo il nuovo voto e rimodificando la riga con il media = risultato / n+1 e n+1 voti

  5. #5
    L'avatar di silverseraph
    silverseraph non è connesso AlterGuru
    Data registrazione
    27-04-2005
    Residenza
    Localhost
    Messaggi
    1,104

    Predefinito

    non ho capito tanto bene....poi come farà ad uscire la media?

  6. #6
    Guest

    Predefinito

    Hai un file di questo tipo:

    1:7.5:3
    2:8:1
    ...

    Dove il primo numero indica l'id della cosa che ha quel voto, il secondo è la media dei voti, il terzo il numero di voti. fai questo script:

    Codice PHP:
    // Legge dal file i voti
    $file = file ("percorso del file");
    $voti = array ();
    $temp = array();
    for (
    $i=0;$i<count($file);$i++) {
    if (
    $file[$i] == "") continue;
    $temp = explode (":", $file);
    $voti[] = array ("id" => $temp[0], "media" => $temp[1], "num" => $temp[2]);
    }

    // Per aggiungere il voto
    function addVoti ($id, $nuovo_voto, $voti) {
    for (
    $i=0;$i<count($voti);$i++) {
    if (
    $voti[$i]["id"] != $id) continue;
    $media = $voti[$i]["media"] * $voti[$i]["num"] + $nuovo_voto;
    $media = $media / ++$voti[$i]["num"];
    break;
    }
    }

    // Per salvare i dati
    $stream = fopen ("percorso del file", "w");
    if (
    $stream == false) die ("Impossibile aprire il file");
    for (
    $i=0;$i<count($voti);$i++) {
    fwrite ($stream, $voti[$i]["id"].":".$voti[$i]["media"].":".$voti[$i]["num"]."\n");
    }
    fclose ($stream);
    Poi te lo modifichi come vuoi tu... Queste sono le parti di codice che ti dovrebbero servire.... se hai bisogno di chiarimenti chiedi pure

  7. #7
    L'avatar di silverseraph
    silverseraph non è connesso AlterGuru
    Data registrazione
    27-04-2005
    Residenza
    Localhost
    Messaggi
    1,104

    Predefinito

    eh scusa ma i quesiti dove li inserisco?

  8. #8
    Guest

    Predefinito

    Citazione Originalmente inviato da silverseraph
    eh scusa ma i quesiti dove li inserisco?
    Ma ti serve un sistema di sondaggi, o di voti?

    CORREZIONE: puoi scrivere un altro file con i quesiti, magari salvati in questo modo:

    id:quesito

    e poi lo leggi e utilizzi quel file per salvare i voti

    oppure puoi sostituire ID con il quesito nel file che ti ho proposto prima...
    Ultima modifica di ivano85 : 21-01-2006 alle ore 23.10.15

  9. #9
    L'avatar di silverseraph
    silverseraph non è connesso AlterGuru
    Data registrazione
    27-04-2005
    Residenza
    Localhost
    Messaggi
    1,104

    Predefinito

    Scusa nn ho capito cosa intendi in quest'ultimo messaggio. Facciamo una cosa: tu prova a realizzarmi un sistema di voti come questo:

    http://www.cellulari.it/html/OpinioniCel.asp?ID=003355

    così io lo adatterò alle mie esigenze.

    in cambio posso farti qualunque cosa

    grazie mille

  10. #10
    Guest

    Predefinito

    Allora... puoi creare tre files in cui ogni riga rappresenta un record fatto in questo modo:

    oggetti.txt
    id:Nome dell'oggetto


    quesiti.txt
    id:Quesito o caratteristica

    voti.txt
    id_oggetto:id_quesito:media:n_voti

    A questo punto, puoi utilizzare questo codice (da mettere per esempio in un file "funzioni_voti.php") per leggere o scrivere sul "database":

    Codice PHP:
    $objects_file = "oggetti.txt";
    $questions_file = "quesiti.txt";
    $votes_file = "voti.txt";

    function
    ReadObjects () {
    global
    $objects_file;
    $oggetti = file ($objects_file);
    $result = array ();
    for (
    $i=0;$i<count($oggetti);$i++) {
    if (
    $oggetti[$i] == "") continue;
    $oggetti[$i] = explode (":", $oggetti[$i]);
    $result[] = array ("id" => $oggetti[$i][0], "name" => $oggetti[$i][1]);
    }
    return
    $result;
    }

    function
    ReadQuestions () {
    global
    $questions_file;
    $domande = file ($questions_file);
    $result = array ();
    for (
    $i=0;$i<count($domande);$i++) {
    if (
    $domande[$i] == "") continue;
    $domande[$i] = explode (":", $domande[$i]);
    $result[] = array ("id" => $domande[$i][0], "question" => $domande[$i][1]);
    }
    return
    $result;
    }

    function
    ReadVotes () {
    global
    $votes_file;
    $voti = file ($votes_file);
    $result = array ();
    for (
    $i=0;$i<count($voti);$i++) {
    if (
    $voti[$i] == "") continue;
    $voti[$i] = explode (":", $voti[$i]);
    $result[] = array ("object_id" => $voti[$i][0], "question_id" => $voti[$i][1], "media" => $voti[$i][2], "n_voti" => $voti[$i][3]);
    }
    return
    $result;
    }

    function
    VotesPerObject ($object_id) {
    global
    $votes_file;
    $domande = ReadQuestions();
    $oggetti = ReadObjects();
    $voti = ReadVotes();
    $result = array ();
    // Cerco il nome dell'oggetto
    for ($i=0;$i<count($oggetti);$i++) {
    if (
    $oggetti[$i]["id"] == $object_id) {
    $result["oggetto"] = $oggetti[$i]["name"];
    break;
    }
    }
    $result["questions"] = array();
    for (
    $i=0;$i<count($voti);$i++) {
    if (
    $voti[$i]["object_id"] == $object_id) {
    for (
    $j=0;$j<count($domamde);$j++) {
    if (
    $domande[$j]["id"] == $voti[$i]["question_id"]) {
    $result["questions"][] = array ("domanda" => $domande[$j]["$question"], "id" => $domande[$j]["id"], "media" => $voti[$i]["media"], "n_voti" => $voti[$i]["n_voti"]);
    break;
    }
    }
    }
    }
    return
    $result;
    }

    function
    AddVote ($object_id, $question_id, $voto) {
    global
    $votes_file;
    $voti = ReadVotes ();
    for (
    $i=0;$i<count($voti);$i++) {
    if (
    $voti[$i]["object_id"] == $object_id && $voti[$i]["question_id"] == $question_id) {
    $totale = $voti[$i]["media"] * $voti[$i]["n_voti"];
    $totale += $voto;
    $voti[$i]["media"] = $totale / (++$voti[$i]["n_voti"]);
    break;
    }
    }
    if (
    $i == count($voti)) {
    $voti[] = array ("question_id" => $question_id, "object_id" => $object_id, "media" => $voto, "n_voti" = 1);
    }
    $stream = fopen ($votes_file, "w");
    if (
    $stream == false) die ("Impossibile aprire il file $votes_file in scrittura");
    for (
    $i=0;$i<count($voti);$i++) {
    fwrite ($stream, $voti[$i]["object_id"].":".$voti[$i]["question_id"].":".$voti[$i]["media"].":".$voti[$i]["n_voti"]);
    }
    fclose ($stream);
    }
    Ok, con questo potrai inserire dei quesiti nel file apposito come indicato prima, che potrai richiamare per ogni oggetto... gli oggetti vanno nel loro file e il file dei voti dovresti lasciarlo vuoto inizialmente. Puoi utilizzare la funzione ReadObjects() per ricavare l'elenco degli oggetti in un array di array associativo disponibili nel formato:

    "id" => id dell'oggetto
    "name" => nome dell'oggetto

    cioè, puoi estrarli in questo modo:

    $oggetti = ReadObjects();
    for (...) {
    $nome = $oggetti[$i]["name"];
    $id = $oggetti[$i]["id"];
    }

    dove $i è l'indice dell'elemento (che però non conta nulla). Puoi poi leggere le domande nello stesso modo, sostituendo a "name", "question". Poi puoi leggere i voti di un oggetto con la funzione VotesPerObject a cui devi passare come parametro l'id dell'oggetto. Questa funzione restituisce il seguente array:

    array (
    "oggetto" => "Nome dell'oggetto",
    "questions" => array (
    0 => array (
    "domanda" => "Testo del quesito",
    "id" => ID del quesito,
    "media" => La media dei voti,
    "n_voti" => Numero dei voti per questo quesito
    ),
    1 => stessa cosa di 0, per tutti i quesiti inseriti nel file
    )
    );

    Infine, puoi utilizzare la funzione AddVote ($object_id, $question_id, $voto) che ti permette di aggiungere un voto per il quesito con id $question_id all'oggetto con id $object_id.

    Questo è tutto, spero che funzioni perchè non l'ho testato, ma dovrebbe andare... hai tutto ciò che ti serve per costruirti il sistema di voti... fammi sapere se va, in bocca al lupo, ciao :-D

  11. #11
    L'avatar di silverseraph
    silverseraph non è connesso AlterGuru
    Data registrazione
    27-04-2005
    Residenza
    Localhost
    Messaggi
    1,104

    Predefinito

    grazie mille, oggi provo e ti dico come va

    EDIT:

    Ehi... ho provato ma non va molto... cioè non ho capito bene cosa fare da qui in poi:

    Ok, con questo potrai inserire dei quesiti nel file apposito come indicato prima, che potrai richiamare per ogni oggetto... gli oggetti vanno nel loro file e il file dei voti dovresti lasciarlo vuoto inizialmente. Puoi utilizzare la funzione ReadObjects() per ricavare l'elenco degli oggetti in un array di array associativo disponibili nel formato:

    "id" => id dell'oggetto
    "name" => nome dell'oggetto

    cioè, puoi estrarli in questo modo:

    $oggetti = ReadObjects();
    for (...) {
    $nome = $oggetti[$i]["name"];
    $id = $oggetti[$i]["id"];
    }

    dove $i è l'indice dell'elemento (che però non conta nulla). Puoi poi leggere le domande nello stesso modo, sostituendo a "name", "question". Poi puoi leggere i voti di un oggetto con la funzione VotesPerObject a cui devi passare come parametro l'id dell'oggetto. Questa funzione restituisce il seguente array:

    array (
    "oggetto" => "Nome dell'oggetto",
    "questions" => array (
    0 => array (
    "domanda" => "Testo del quesito",
    "id" => ID del quesito,
    "media" => La media dei voti,
    "n_voti" => Numero dei voti per questo quesito
    ),
    1 => stessa cosa di 0, per tutti i quesiti inseriti nel file
    )
    );

    Infine, puoi utilizzare la funzione AddVote ($object_id, $question_id, $voto) che ti permette di aggiungere un voto per il quesito con id $question_id all'oggetto con id $object_id.

Regole di scrittura

  • Non puoi creare nuove discussioni
  • Non puoi rispondere ai messaggi
  • Non puoi inserire allegati.
  • Non puoi modificare i tuoi messaggi
  •