Back to top

Autore Topic: [2.5]sistema di votazione  (Letto 1410 volte)

Offline memo2014

  • Nuovo arrivato
  • *
  • Post: 18
    • Mostra profilo
[2.5]sistema di votazione
« il: 01 Lug 2014, 18:06:02 »
Buonasera a tutti.


Sto implementando un sistema di votazione con il "classico" star rating.


Ciò che non riesco a gestire per bene è la situazione in cui l'item da votare, per un determinato ip, abbia già ricevuto un rating e quindi impedire che possa essere votato nuovamente (sempre da uno stesso ip).


la porzione di codice è questa:


Codice: [Seleziona]
$query = "SELECT * FROM #__com_songs_rating WHERE id = ".(int)$item->id;
$db->setQuery($query);
$result = $db->loadObject();


if(!$result)
{
   $query = "INSERT INTO blablbalba";
   $db->setQuery($query);
   $db->query();
   echo JText::('Il tuo voto è stato registrato');
}
else
{
   //questa porzione di codice non funziona
   if($ip_user != ($result->$ip))
   {
      $query = "INSERT INTO blablabla";
      $db->setQuery($query);
      $db->query();
      echo JText::('Il tuo voto è stato registrato');
   }
   else
   {
       echo JText::('Hai già espresso il tuo voto per questo brano');
   }
}


Il problema è che riesco a votare solo se non ho mai votato. Se ho già espresso il voto,
non mi entra nell'ultimo "else" ma mi stampa comunque "il tuo voto è stato registrato".


Grazie in anticipo a tutti.

mau_develop

  • Visitatore
Re:[2.5]sistema di votazione
« Risposta #1 il: 01 Lug 2014, 18:26:30 »
non riesci
  else
      ad uscire
            else
            se non usi
                  elseif :)


 possa essere votato nuovamente (sempre da uno stesso ip).
-------------------------------------------------------------------
bene, io potrei votare ogni due ore che mi cambia ip....

Offline mmleoni

  • Global Moderator
  • Instancabile
  • *****
  • Post: 5547
  • Sesso: Maschio
  • Just another *nix coder/sysadmin...
    • Mostra profilo
Re:[2.5]sistema di votazione
« Risposta #2 il: 02 Lug 2014, 10:54:43 »
Codice: [Seleziona]
$query = "SELECT * FROM #__com_songs_rating WHERE id = ".(int)$item->id;

quel 'WHERE id =' suona davvero male... che cosa è quell'id?

comunque io riscriverei la query, fatta salva la validazione che serve, come:
Codice: [Seleziona]
$query = "SELECT COUNT(*) FROM #__com_songs_rating WHERE id_song = '{$id_song}' AND ip_user = '{$ip_user}'" ;
dopo di che usi loadResult() per verificare l'unico valore che ti interessa, ovvero se c'è o meno il voto, e ti risparmi la doppia query di insert (ma usare un && nell'if, no?)

ciao,
marco
mmleoni web consulting - creazione siti web aziendali ed e-commerce avanzati - sviluppo moduli e componenti Joomla

 



Web Design Bolzano Kreatif