Forum dei Forum: Aiuto per Forumattivo
Benvenuti sul forum di supporto di Forumattivo.




Per trarre il massimo vantaggio da tutti i servizi offerti dal nostro forum, effettua il login se sei già un nostro utente oppure registrati per far parte della nostra grande comunità. Il tutto, gratuitamente!

Crea anche tu un forum gratuitamente come questo! Clicca qui

Stelline


Pagina 1 di 2 1, 2  Seguente

In corso Stelline

Messaggio Da serena1986 il Sab 18 Giu 2011, 09:14

Scusate non so se è la sezione giusta.
Volevo inserire una cosa di questo tipo


nei vari post della categoria giochi per permettere agli utenti di votare e verificare se i giochi in questione piacciono o meno.
Come si può fare?
Grazie.

serena1986
***

Sesso : Femminile
Età : 30
Messaggi : 103
Località : Bolgare (BG)


Vedere il profilo dell'utente http://ilpozzodeidesideri.forumattivo.it/
serena1986 è stato ringraziato dall'autore di questo topic.

In corso Re: Stelline

Messaggio Da Bazzy9 il Sab 18 Giu 2011, 11:22

Mmmmm...ti crei un DIV la cui dimensione è proporzionale al punteggio. Con un CSS imposti il background del DIV con una stellina (che si ripete automaticamente).
Bye :zen:

Bazzy9
@ Super attivo @

Sesso : Maschile
Età : 22
Messaggi : 1855
Località : Padova


Vedere il profilo dell'utente http://webix.forumattivo.it/
Bazzy9 è stato ringraziato dall'autore di questo topic.

In corso Re: Stelline

Messaggio Da the crow il Sab 18 Giu 2011, 12:46

forse lavorando nei template..pero' tu non li hai nella tua versione. per le altre versioni puoi usare il sondaggio...puoi modificare le icone del sondaggio, pero dopo le modifichi per tutti i sondaggi.


Ultima modifica di the crow il Sab 18 Giu 2011, 12:56, modificato 1 volta

the crow
Veterano dello staff

Sesso : Maschile
Età : 25
Messaggi : 8797
Località : Roma


Vedere il profilo dell'utente http://aiuto.forumattivo.it/forum
the crow è stato ringraziato dall'autore di questo topic.

In corso Re: Stelline

Messaggio Da <Next> il Sab 18 Giu 2011, 12:50

mi spiace per te, bazzy, ma così se clicca su una stellina non sccede nulla. per qualcosa del genere serve per forza un codice html collegato a qualche script, o php oppure javascript. o come ha detto the crow, un template.

<Next>
***

Sesso : Maschile
Età : 20
Messaggi : 139
Località : galtellì


Vedere il profilo dell'utente http://gta-games.mioforum.net
<Next> è stato ringraziato dall'autore di questo topic.

In corso Re: Stelline

Messaggio Da serena1986 il Sab 18 Giu 2011, 13:41

Mannaggi a me e quando mai ho scelto sto phpbb3... Sad
Quindi come posso fare?Però spiegatemelo passo passo perchè non sono brava come voi! Embarassed

serena1986
***

Sesso : Femminile
Età : 30
Messaggi : 103
Località : Bolgare (BG)


Vedere il profilo dell'utente http://ilpozzodeidesideri.forumattivo.it/
serena1986 è stato ringraziato dall'autore di questo topic.

In corso Re: Stelline

Messaggio Da <Next> il Sab 18 Giu 2011, 14:06

ah, io con i template sono negato. con javascript lo stesso, se non mi chiedi di css o html, io non ti so fare niente T.T . ho cercato, ma non ho trovato nulla...

<Next>
***

Sesso : Maschile
Età : 20
Messaggi : 139
Località : galtellì


Vedere il profilo dell'utente http://gta-games.mioforum.net
<Next> è stato ringraziato dall'autore di questo topic.

In corso Re: Stelline

Messaggio Da serena1986 il Sab 18 Giu 2011, 16:43

OT: Quindi tu riusciresti a darmi una mano con quest'altro codice http://aiuto.forumattivo.it/t12605-facebook-lihe-in-ogni-messaggio-phpbb3 che mi hanno dato per il facebook like?

