• User

    Ok grazie anche il form è apposto, però mi sa che mi sono espresso male😊:

    @ManuelHT said:

    E poi se volessi fare in modo che gli utenti possano votare una quantità X di volte ogni Y di tempo (per esempio 3 volte a settimana e per 3 siti diversi) come faccio?

    Per questa parte avrei bisogno....mentre c'è un altra parte che consiste nel modificare un codice già esistente, in quella dovrei riuscire a cavarmela da solo...mi puoi aiutare per la parte che ho quotato sopra???

    Grazie!!!


  • Consiglio Direttivo

    Ti servirà un'altra tabella che abbia id, id del sito, ip di chi vota e data (formato timestamp).

    Nella index metterai uno script che cancellerà tutti i record più vecchi di una settimana.

    Ad ogni inserimento effettuerai due controlli:

    1. che l'utente non abbia già votato per qual sito nell'ultima settimana
    2. che il numero di votazioni presenti per quell'IP non sia già al limite impostato.

    Pero' mi permetto di farti notare che ad ogni riconnessione si ha un IP diverso, infatti solitamente questo controllo viene effettuato sul giornaliero o tramite cookie (ma già diventa più invasiva la cosa). 😉

    Se dalla selezione in questa tabella risulta che quell'IP non ha già votato quel sito, fai il controllo di quante volte è presente quell'IP, se è presente tre volte, dai messaggio di errore, se è presente meno di tre volte provvedi al nuovo inserimento. 🙂


  • User

    Ok allora mettiamo caso che io volessi far votare una volta al giorno per ogni IP (quindi ogni cambio di IP) come posso fare?

    Creo un altra tabella con nome 'vote' ed inserisco 'id' (autoincrementale), 'idsito', 'ip' e 'date'. Una volta fatto ciò dovrei mettere quello script che mi cancella i dati una volta a settimana, ma come faccio?

    Quindi, eliminando il discorso dei 3 voti ognuno su un sito diverso, rimarrebbe solo da fare il controllo se l indirizzo IP ha votato nell'arco della giornata.
    Ho provato quindi a buttare già due righe di codice ma molto probabilmente sarà sbagliato:

    Il codice del form sarebbe questo:

    
    <form method="post" action="add-vote.php">
    <input type="hidden" name="id" value="<? echo $id; ?>" />
    <input type="hidden" name="ip" value="<? echo $ip; ?>" />
    <input type="submit" name="vote" value="Invia il voto per questo sito" />
    </form>
    
    

    ed il codice di add-vote.php sarebbe questo:

    
    
    <?
    $id=$_POST['site'.'id'];
    $ip=$_POST['vote'.'ip'];
    
    require_once ("config.php");
    
    $sql="SELECT ip FROM vote WHERE ip='$ip'";
    $query=@mysql_query($sql) or die (mysql_error());
    
    $row=mysql_num_rows($query);
    if ($row!=0)
    {
       echo "Non puoi votare due volte nell'arco della stessa giornata";
       exit;
    }  
    else
    {
    $sql="UPDATE site SET vote=vote+1 WHERE id='$id'";
    $query=@mysql_query($sql) or die (mysql_error());
    }
    echo("Il tuo voto è stato inviato con successo");
    ?>
    
    
    

    Ho specificato in $ip il percorso 'site'.'id' per non fare confusione con id della tabella 'vote' quindi probabilmente sarà sbagliato....
    mi puoi dare le giuste correzioni per favore??


  • Consiglio Direttivo

    Beh, se decidi di fare il controllo giornalmente allora cancellerai quel voto giornalmente. 😉

    Quindi: come cancellare i dati più vecchi di un tot di tempo?
    Se usi il formato timestamp per la data ti verrà un gioco da ragazzi. 😉
    Ti basta implementare nelle pagine del sito uno script che cancelli tutti i record della tabella vote più vecchi di XXX secondi rispetto all'orario attuale, ovvero:
    [php]<?
    require_once ("config.php");
    $sql="DELETE FROM vote WHERE date<".time()-86400."";
    $query=@mysql_query($sql) or die (mysql_error());
    ?>[/php]Time() è una funzione di PHP che ti restituisce il timestamp attuale del server, 86400 sono i secondi in un giorno. 😉

    Vediamo ora l'add-vote.php.
    Nel form basta che ci sia l'id del sito, quindi:
    [html]<form method="post" action="add-vote.php">
    <input type="hidden" name="id" value="<? echo $id; ?>" />
    <input type="submit" name="vote" value="Invia il voto per questo sito" />
    </form>[/html]Nel file add-vote.php recuperi l'id del sito, associ l'IP dell'utente ad una variabile e quindi effettui il controllo se nella tabella vote quell'IP ha già votato quel sito (dato che passate le 24 ore il record viene automaticamente cancellato non lo troverà se ha votato il giorno prima):
    [php]<?
    $id=$_POST['id'];
    $ip=$_SERVER['REMOTE_ADDR']; //l'indirizzo IP dell'utente

    require_once ("config.php");

    //controlliamo che l'associazione IP-id non esista già.
    $sql="SELECT * FROM vote WHERE id_site='$id' AND ip='$ip'";
    $query=@mysql_query($sql) or die (mysql_error());

    // vediamo se la query contiene delle righe
    $row=mysql_num_rows($query);
    if ($row!= 0) //se la query ha delle righe e quindi ha estratto dei risultati
    {
    echo "Hai già votato per questo sito, torna alla <a href="paginasito.php?id=".$id."">pagina del sito</a>.";
    }
    else // se la query non produce risultati
    {
    $sql="UPDATE site SET vote=vote+1 WHERE id='$id'";
    $query=@mysql_query($sql) or die (mysql_error());

    echo "Grazie per aver votato, torna alla <a href="paginasito.php?id=".$id."">pagina del sito</a>.";
    }
    ?>[/php]Credo che qualcosa del genere potrebbe andare. 🙂


  • User

    Provando a fare come dici tu il voto funziona ma non invia l'ip alla tabello vote-->ip

    In effetti guardando il codice non capisco come fa ad inviare e quindi a registrare l'indirizzo ip nel database, per poi verificare se esiste, inoltre io voglio fare in modo che un certo IP possa votare solo una volta, per qualsiasi sito, cioè non può votare due siti diversi, quindi al posto di

    $sql="SELECT * FROM vote WHERE id_site='$id' AND ip='$ip'";
    ```presumo che devo mettere solo
    
    

    $sql="SELECT * FROM vote WHERE ip='$ip'";

    
    Un altra cosa, lo script per il cancellamento dei record lo devo mettere nella pagina della votazione?
    
    Ma poi se ho due $sql diversi non vanno in contrasto?

  • Consiglio Direttivo

    @ManuelHT said:

    Provando a fare come dici tu il voto funziona ma non invia l'ip alla tabello vote-->ip
    Perché me lo son dimenticato. 😄 Maledetta fretta...
    Manca l'inserimento dei dati nella tabella vote:

    [php] <?
    $id=$_POST['id'];
    $ip=$_SERVER['REMOTE_ADDR']; //l'indirizzo IP dell'utente

    require_once ("config.php");

    //controlliamo che l'associazione IP-id non esista già.
    $sql="SELECT * FROM vote WHERE id_site='$id' AND ip='$ip'";
    $query=@mysql_query($sql) or die (mysql_error());

    // vediamo se la query contiene delle righe
    $row=mysql_num_rows($query);
    if ($row!= 0) //se la query ha delle righe e quindi ha estratto dei risultati
    {
    echo "Hai già votato per questo sito, torna alla <a href="paginasito.php?id=".$id."">pagina del sito</a>.";
    }
    else // se la query non produce risultati
    {
    $sql="UPDATE site SET vote=vote+1 WHERE id='$id'";
    $query=@mysql_query($sql) or die (mysql_error());

    $sql="INSERT INTO vote (id_sito, ip, date) VALUES ('$id', '$ip', ".time().")";
    $query=@mysql_query($sql) or die (mysql_error());

    echo "Grazie per aver votato, torna alla <a href="paginasito.php?id=".$id."">pagina del sito</a>.";
    }
    ?> [/php]

    ...voglio fare in modo che un certo IP possa votare solo una volta, per qualsiasi sito, cioè non può votare due siti diversi, quindi al posto di

    $sql="SELECT * FROM vote WHERE id_site='$id' AND ip='$ip'";
    ```presumo che devo mettere solo
    
    

    $sql="SELECT * FROM vote WHERE ip='$ip'";

    Giustissimo. ;)
    
    Ma a questo punto non ti serve più il riferimento dell'id_sito in quella tabella. :)
    
    > Un altra cosa, lo script per il cancellamento dei record lo devo mettere nella pagina della votazione?
    Beh, sarebbe meglio in tutte, potresti, volendo, inglobarlo nel config.php. :)
    
    > Ma poi se ho due $sql diversi non vanno in contrasto?
    Una volta eseguita la query la variabile $sql non ti serve più, puoi quindi assegnarli ulteriori valori nella stessa pagina, l'importante è ricordare che quando richiami una variabile come $sql, etc. etc., queste avranno come valore l'ultimo che gli hai assegnato. ;)

  • User

    Ora funziona tutto tranne che anche avendo

    echo "Hai già votato per questo sito";
    ```invece di postarmi la frase mi dice:
    
    "Duplicate entry 'XXXXX' for key 'ip'"   dove XXXXX è il mio IP, come mai???
    
    Poi un altra cosa: in pratica nella mia pagina ho un filmato .sfw dove al suo interno devono essere inseriti i siti che sono elencati in un file xml. I siti devono essere inseriti sotto forma di codice html:
    <a href="linksito" style="font-size: 12px" >Nome sito</a>
    linksito e nome sito devono essere presi dal database e il valore font-size deve essere preso dallo script che mi avevi dato tu.
    Ora il problema è che se la pagina fosse PHP la saprei fare, ma essendo la pagina XML come posso fare ad inserire quei dati?
    Posso inserire il php all interno dell' xml?
    
    
    
    grazie ancora sul serio, ormai è quasi finita   :)
    
    
    ps: nel campo data mi da "0000-00-00 00:00:00", è normale?? e poi per il campo IP ho messo INT (30) è giusto?

  • Consiglio Direttivo

    @ManuelHT said:

    Ora funziona tutto tranne che anche avendo

    >echo "Hai già votato per questo sito";
    >```invece di postarmi la frase mi dice:
    
    "Duplicate entry 'XXXXX' for key 'ip'"   dove XXXXX è il mio IP, come mai???
    
    ps: nel campo data mi da "0000-00-00 00:00:00", è normale?? e poi per il campo IP ho messo INT (30) è giusto?
    La risposta te la dai nel P.S., dato che i campi son impostati male per i dati che ricevono non verificherà mai l'esistenza della query. :)
    Ti da quel valore nel campo data perché te lo hai impostato come campo data per ricevere dati del tipo: 2009-04-15 14:42:00. Ma siccome stiamo lavorando di timestamp e quindi con i secondi, ovvero numeri interi, il campo date dovrà essere un INT.
    Per l'IP non va bene l'INT dato che 127.0.0.1 non è un numero intero, puoi mettere anche un VARCHAR volendo, non è un grosso problema. ;)
    
    
    > Poi un altra cosa: in pratica nella mia pagina ho un filmato .sfw dove al suo interno devono essere inseriti i siti che sono elencati in un file xml. I siti devono essere inseriti sotto forma di codice html:
    <a href="linksito" style="font-size: 12px" >Nome sito</a>
    linksito e nome sito devono essere presi dal database e il valore font-size deve essere preso dallo script che mi avevi dato tu.
    Ora il problema è che se la pagina fosse PHP la saprei fare, ma essendo la pagina XML come posso fare ad inserire quei dati?
    Posso inserire il php all interno dell' xml?Purtroppo quì non saprei esserti d'aiuto, non ho mai lavorato su file XML. :(

  • User

    Ok grazie, ti vorrei chiedere un altro paio di cose:
    per evitare gli spammer si può fare qualcosa?
    se dovessi richiamare i link sotto forma

    <a href="link_sito" style="font-size: XYpx" >nome_sito</a>
    ```questo script
    

    <?

    require_once ("config.php");

    $sql="SELECT vote FROM site";
    $query=@mysql_query($sql) or die (mysql_error());

    if ($array['vote']< 10 && $array['vote']>0)
    {
    $size=3;
    }
    else if ($array['vote']< 20 && $array['vote']>9)
    {
    $size=4;
    }
    else if ($array['vote']< 30 && $array['vote']>19)
    {
    $size=5;
    }
    else if ($array['vote']< 40 && $array['vote']>29)
    {
    $size=6;
    }
    else if ($array['vote']>39)
    {
    $size=8;
    }
    else
    {
    $size=2;
    }

    $sql="SELECT * FROM site ORDER BY name ASC";
    $query=@mysql_query($sql) or die (mysql_error());
    //a questo punto associ ad un array il risultato della query e quindi cicli il contenuto
    while ($array=mysql_fetch_array($query))
    {
    echo "<a href="".$array['link']."" style="font-size: <? echo $size; ?>pt">".$array['name']."</a><br />";
    }

    mysql_close($connessione);
    ?>

    
    In questo modo
    da 1 a 9 voti si ha '3'
    da 10 a 19 si ha '4'
    da 20 a 29 si ha '5'
    da 30 a 39 si ha '6'
    per più di 40 si ha '8'
    e per 0 voti si ha '2' giusto?

  • Consiglio Direttivo

    Tutti i controlli vanno quì:
    [php]<?
    ......
    while ($array=mysql_fetch_array($query))
    {
    // copia quì tutti gli if -> else
    echo "<a href="".$array['link']."" style="font-size: ".$size."pt">".$array['name']."</a><br />";
    }
    .........
    ?>[/php]Fuori dal while non otteresti nulla dato che l'array $array non è stato ancora creato. 😉

    Altra cosa, se sei dentro l'istruzione PHP non devi richiamare nuovamente il modulo:

      [echo](http://www.giorgiotave.it/wikigt/os/Echo) "<a href=\"".$array['link']."\" style=\"font-size: <? echo $size; ?>pt\">".$array['name']."</a><br />";
    

    Questo lo devi variare come sopra. 😉


  • User

    Ok ora funziona, grazie mille.
    Ti volevo chiedere se era possibile evitare lo spam, cioè che vengano inseriti siti dai bot o cose del genere. Poi se era possibile fare in modo che gli utenti siano costratti ad inserire un sito che inizia con "http: //" oppure che qualsiasi cosa inserisca venga inserito con "http: //" altrimenti la prende come se fosse una sottocartella del mio stesso sito.
    E poi se era possibile fare in modo che quando si inserisce un sito o una descrizione con una lettera accentata non mi compaia la lettera tradotta in html. per esempio ho inserito una "è" e mi è apparso "è".

    grazie mille ancora!!!!


  • Consiglio Direttivo

    @ManuelHT said:

    Ti volevo chiedere se era possibile evitare lo spam, cioè che vengano inseriti siti dai bot o cose del genere.
    Si, scusami, l'avevo letto ma rispondentoti m'è passato di mente. Hai due possibilità:

    • Implementare una conferma visuale (captcha);
    • Implementare un calcolo automatico di cui l'utente deve scrivere il risultato di due numeri random (es.: quanto fa 2 + 5? ed accanto la input box per inserire il numero, nella pagina di controllo verifichi se la somma inserita è giusta)

    Poi se era possibile fare in modo che gli utenti siano costretti ad inserire un sito che inizia con "http: //" oppure che qualsiasi cosa inserisca venga inserito con "http: //" altrimenti la prende come se fosse una sottocartella del mio stesso sito.Puoi sfruttare la funzione eregi (che sarebbe la versione case insensitive di ereg), per controllare se la stringa inserita contiene http://:
    [php]if (eregi('http://', $link)
    {
    // procedi con l'inserimento
    }
    else
    {
    $link="http://".$link;
    //procedi con l'inserimento
    }[/php];)
    E poi se era possibile fare in modo che quando si inserisce un sito o una descrizione con una lettera accentata non mi compaia la lettera tradotta in html. Per esempio ho inserito una "è" e mi è apparso "è".Dimenticanza mia, pardon. 😉

    All'atto della visualizzazione della descrizione o del nome inserisci la funzione html_entity_decode($description), dovrebbe andare così. 😉


  • User

    Non ho capito bene dove inserire il secondo script: mi puoi fare un esempio?
    E mi puoi far vedere come fare quello script dell inserire la somma dei numeri?

    Grazie ancora, se vuoi ti mando un pm e ti faccio vedere come sta venendo il sito!!!! 🙂 😉 🙂


  • Consiglio Direttivo

    Dovrai inserirlo nella pagina dove inserisci il sito nel Db:
    [php] <?
    $name=htmlentities($_POST['name'], ENT_QUOTES);
    $link=htmlentities($_POST['link'], ENT_QUOTES);
    $description=htmlentities($_POST['description'], ENT_QUOTES);
    $email=htmlentities($_POST['email'], ENT_QUOTES);

    require_once ("config.php"); // includo il file di connessione al Db

    $sql="SELECT link FROM site WHERE link='$link'";
    $query=@mysql_query($sql) or die (mysql_error());

    $row=mysql_num_rows($query);
    if ($row!=0)
    {
    echo "Questo sito è già stato inserito";
    exit;
    }
    else
    {
    if (eregi('http://', $link)
    {
    $sql="INSERT INTO site (name, link, description, email) VALUES ('$name', '$link', '$description', '$email')";
    $query=@mysql_query($sql) or die (mysql_error());
    }
    else
    {
    $link="http://".$link;
    $sql="INSERT INTO site (name, link, description, email) VALUES ('$name', '$link', '$description', '$email')";
    $query=@mysql_query($sql) or die (mysql_error());
    }
    }
    ?> [/php];)

    E mi puoi far vedere come fare quello script dell inserire la somma dei numeri?Dovresti sfruttare la funzione rand (random) per darti dei numeri a caso, mettiamo da 1 a 10. Oltre a visualizzarli come domanda, associ il valore a degli hidden data, inserisci nel form quindi un input per far inserire il risultato e nella pagina di controllo verifichi che la somma dei due numeri sia uguale al risultato immesso dall'utente:
    [php]<?
    $rand1=rand(1,10);
    $rand2=rand(1,10);
    ?>
    <form........
    .......

    Quanto fa <? echo $rand1; ?> + <? echo $rand2; ?>?
    <input type="text" name="ris" />
    <input type="hidden" name="rand1" value="<? echo $rand1; ?>" />
    <input type="hidden" name="rand2" value="<? echo $rand2; ?>" />
    </form>[/php]Nella pagina di inserimento metterai il recupero di questi valori:
    [php]<?
    ......
    $email=htmlentities($_POST['email'], ENT_QUOTES);
    $ris=$_POST['ris'];
    $rand1=$_POST['rand1'];
    $rand2=$_POST['rand2'];

    // ai controlli aggiungerai la verifica
    if (is_int($ris) && ($rand1 + $rand2) == $ris && $ris>0)
    {
    require_once ("config.php"); // includo il file di connessione al Db
    ............
    //metti il resto dello script
    }
    else
    {
    echo "Hai immesso un valore errato.";
    }
    ?>[/php]Nella verifica per prima cosa controlli che $ris sia un numero intero (is_int), poi che il risultato sia giusto (($rand1 + $rand2) == $ris) e quindi che lo stesso sia maggiore di zero ($ris>0), che non si sa mai. 😉


  • User

    Il form non funziona, mi da sempre il messaggio "hai inserito un valore errato"
    il codice che ho fatto è qeusto:

    
    <?
    $rand1=rand(1,10);
    $rand2=rand(1,10);
    ?>
    
    
    <form id="aggiungi-sito" method="post" action="fun-add-site.php">
    Nome sito:<br />
    <input type="text" name="name" /><br />
    Link sito:<br />
    <input type="text" name="link" /><br />
    Descrizione sito:<br />
    <input type="text" name="description" /><br />
    Email inseritore:<br />
    <input type="text" name="email" /><br /><br />
    Quanto fa <? echo $rand1; ?> + <? echo $rand2; ?>?(serve per verificare che tu sia un essere umano)
    <input type="text" name="ris" />
    <input type="hidden" name="rand1" value="<? echo $rand1; ?>" />
    <input type="hidden" name="rand2" value="<? echo $rand2; ?>" />
    <input type="submit" value="Invia Sito" />
    </form>
    
    ```per il form,
    
    e questo:
    

    <?
    $name=htmlentities($_POST['name'], ENT_QUOTES);
    $link=htmlentities($_POST['link'], ENT_QUOTES);
    $description=htmlentities($_POST['description'], ENT_QUOTES);
    $email=htmlentities($_POST['email'], ENT_QUOTES);
    $ris=$_POST['ris'];
    $rand1=$_POST['rand1'];
    $rand2=$_POST['rand2'];

    require_once ("config.php");

    if (is_int($ris) && ($rand1 + $rand2) == $ris && $ris>0)
    {
    $sql="SELECT link FROM site WHERE link='$link'";
    $query=@mysql_query($sql) or die (mysql_error());
    $row=mysql_num_rows($query);
    if ($row!=0)
    {
    echo "Questo sito è già stato inserito";
    exit;
    }
    else
    {
    if (eregi('http ://', $link))
    {
    $sql="INSERT INTO site (name, link, description, email, vote) VALUES ('$name', '$link', '$description', '$email', '0')";
    $query=@mysql_query($sql) or die (mysql_error());
    echo("Il tuo sito è stato aggiunto con successo.");
    }
    else
    {
    $link="http ://".$link;
    $sql="INSERT INTO site (name, link, description, email, vote) VALUES ('$name', '$link', '$description', '$email', '0')";
    $query=@mysql_query($sql) or die (mysql_error());
    echo("Il tuo sito è stato aggiunto con successo.");
    }

    }
    

    }
    else
    {
    echo "Hai immesso un valore errato.";
    }
    ?>

    
    E poi mi puoi spiegare meglio (magari con un esempio) dove mettere "html_entity_decode($description)" per evitare che vengano convertite le vocali accentate sia nella descrizione che per esempio nel link o nel nome del sito?
    grazie mille
    
    
    ps:ho dovuto staccare http :// in eregi sennò non mi faceva inviare il post

  • Consiglio Direttivo

    Metti al posto di is_int la funzione is_numeric, non va bene per dati POSTati is_int dato che di default non viene assegnata come integer una variabile. 😉

    Per l'altra domanda:
    nella pagina dove visualizzi il sito, la desrizione ed il resto, ovvero:

    [php]while ($array=mysql_fetch_array($query))
    {
    echo $array['id']."-<a href="".$array['link']."">".html_entity_decode($array['name'])."</a>-".html_entity_decode($array['description'])."<br />";
    }[/php]


  • User

    Perfetto!!!! Ora ti vorrei chiedere solamente un ultima cosa. Finalmente dovrebbe essere l'ultima cosa che ho da chiedere!
    Se voglio fare in modo che ogni settimana si azzerino i voti per ogni sito ma che il sito rimanga, come faccio?


  • Consiglio Direttivo

    Dovresti rendere uguale a zero tutti i campi vote della tabella site (UPDATE site SET vote=0) e cancellare i contenuti della tabella che memorizza le votazioni/IP (TRUNCATE TABLE vote).
    Per farlo fare in automatico puoi utilizzare un CRON (ovvero uno script che si riesegue ogni tot di tempo) oppure tener traccia della data dell'ultima cancellazione dati e immettere nel codice (anche dove cancelli le votazioni più vecchie di un giorno così lo hai in tutte le pagine) uno script che prende la data dell'ultima cancellazione se è passata una settimana o più esegue i comandi che ti ho postato sopra. Ti consiglio la seconda.
    Vuoi provare a farlo tu? 🙂


  • User

    Certo che voglio provare 🙂 però provo domani che ora vado a dormire, sono distrutto.

    ps: mi è venuta in mente un altra cosa da chiederti: se voglio disporre l'elenco dei siti in due o più colonne come faccio? cioè in pratica così:

    1. Sito 1 4) Sito 4 7) Sito 7
    2. Sito 2 5) Sito 5 😎 Sito 8
    3. Sito 3 6) Sito 6 9) Sito 9

    perchè per visualizzarli in colonna ho capito, ma in più colonne non saprei come fare. grazie ancora, quando il sito sarà finito posso postare il link qui per farlo vedere a te e agli altri utenti?


  • User

    @Samyorn said:

    Dovresti rendere uguale a zero tutti i campi vote della tabella site (UPDATE site SET vote=0) e cancellare i contenuti della tabella che memorizza le votazioni/IP (TRUNCATE TABLE vote).
    Per farlo fare in automatico puoi utilizzare un CRON (ovvero uno script che si riesegue ogni tot di tempo) oppure tener traccia della data dell'ultima cancellazione dati e immettere nel codice (anche dove cancelli le votazioni più vecchie di un giorno così lo hai in tutte le pagine) uno script che prende la data dell'ultima cancellazione se è passata una settimana o più esegue i comandi che ti ho postato sopra. Ti consiglio la seconda.
    Vuoi provare a farlo tu? 🙂
    per ora ho messo da parte il fatto di volerli cancellare una volta a settimana, se riprenderò questa idea lo script lo farei così (considera che vorrei anke cancellare la tabella che tiene conto degli ip che hanno votato, il motivo lo spiego sotto)

    
     <?
    require_once ("config.php");
    $sql="UPDATE site SET vote=0 WHERE date<".time()-604800."";
    $query=@mysql_query($sql) or die (mysql_error());
    ?>  
    
    

    (604800 secondi in una settimana) è giusto lo script?

    la tabella vote la toglierei semplicemente perchè voglio adottare il sistema dei cookies, ovviamente devo anche modificare lo script di invio voto in modo che invii i dati solo alla tabella site.

    per settare i cookie in modo che si possa votare solo una volta per ogni sito io farei così:

    
    <?
    $id=$_POST['id'];
    
    setcookie("votazione_$id","giavotato",time()+86400); 
    
    if($_COOKIE [ "votazione_".$id.""])
    {
    $sql="UPDATE site SET vote=vote+1 WHERE id='$id'";
    $query=@mysql_query($sql) or die (mysql_error());
    
    echo "Grazie per aver votato.";
    }
    else
    {
    echo "Hai già votato per questo sito";
    }
    
    ?>
    
    

    però non funziona, cosa c'è di sbagliato?

    e poi:
    @ManuelHT said:

    ps: mi è venuta in mente un altra cosa da chiederti: se voglio disporre l'elenco dei siti in due o più colonne come faccio? cioè in pratica così:

    1. Sito 1 4) Sito 4 7) Sito 7
    2. Sito 2 5) Sito 5 😎 Sito 8
    3. Sito 3 6) Sito 6 9) Sito 9

    perchè per visualizzarli in colonna ho capito, ma in più colonne non saprei come fare.

    per questo discorso come potrei fare???

    grazie:D