Visualizzazione dei risultati da 1 a 5 su 5
  1. #1

    Modificare votazione nella sezione TopSite

    Salve a tutti,
    vi sottopongo un problema che ho con la programmazione in PHP e vediamo se gentilmentente qualche anima buona può darmi una mano

    Il mio sito è www.helpinweb.it e si basa su un portale (MkPortal) che nella sezione TopSite non permette la votazione agli utenti che hanno già espletato la loro preferenza.
    Ebbene, io vorrei fare in modo che il voto lo si potesse ripetere ogni 24 ore, anche dallo stesso utente.

    Ecco la funzione da modificare:
    -------------------------------------------------------------------------------------
    function submit_rate() {
    global $ibforums, $mklib, $Skin, $DB;
    $ide= intval($ibforums->input['ide']);

    $iduser = $ibforums->member['id'];
    $ipuser = $_SERVER['REMOTE_ADDR'];
    $module = "topsite";

    $query = $DB->query( "SELECT id FROM mkp_votes where module = '$module' and id_entry = '$ide' and id_member = '$iduser'");
    $checkuser = $DB->get_num_rows();
    $query = $DB->query( "SELECT id FROM mkp_votes where module = '$module' and id_entry = '$ide' and ip = '$ipuser'");
    $checkip = $DB->get_num_rows();

    if($checkuser || $checkip) {
    $message = "{$mklib->lang['to_justvote']}";
    $mklib->error_page($message);
    exit;
    }
    -----------------------------------------------------------------------------------
    Ho una mezza idea di cosa fare ma vorrei prima un vostro utile consiglio in proposito, anche perchè non so se esiste già una funzione in PHP che permetta di riconoscere la durata minima di 24 ore, oltre la quale sarà possibile rivotare.

    Grazie mille per la gentile attenzione e per il vostro prezioso aiuto.
    A presto
    News In Web - il social news per tutti
    --> https://www.newsinweb.net <--

  2. #2
    Utente di HTML.it
    Registrato dal
    Feb 2005
    Messaggi
    46
    Non ho letto tutto il codice...
    quando uno vota registri anche l'ora in cui ha votato.
    Se la volta dopo l'ora è maggiore di 24 lutente può votare di nuovo (aggiorni l'ora nella tabella se ancora esiste), altrimenti nisba. Ogni volta che uno vota cancelli le righe con differenza tempo maggiore a 24.

    Concettualmente funzia... devi aggiungere qlla tabella un campo che ti prenda l'ora.

    Ciao
    Yuri

  3. #3
    Per prima cosa devi aggiungere un campo nella tabella del modulo con nome "lastvote" o qualcosa del genere (memorizzerà la data dell'ultima votazione).

    In seguito aggiungi una nuova variabile $dateuser nella quale memorizzerai l'ora attuale in timestamp

    nelle due query aggiungi "AND nome_campo_data <= '$dateuser'"
    e dovrebbe funzionare.

    Però dovrai modificare anche la parte che inserisce il voto in modo che inserisca anche la data in formato timestamp. Ciao!

  4. #4
    Allora, ragioniamo insieme e vediamo se ho fatto bene [8(]
    Non ho creato il campo "vote_date" in quanto già presente nella tabella "mkp_tosite" il campo "date" con la relativa variabile richiamata nel codice ("$date").
    Mi sono limitato ad aggiungere invece le seguenti righe di codice:
    $query = $DB->query( "SELECT id FROM mkp_topsite where date='$date'");
    per richiamare il contenuto del campo "date" tramite la variabile "$date"

    $date_domani = date('d/m/y', mktime(0, 0, 0, date("m") , date("d") + 1, date("Y")));
    non so se sta bene ma dovrebbe cacolare il giorno successivo a "date"

    poi ho aggiunto la seguene istruzione IF:
    if($date_domani < $date) {
    $message = "{$mklib->lang['to_justvote']}";
    $mklib->error_page($message);
    exit;
    }

    In parole povere ecco le due funzioni che ho modificato con le stringhe appena menzionate:
    ------------------------------------------------------------ -
    function submit_rate() {
    global $ibforums, $mklib, $Skin, $DB;
    $ide= intval($ibforums->input['ide']);
    $iduser = $ibforums->member['id'];
    $ipuser = $_SERVER['REMOTE_ADDR'];
    $module = "topsite";


    $query = $DB->query( "SELECT id FROM mkp_votes where module = '$module' and id_entry = '$ide' and id_member = '$iduser'");
    $checkuser = $DB->get_num_rows();
    $query = $DB->query( "SELECT id FROM mkp_votes where module = '$module' and id_entry = '$ide' and ip = '$ipuser'");
    $checkip = $DB->get_num_rows();
    $query = $DB->query( "SELECT id FROM mkp_topsite where date='$date'");
    $date_domani = date('d/m/y', mktime(0, 0, 0, date("m") , date("d") + 1, date("Y")));



    if($date_domani < $date) {
    $message = "{$mklib->lang['to_justvote']}";
    $mklib->error_page($message);
    exit;
    }

    $query = $DB->query( "SELECT title FROM mkp_topsite where id = '$ide'");
    $row = $DB->fetch_row($query);
    $t_t = $row['title'];
    $maintit = "{$mklib->lang['to_vote']} $t_t";
    $users = $this->retrieve_online();
    $content .= ".........................
    ............................................
    }

    function add_rate() {
    global $ibforums, $DB, $mklib;
    $ide= intval($ibforums->input['ide']);
    $rating = intval($ibforums->input['rating']);
    $iduser = $ibforums->member['id'];
    $ipuser = $_SERVER['REMOTE_ADDR'];
    $module = "topsite";

    $query = $DB->query( "SELECT id FROM mkp_votes where module = '$module' and id_entry = '$ide' and id_member = '$iduser'");
    $checkuser = $DB->get_num_rows($query);
    $query = $DB->query( "SELECT id FROM mkp_votes where module = '$module' and id_entry = '$ide' and ip = '$ipuser'");
    $checkip = $DB->get_num_rows($query);
    $query = $DB->query( "SELECT id FROM mkp_topsite where date='$date'");
    $date_domani = date('d/m/y', mktime(0, 0, 0, date("m") , date("d") + 1, date("Y")));


    if($date_domani < $date) {
    $message = "{$mklib->lang['to_justvote']}";
    $mklib->error_page($message);
    exit;
    }

    $query="INSERT INTO mkp_votes(id_entry, module, id_member, ip)VALUES('$ide', '$module', '$iduser', '$ipuser')";
    $DB->query($query);

    $query = $DB->query( "SELECT rate, trate FROM mkp_topsite where id = '$ide'");
    $row = $DB->fetch_row($query);
    $rate = $row['rate'];
    $trate = $row['trate'];
    $votes = ($trate +1);
    if ( $rating != 0 ) {
    $rate = round ((($trate*$rate)+$rating)/($votes), 2);
    }
    $DB->query("UPDATE mkp_topsite SET rate ='$rate', trate ='$votes' where id = '$ide'");
    $DB->close_db();
    Header("Location: index.php?ind=topsite");
    exit;
    }
    ------ ------------------------------------------------------------ -

    Prima di uplodare il tutto, per evitare complicazioni, sono corrette le modifiche fatte al codice?

    Grazie ancora e a presto []
    News In Web - il social news per tutti
    --> https://www.newsinweb.net <--

  5. #5
    Prova! Scarica la versione del file che sta sul server, fai il dumb della tabella, carica il nuovo file e prova.

    Mica siamo infallibili? Potrebbe sempre scapparci qualcosa. Cmq dovrebbe essere corretto anche se hai affrontato il problema in modo un po' diverso rispetto a come te l'ho suggerito. Ma dovrebbe andare bene lo stesso. Facci sapere! Ciao!

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.