Joomla.it Forum
Non solo Joomla... => Sviluppo => : memo2014 01 Jul 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:
$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.
-
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....
-
$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:
$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