serena1986
***

Sesso : Femminile
Età : 30
Messaggi : 103
Località : Bolgare (BG)


Vedere il profilo dell'utente http://ilpozzodeidesideri.forumattivo.it/
serena1986 è stato ringraziato dall'autore di questo topic.

In corso Re: Stelline

Messaggio Da the crow il Sab 18 Giu 2011, 17:08

@ ha scritto:ah, io con i template sono negato. con javascript lo stesso, se non mi chiedi di css o html, io non ti so fare niente T.T . ho cercato, ma non ho trovato nulla...
..anche se eri bravo ..lei non li ha i templates

the crow
Veterano dello staff

Sesso : Maschile
Età : 25
Messaggi : 8797
Località : Roma


Vedere il profilo dell'utente http://aiuto.forumattivo.it/forum
the crow è stato ringraziato dall'autore di questo topic.

In corso Re: Stelline

Messaggio Da <Next> il Sab 18 Giu 2011, 18:08

vediamo cosa posso fare per facebook like... io purtroppo sono passato a punBB, altrimenti ti avrei aiutato più facilmente... vabbè, proviamo lo stesso Wink

<Next>
***

Sesso : Maschile
Età : 20
Messaggi : 139
Località : galtellì


Vedere il profilo dell'utente http://gta-games.mioforum.net
<Next> è stato ringraziato dall'autore di questo topic.

In corso Re: Stelline

Messaggio Da Diego il Sab 18 Giu 2011, 21:33

@the crow ha scritto:
@ ha scritto:ah, io con i template sono negato. con javascript lo stesso, se non mi chiedi di css o html, io non ti so fare niente T.T . ho cercato, ma non ho trovato nulla...
..anche se eri bravo ..lei non li ha i templates
non servono soloo i templates.. serve anche qualche sistema per memorizzare la votazione in php, asp o quel che vuoi con un piccolo database.. Evil or Very Mad


Diego
Aiutattivo
Aiutattivo

Sesso : Maschile
Età : 25
Messaggi : 2249
Località : arezzo


Vedere il profilo dell'utente http://www.folliacity.it/blog-1.html
Diego è stato ringraziato dall'autore di questo topic.

In corso Re: Stelline

Messaggio Da the crow il Sab 18 Giu 2011, 21:38

mi fai un esempio tu hai il forum su altervista

the crow
Veterano dello staff

Sesso : Maschile
Età : 25
Messaggi : 8797
Località : Roma


Vedere il profilo dell'utente http://aiuto.forumattivo.it/forum
the crow è stato ringraziato dall'autore di questo topic.

In corso Re: Stelline

Messaggio Da Diego il Sab 18 Giu 2011, 22:08

non sto a farla tanto lunga la storia.. allora..

nel database ci deve essere una tabella con almeno 2 colonne..
ID Discussione Voto
bla bla bla 5
bla bla bla 3

