Visualizzazione risultati 1 fino 5 di 5

Discussione: Come rendo dinamico il mio sistema di valutazione?

  1. #1
    Guest

    Predefinito Come rendo dinamico il mio sistema di valutazione?

    Salve, ho fatto un sistema di valutazione dove ho vota.php che inserisce nel db l'ip dell'utente ed il voto. E' molto semplice come cosa, solo che ovviamente in qualsiasia pagina del mio sito includo il file, voti sono sempre gli stessi. Come faccio invece che per ogni pagina i voti corrispondo a quella stessa pagina? Ad. esempio: E' come in un cms, in un articolo io lascio un commento solo che il commento va a tutti gli articoli....invecce che andare a quell'articolo specifico. Grazie mille in anticipo...

  2. #2
    L'avatar di alemoppo
    alemoppo non è connesso Staff AV
    Data registrazione
    24-08-2008
    Residenza
    PU / BO
    Messaggi
    22,170

    Predefinito

    Assieme al voto e ad eventuali dati utente, devi salvare un riferimento (id?) della pagina. Così saprai che quel voto sarà riferito a quella pagina.
    Quindi quando vuoi visualizzare i voti di una pagina, farai una select del tipo:
    Codice:
    SELECT * FROM voti WHERE pagina_id = 3
    E otterrai i voti di quella pagina.

    Ciao!

  3. #3
    Guest

    Predefinito

    Ho provato, ma non pens di aver capito ancora tanto bene... allora la mia pagina dei voti è strutturata cosi': dopo averli chiesti, inserisco i voti e l'ip cosi'
    Codice PHP:
    mysql_query("INSERT INTO voti(ip, voto) VALUES ('$ip','$voto')") or die(mysql_error());
    E li prelevo cosi' :
    Codice PHP:
    $select_voti = mysql_fetch_array(mysql_query("SELECT SUM(voto) as voto_totale FROM voti WHERE profilo.php?first=$firstname")) or die(mysql_error());
    dove profilo.php?first=$firstname è la pagina dell'utente. Cosa dovrei modificare? perchè non ho capito bene il passaggio.(La tabbella degli utente e quella dei voti sono differenti)
    Grazie in anticipo...

  4. #4
    mzanella non è connesso AlterGuru
    Data registrazione
    29-12-2015
    Messaggi
    1,954

    Predefinito

    Le funzioni mysql_* sono morte con PHP 5.6 dal 1 gennaio 2019: passa a mysqli o PDO.

    Per realizzare quanto chiedi devi cambiare la struttura della tua base di dati. Devi aggiungere la possibilità di mettere in relazione un voto con un'altra entità, nell'esempio che hai mostrato con un utente. Verosimilmente hai bisogno di aggiungere una colonna id_utente che funga da chiave esterna referenziando una chiave primaria della tabella che rappresenta gli utenti.

    I suggerimenti che do più spesso:


  5. #5
    darbula non è connesso AlterGuru 2500
    Data registrazione
    24-04-2011
    Messaggi
    2,894

    Predefinito

    1)Devi aggiungere un campo id_utente autoincrement primary key alla tabella utenti
    2)Normalmente si viene a conoscenza dell'id_utente (con il login o un cookie e questo valore unico corrisponde alla stringa di testo del cookie nel database)
    3)nella tabella voti dovrai aggiungere id_utente (per evitare di usare una sintassi duplicate key per semplicità sarà un campo int) che effettua il voto.
    4)Gli articoli dovranno essere referenziati volgarmente con un parametro get articolo=1 dovrai creare nella tabella voti l'id_articolo campo int (in questo esempio è 1 $_GET['articolo']).

    Poi quello che dovrai fare lo dovrai scegliere tu... Se vuoi il totale di un articolo ti basta semplicemente fare la somma di voti (si puoi usare la funzione di aggregazione SUM) where id_articolo=1 (non c'entra l'id_utente dato che vuoi la somma dell'intero articolo).

    Comunque passare nel database i parametri via get senza prima validare la stringa espone ad attacchi sql .
    Ultima modifica di darbula : 25-04-2019 alle ore 22.36.31

Tags for this Thread

Regole di scrittura

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