nella parte operativa uno script che è in grado di identificare la discussione (come il prelievo dell'url), passa i dati raccolti ad uno script in PHP che fa una ricerca nel database, fa la media dei voti dati alla discussione, effettua l'approssimazione con la funzione floor() e poi restituisce il risultato al forum dove con il javascript vengon generate le stelline desiderate..

in somma.. secondo me c'è da andarci al manicomio se non si possiede direttamente il il forum su quel server su cui si andranno a memorizzare le votazioni perché ci si ritroverebbe costantemente a far a botte con la same origin policy... Laughing

Diego
Aiutattivo
Aiutattivo

Sesso : Maschile
Età : 25
Messaggi : 2249
Località : arezzo


Vedere il profilo dell'utente http://www.folliacity.it/blog-1.html
Diego è stato ringraziato dall'autore di questo topic.

In corso Re: Stelline

Messaggio Da the crow il Sab 18 Giu 2011, 23:04

non ho idea di quello che stai dicendo...io so tuttaltra cosa....comunque la teoria la conosco e il codicie che mi manca l'hai ?

the crow
Veterano dello staff

Sesso : Maschile
Età : 25
Messaggi : 8797
Località : Roma


Vedere il profilo dell'utente http://aiuto.forumattivo.it/forum
the crow è stato ringraziato dall'autore di questo topic.

In corso Re: Stelline

Messaggio Da gepifan il Sab 18 Giu 2011, 23:34

Ha ragione Diego c'è bisogno di un sistema di memorizzazione, come per la barra dei messaggi (come se fossero tramite cellulare) nel suo forum.

gepifan
****

Sesso : Maschile
Età : 23
Messaggi : 403
Località : torino


Vedere il profilo dell'utente http://pgdownloads.forumattivo.eu
gepifan è stato ringraziato dall'autore di questo topic.

In corso Re: Stelline

Messaggio Da Diego il Dom 19 Giu 2011, 10:22

@the crow ha scritto:non ho idea di quello che stai dicendo...io so tuttaltra cosa....comunque la teoria la conosco e il codicie che mi manca l'hai ?
non ci si era capiti.. Laughing
il codice non ce l'ho poichè non mi è mai servita una cosa simile e comunque è sempre necessario smanettare con i templates per inserire le stelline.. Laughing
teoricamente con trentina di righe in PHP la cosa si dovrebbe fà.. Basketball
una volta finiti questi cavolo di esami di maturità, mi metto qui con una bella tazza di camomilla e butto giù il codice php e javascript.. Wink

Diego
Aiutattivo
Aiutattivo

Sesso : Maschile
Età : 25
Messaggi : 2249
Località : arezzo


Vedere il profilo dell'utente http://www.folliacity.it/blog-1.html
Diego è stato ringraziato dall'autore di questo topic.

In corso Re: Stelline

Messaggio Da TIGRE-INDIANA il Dom 19 Giu 2011, 13:37

//ajax.js

function showStars(n){
clearStars();
for(i=1;i<=n;i++){
document.getElementById('STAR'+i).src="./img/fullstar.gif";
}
switch(n){
case 1:
replaceSimpleText('RATETIP',"Poor");
break;
case 2:
replaceSimpleText('RATETIP',"Nothing special");
break;
case 3:
replaceSimpleText('RATETIP',"Good");
break;
case 4:
replaceSimpleText('RATETIP',"Cool");
break;
case 5:
replaceSimpleText('RATETIP',"Awesome!");
break;
}
}

..//

function setStars(id,n){
hide("RATETIP");
caricaTesto("RATEMSG","./RatingController?op=rate&id="+id+"&rate="+n);
revertStars(n);
}
..//

La funzione showStars() si occupa di evidenziare il numero di stelline puntate dal mouse (con la funzione onmousover) e di mostrare il messaggio (poor, nothing special, good, cool oppure awesome) nell'elemento RATETIP.

La vera funzione asincrona (AJAX) è la funzione setStars() il cui compito è di inoltrare la funzione sul controller e caricarne il risultato (il testo restituito dalla servlet) all'interno dell'elemento RATEMSG. Tutto quanto in maniera asincrona, con il supporto delle funzioni AJAX, effettuando operazioni lato server ma rimanendo all'interno della stessa pagina Web.

TIGRE-INDIANA
Sono un nuovo membro :)

Sesso : Femminile
Età : 46
Messaggi : 14
Località : IMOLA


Vedere il profilo dell'utente http://sos-aiuto.forumattivo.it
TIGRE-INDIANA è stato ringraziato dall'autore di questo topic.

In corso Re: Stelline

Messaggio Da gepifan il Dom 19 Giu 2011, 13:43

Quindi dove si dovrebbe mettere questo codice?

gepifan
****

Sesso : Maschile
Età : 23
Messaggi : 403
Località : torino


Vedere il profilo dell'utente http://pgdownloads.forumattivo.eu
gepifan è stato ringraziato dall'autore di questo topic.

In corso Re: Stelline

Messaggio Da TIGRE-INDIANA il Dom 19 Giu 2011, 13:57

No, quello è la parte finale se vuole vedere i risultati.
Mentre per COME FARE dall'inizio, sto preparando il post.
Se poi è utile, qualcuno potrà renderlo come guida =)

TIGRE-INDIANA
Sono un nuovo membro :)

Sesso : Femminile
Età : 46
Messaggi : 14
Località : IMOLA


Vedere il profilo dell'utente http://sos-aiuto.forumattivo.it
TIGRE-INDIANA è stato ringraziato dall'autore di questo topic.

In corso Re: Stelline

Messaggio Da TIGRE-INDIANA il Dom 19 Giu 2011, 14:08

Quello che cerco di pubblicare è la realizzazione di un sistema che permetta all'utente di votare la risorsa, in maniera asincrona (quindi, rimanendo all'interno della pagina Web). In più tento di rendere accattivante la funzionalità, permettendo all'utente di utilizzare un "sistema a stelline" che gli consenta visivamente di effettuare il voto cliccando sul numero di stelle che desidera. Infine, l'utente ha un suggerimento che cambia a ogni stellina, identificando in maniera testuale il voto.

A dirla tutta si tratta del sistema che oggi troviamo in tutti i siti di condivisione (video, foto, notizie, ecc) più o meno importanti.

Modifiche database
ALTER TABLE 'tagcloud'.'resource'
ADD COLUMN 'totalrating' INTEGER UNSIGNED NOT NULL DEFAULT 0 AFTER 'description',
ADD COLUMN 'totalVote' INTEGER UNSIGNED NOT NULL DEFAULT 0 AFTER 'totalrating';
A questo punto dobbiamo provvedere a integrare le nuove informazioni. La classe che rappresenta la risorsa è per noi Resource. La classe che gestisce la sua persistenza è DBManager.

Creiamo una classe RatingResource in cui gestiamo i due parametri aggiunti al database.
// RatingResource.java

package it.html.tagcloud.rating;
import it.html.tagcloud.Resource;

public abstract class RatingResource{
//Le istanze che rappresentano il voto totale e il numero di votanti
protected int totalRating;
protected int totalVotes;

public int getTotalRating(){
return totalRating;
}

public void setTotalRating(int totalRating) {
this.totalRating = totalRating;
}

public int getTotalVotes(){
return totalVotes;
}

public void setTotalVotes(int totalVotes){
this.totalVotes = totalVotes;
}
}

Creiamo un'interfaccia RatingDBManager in cui gestiamo il metodo che effettua l'operazione di voto (aggiunge un voto alla risorsa).
//RatingDBManager.java

package it.html.tagcloud.rating;

import it.html.tagcloud.Resource;
import it.html.tagcloud.rating.RatingException;

public interface RatingDBManager {
public void rate(Resource res, int vote)throws RatingException;
}

Per mantenere il servizio funzionante, ora, effettuiamo l'estensione di queste classi dalla classe Resource e dalla classe DBManager. Nel costruttore di Resource, aggiungiamo il riferimento ai due nuovi parametri, in questo modo, il tool di sviluppo che stiamo utilizzando ci darà informazioni sulle relazioni che sono cambiate e quindi dove intervenire nelle modifiche.
public class Resource extends RatingResource
{
..//

public Resource(int id, String title, String description, Collection tags, int totalRating, int totalVotes) {
this.id=id;
this.title=title;
this.description=description;
this.tags=tags;
// Settiamo i campi ereditati
this.totalRating=totalRating;
this.totalVotes=totalVotes;
}
..//
public interface DBManager extends RatingDBManager
..//

Come vediamo dalle segnalazioni di errore, le uniche modifiche sono nella classe DBManagerConcrete (quella che concretamente si occupa di gestire il collegamento con il database). La prima modifica che dobbiamo fare è nell'istanziazione della classe Resource (abbiamo cambiato il costruttore) che modifichiamo come segue:
..//
//Aggiunta dei campi per il sistema di rating
int totalRating=rs.getInt("totalrating");
int totalVotes=rs.getInt("totalvote");

//Creazione dell'istanza da restituire
toRet=new Resource(id,title,description,tags,totalRating,totalVotes);
..//
Ci sono tre riferimenti, che modificheremo allo stesso modo. L'altra modifica da fare riguarda la definizione concreta del metodo utilizzato per settare il voto della risorsa:
..//
public void rate(Resource res, int vote) throws RatingException {
if (vote<1 || vote>5)
throw new RatingException("Voto fuori dai limiti");
//altrimenti effettuiamo la votazione
try{
openConnection();

String sql="UPDATE resource set totalrating=totalrating+?,totalvote=totalvote+1 WHERE id=?";
PreparedStatement pst=connection.prepareStatement(sql);

pst.setInt(1,vote);
pst.setInt(2,res.getId());

pst.execute();

//Chiusura dei flussi aperti
pst.close();

closeConnection();

}catch(Exception e){
e.printStackTrace();
}
}
..//
In pratica ci occupiamo di aumentare di un'unità il contatore e di aggiungere il voto dato (a meno che il voto non vada fuori dai limiti, in quel caso solleviamo l'eccezione).

Dopo aver effettuato qualche test di unità, passiamo a definire la funzione sul controller. Qui ci occuperemo di inoltrare il voto utente verso il layer di persistenza e di definire un controllo sulle risorse da votare attraverso l'utilizzo dei cookie. Avendo mantenuto la struttura invariata, la servlet utilizzata funziona ancora correttamente, quindi dovremo estenderla con la funzione di voto:
..//

public class RatingController extends Controller {
..//
private void rateResource(HttpServletRequest request, HttpServletResponse response) throws IOException {
//Recupero il codice
String id=request.getParameter("id");
int rate=Integer.parseInt(request.getParameter("rate"));

//Se non è stato ancora votato
if (!alreadyRated(request,id,rate)){
//Carico la risorsa
Resource res=db.loadResource(Integer.parseInt(id));
try{
//Effettuo l'operazione persistente
db.rate(res,rate);
//marchiamo la risorsa come già votata
setAsRated(response,id,rate);
response.getWriter().println("Grazie, il tuo voto è stato aggiunto.");
}catch (RatingException ex) {
response.getWriter().println(ex.getMessage());
}
}else{
response.getWriter().println("Hai già espresso la preferenza per questa risorsa.");
}
}

//Il metodo verifica nei cookie se la risorsa è presente
private boolean alreadyRated(HttpServletRequest request, String id, int rate) {
Cookie []list=request.getCookies();
for (int i=0;i if (list[i].getName().equals(id))
return true;
}
return false;
}

//Aggiungiamo il cookie alla lista
private void setAsRated(HttpServletResponse response, String id, int rate) {
//Creo un cookie
Cookie cookie=new Cookie(id,String.valueOf(rate));
//e lo appendo alla lista
response.addCookie(cookie);
}
}

Il metodo che si occupa di gestire il flusso della funzione è il metodo rateResource(). Il flusso è il seguente:

Recupera l'identificativo della risorsa e il voto da assegnare;
Verifica che la risorsa non sia già stata votata;
In caso negativo chiama la funzione;
Restituisci un risultato testuale (successo o errore).

La gestione dei cookie è affidata ai metodi alreadyRated() e setAsRated(), che potete vedere nel codice. La scadenza del cookie è in questo caso lasciata al default (sessione utente) ma può essere estesa in base alle esigenze.
La parte AJAX, come ormai sappiamo, viene nell'interfaccia e ci permetterà di gestire in maniera dinamica gli elementi della pagina, definendo opportunamente le funzioni da utilizzare. Quello che cambierà è la pagina di rappresentazione della risorsa, aggiungendo l'elemento grafico per effettuare la votazione:


<%
String src=null;
int votes=res.getTotalVotes();
double rate=0;

if (votes>0)
rate=res.getTotalRating()/votes;

for (int i=1;i<=5;i++){
if (rate>=i)
src="./img/fullstar.gif";
else
src="./img/emptystar.gif";
%>
onmouseover="javascript:showStars(<%=i%>);" onmouseout="javascript:revertStars(<%=(int)rate%>);">

<%
}
%>




<%
if (votes>0)
out.println("("+votes+" voti ricevuti)");
else
out.println("(ancora nessun voto)");
%>

Identificheremo gli elementi della pagina con un id univoco, in modo da poterli manipolare correttamente; essi sono: STARLINKi e STARi che rappresentano la iesima stellina (con i da 1 a 5) e RATETIP e RATEMSG. Gli ultimi elementi rappresentano gli elementi contenitore dei messaggi che scambieremo.

Attraverso le funzioni javascript setStars(), showStars() e revertStars() gestiremo la logica di rappresentazione.
//ajax.js

function showStars(n){
clearStars();
for(i=1;i<=n;i++){
document.getElementById('STAR'+i).src="./img/fullstar.gif";
}
switch(n){
case 1:
replaceSimpleText('RATETIP',"Poor");
break;
case 2:
replaceSimpleText('RATETIP',"Nothing special");
break;
case 3:
replaceSimpleText('RATETIP',"Good");
break;
case 4:
replaceSimpleText('RATETIP',"Cool");
break;
case 5:
replaceSimpleText('RATETIP',"Awesome!");
break;
}
}

..//

function setStars(id,n){
hide("RATETIP");
caricaTesto("RATEMSG","./RatingController?op=rate&id="+id+"&rate="+n);
revertStars(n);
}
..//


E questo è tutto Very Happy

TIGRE-INDIANA
Sono un nuovo membro :)

Sesso : Femminile
Età : 46
Messaggi : 14
Località : IMOLA


Vedere il profilo dell'utente http://sos-aiuto.forumattivo.it
TIGRE-INDIANA è stato ringraziato dall'autore di questo topic.

In corso Re: Stelline

Messaggio Da <Next> il Dom 19 Giu 2011, 14:22

ditemi precisamente come fare e dove mettere questo codici, mi sono interessato anche io!

<Next>
***

Sesso : Maschile
Età : 20
Messaggi : 139
Località : galtellì


Vedere il profilo dell'utente http://gta-games.mioforum.net
<Next> è stato ringraziato dall'autore di questo topic.

In corso Re: Stelline

Messaggio Da Diego il Dom 19 Giu 2011, 15:15

@TIGRE-INDIANA ha scritto:La tua guida..
Ok.. ottima giuda.. incasinatissima e quant'altro, ma ti sei dimenticato un particolare.. qui non è possibile usare il PHP ne accedere al database impedendo la memorizzazione e la lettura dei voti.. Laughing


Diego
Aiutattivo
Aiutattivo

Sesso : Maschile
Età : 25
Messaggi : 2249
Località : arezzo


Vedere il profilo dell'utente http://www.folliacity.it/blog-1.html
Diego è stato ringraziato dall'autore di questo topic.

In corso Re: Stelline

Messaggio Da <Next> il Dom 19 Giu 2011, 15:25

oh, cavoli! ecco ciò che odio leggere (senza offesa...)...

<Next>
***

Sesso : Maschile
Età : 20
Messaggi : 139
Località : galtellì


Vedere il profilo dell'utente http://gta-games.mioforum.net
<Next> è stato ringraziato dall'autore di questo topic.

In corso Re: Stelline

Messaggio Da TIGRE-INDIANA il Dom 19 Giu 2011, 17:00

Il Database per forza bisogna modificarlo....

Se qui non è possibile, vien da sè che la richiesta non è fattibile....


Vabbè, almeno questa guida ci può essere utile per altre situazioni in futuro... Wink

TIGRE-INDIANA
Sono un nuovo membro :)

Sesso : Femminile
Età : 46
Messaggi : 14
Località : IMOLA


Vedere il profilo dell'utente http://sos-aiuto.forumattivo.it
TIGRE-INDIANA è stato ringraziato dall'autore di questo topic.

In corso Re: Stelline

Messaggio Da <Next> il Dom 19 Giu 2011, 17:50

oppure può essere utile a chi ha il forum su un suo indirizzo (perchè chi ha un suo indirizzo può modificare il database, vero?).

<Next>
***

Sesso : Maschile
Età : 20
Messaggi : 139
Località : galtellì


Vedere il profilo dell'utente http://gta-games.mioforum.net
<Next> è stato ringraziato dall'autore di questo topic.

In corso Re: Stelline

Messaggio Da TIGRE-INDIANA il Dom 19 Giu 2011, 18:33

ESATTO =)

TIGRE-INDIANA
Sono un nuovo membro :)

Sesso : Femminile
Età : 46
Messaggi : 14
Località : IMOLA


Vedere il profilo dell'utente http://sos-aiuto.forumattivo.it
TIGRE-INDIANA è stato ringraziato dall'autore di questo topic.

Pagina 1 di 2 1, 2  Seguente

Vedere l'argomento precedente Vedere l'argomento seguente Tornare in alto


 
Permesso di questo forum:
Non puoi rispondere agli argomenti in questo forum