- Home
- Categorie
- Coding e Sistemistica
- Coding
- Contare quanti record sono contenuti in un campo per votazione profili
-
Certamente attuabilissima. Una volta che hai individuato l'utente non devi far altro che aggiornare il campo precedentemente ipotizzato da te ed il gioco è fatto.
-
Ciao..c'è un problema...praticamente mi da sempre che ho già votato quell utente..posto il codice ch eho tirato su....premetto che creato una tabella con 5 campi...cioè
nick_nomeinviante,nick_nomericevente,votoricevuto,hovotato,dataQuesto e il form per l invio
[PHP]
<html>
<head><meta http-equiv="Content-Type" content="text/html; charset=windows-1252">
<link rel="stylesheet" type="text/css" href="vota.css" />
<script type="text/javascript">
//-->Contacaratteri
function contaCaratteri(elementoForm) { var objForm = elementoForm.form; var rimanenti = elementoForm.name + 'Rimanenti'; objForm.elements[rimanenti].value = elementoForm.maxLength - elementoForm.value.length; }</script>
<body onload="contaCaratteri(document.forms['modulo'].elements['motto']);"><?
//Apro la sessione e...
session_start();
//verifico che dopo il login io abbia la chiave di sessione ad 1
if($_SESSION['logged']==1){
//se si...
//verifico se esiste la variabile destinatario
if(isset($_GET['destinatario']) OR $_GET['destinatario'] != ""){
$destinatario=$_GET['destinatario'];
}// Includo la connessione al database
require('config.php');echo"
<form method="POST" name="modulo" enctype="multipart/form-data" action="vota.php">
<div id=\"votaprofilo\"><b>Vota il profilo di $destinatario </b> <select name=\"voto\" size=\"1\> <option selected value=\"1\">1</option> <option value=\"1\">1</option> <option value=\"2\">2</option> <option value=\"3\">3</option> <option value=\"4\">4</option> <option value=\"5\">5</option> <option value=\"6\">6</option> <option value=\"7\">7</option> <option value=\"8\">8</option> <option value=\"9\">9</option> <option value=\"10\">10</option> </select></div>
<div id="nick"><input type="text" name="destinatario" value="$destinatario" </div>
<input type="submit" value="Invia voto">
</form>
</div>";
}?>
[/PHP]
e questa e vota.php la pagina che elabora...
[PHP]
<?
//Apro la sessione e...
session_start();
//verifico che dopo il login io abbia la chiave di sessione ad 1
if($_SESSION['logged']==1){
//recupero i valori dal form precedente
$cdestinatario = $_POST['destinatario'];
$cvoto = $_POST['voto'];
$cmittente = $_SESSION['nickname'];
}
else {
//altrimenti...
echo "Non sei loggato...";
//annullo tutte le chiavi di sessioni se esistono
session_unset();
session_destroy();
header("Location: login.htm");
exit;
}//controllo che l utente abbià già votato questo profilo quindi...
//mi connetto al database
$link = mysql_connect("$db_host", "$db_database", "$db_username", "$db_password") or die("Errore connessione: ". mysql_error());//seleziono il database
mysql_select_db('my_italiawebchat') or die("Errore apertura database: " . mysql_error());$sql="SELECT nick_votoricevente FROM voti WHERE nick_votoinviante='".$cmittente."' AND letto=1";
$query1=@mysql_query("$sql",$link) or die("Errore query database: " . mysql_error());$row=mysql_num_rows($query1);
if($row != 0)
{echo "<script> alert(\"Mi dispiace...ma hai già votato questo utente\"); location = \"sito//profiloaltri.php?nickname=$cdestinatario\"
</script>";
}
else {
$strsql="INSERT INTO voti (nick_votoinviante,nick_votoricevente,votoricevuto,hovotato,data) VALUES ('$cmittente','$cdestinatario','$cvoto','1',NOW())";@mysql_query("$strsql",$link) or die("Errore query database: " . mysql_error());
echo "<script>
alert("Voto inviato!!!");
location = "sito/profiloaltri.php?nickname=$cdestinatario"
</script>";}
?>
[/PHP]
Succede che mi fa votare solo un utente...poi se provo a votare altri utenti mi dice che ho già votato...:(
Il problema credo sta nel campo "hovotato" a cui quando voto utente passo il valore 1...come devo fare affinche nei successivi voti quel campo risulti 0...?
Faccio un esempio...
Cioè come posso permettere che un utente di nome Luca possa votare un utente di nome Paolo...e permettere che poi lo stesso utente Paolo possa votare l utente Luca?Grazie
-
[...]
Ci stava un errore nella query..comunque non ho ancora risolto...sempre lo stesso problema..
-
Ho risolto...praticamente nel campo "hovotato" vado ad inserire invece dell 1 il nick di chi ha votato....e poi nella query che verifico se l utente abbia già votato ho fatto cosi'...
[PHP]
$sql="SELECT nick_votoricevente,haivotato FROM voti WHERE nick_votoricevente='".$cdestinatario."' ";
$query1=@mysql_query("$sql",$link) or die("Errore query database: " . mysql_error());while($row=mysql_fetch_array($query1)){
$nickinviante=$row['nick_votoinviante']; $nickricevente=$row['nick_votoricevente']; $votodato=$row['votoricevuto'];
$haivotato=$row['haivotato'];
}
if($nickinviante = $haivotato)
{echo "<script> alert(\"Mi dispiace...ma hai già votato questo utente\"); location = \"sito/profiloaltri.php?nickname=$cdestinatario\"
</script>";
}
else {
$strsql="INSERT INTO voti (nick_votoinviante,nick_votoricevente,votoricevuto,letto,data) VALUES ('$cmittente','$cdestinatario','$cvoto','$cmittente',NOW())";@mysql_query("$strsql",$link) or die("Errore query database: " . mysql_error());
echo "<script>
alert("Voto inviato!!!");
location = "sito/profiloaltri.php?nickname=$cdestinatario"
</script>";
}
?>
[/PHP]
Mi seleziono durante il controllo solo il campo del nome del ricevente del voto e poi controllo se per quell utente il campo nome_inviante e uguale al campo "haivotato"...se si dai l alert che ha già votato altrimenti inserisci il voto:)Funziona alla grande...
Grazie
-
Purtroppo non funziona un bel nulla:x
Ho ricambiato un pò lo scritp....
Ricapitolando ho creato una tabella di nome "voti" con 5 campi...cioènick_votoinviante,nick_votoricevente,votoricevuto,letto,data
Questa è la pagina che elabora il tutto..
[php]
//recupero i valori dal form per votare
$cdestinatario = $_POST['destinatario'];
$cvoto = $_POST['voto'];
$cmittente = $_SESSION['nickname'];//Qui parte la query per fare il controllo e seleziono il nick di chi riceve il voto e il campo letto che contiene il valore 1
$sql="SELECT nick_votoricevente,letto FROM voti WHERE nick_votoricevente='".$cdestinatario."'AND letto=1 ";
$query1=@mysql_query("$sql",$link) or die("Errore query database: " . mysql_error());while($row=mysql_fetch_array($query1)){
$nickinviante=$row['nick_votoinviante']; $nickricevente=$row['nick_votoricevente']; $votodato=$row['votoricevuto'];
$haivotato=$row['letto'];
}
if($nickinviante =$haivotato)
{echo "hai già votato";
}
else {
$strsql="INSERT INTO voti (nick_votoinviante,nick_votoricevente,votoricevuto,letto,data) VALUES ('$cmittente','$cdestinatario','$cvoto','1',NOW())";@mysql_query("$strsql",$link) or die("Errore query database: " . mysql_error());
echo "<script>
alert("Voto inviato!!!");
</script>";
}
?>
[/php]Uff...non riesco a farlo funzionare..nella maggior parte dei casi da sempre l alert che ho già votato...fa votare solo se il nick di chi invia presente nel campo nick_votoinviante non ha valore 1,purtroppo quel valore 1 e un valore stabile quindi una volta che un nick risulta presente nel campo nick_nomeinviante e ha valore 1 nel campo letto uscirà sempre l alert..anche se nn ha votato quell utente!!:(
Come posso fare per risolvere...??
-
Il problema stà, secondo me senza vedere il codice, nel far riconoscere non solo l'utente che vota, ma anche che tipo di votazione fa.
Es.: se ho tre sondaggi da dover votare bisogna pur distinguerli in modo da poter votare a tutti e tre. non so se ho reso l'idea, ma come riconosci l'utente così devi far riconoscere che tipo di voto va incontro.
Se non è chiaro fammi sapere
CIAO
-
[..]
Il problema è qui'...
[php]
if($nickinviante ==$haivotato)
{echo "<script> alert(\"Mi dispiace...ma hai già votato questo utente\"); location = \"sito/profiloaltri.php?nickname=$cdestinatario\"
</script>";
} [/php]nickinviante contiene tutti i nick di chi vota un altro utente...e finche non conterrà un nick di qualcuno che nn ha ancora votato nessuno lo script funzionerà...invece una volta che vota e che il suo nick andrà a inserirsi nel campo "nickvotainviante" al controllo dell if risulterà uguale a 1 e quindi nn potrà piu' votare nessuno...e qui' il problema..io credo che te hai già capito purtroppo però non mi è chiaro la soluzione che mi hai proposto...potresti per favore spiegarti meglio?
Grazie
-
Ecco ciò che succede nella tabella quando un utente vota..il suo nick e memorizzato nel campo nick_votoinviante ,il nick_votoricevente contiene il nick a cui ha dato il voto,votoricevuto contiene il voto dato,e a letto do sempre il valore 1 che uso poi per il controllo..mentre data contiene la data in cui e stato dato il voto
[PHP]nick_votoinviante |nick_votoricevente| votoricevuto | letto | data[/PHP]
[php]laura | carlitos | 8 | 1 | 2009-04-17 04:31:05[/PHP]
[php]laura | Gigio78 | 8 | 1 | 2009-04-17 04:30:01[/PHP]
[PHP]Gigio78 | laura | 7 | 1 | 2009-04-10 04:34:01[/PHP]Ora qui succede per esempio che se l utente Gigio78 voglia votare carlitos mi da che ho già votato quell utente
anche se non l ho votato...e quà che sta il problema...
-
Oddio...forse c'è l ho fatta...ho cambiato ancora lo script in questo modo...
[PHP]
//seleziono solo il nick di chi riceve il voto e solo il nick dell utente che effettua il voto e il campo letto che contiene come valore 1
$sql="SELECT nick_votoinviante,nick_votoricevente,letto FROM voti WHERE nick_votoricevente='".$cdestinatario."' AND nick_votoinviante='".$cmittente."'";while($row=mysql_fetch_array($query1)){
$nickinviante=$row['nick_votoinviante']; $nickricevente=$row['nick_votoricevente']; $votodato=$row['votoricevuto'];
$haivotato=$row['letto'];
}if($nickinviante =$haivotato)
{echo "<script> alert(\"Mi dispiace...ma hai già votato questo utente\"); location = \"sito/profiloaltri.php?nickname=$cdestinatario\"
</script>";
}
else {
$strsql="INSERT INTO voti (nick_votoinviante,nick_votoricevente,votoricevuto,letto,data) VALUES ('$cmittente','$cdestinatario','$cvoto','1',NOW())";@mysql_query("$strsql",$link) or die("Errore query database: " . mysql_error());
echo "<script>
alert("Voto inviato!!!");
location = "sito/profiloaltri.php?nickname=$cdestinatario"
</script>";
}?> [/PHP]
Almeno per ora funziona egregiamente...secondo te ho risolto in via definitiva..?
-
Innanzitutto ti consiglierei di farti una tabella dedicata agli utenti in modo da inviare il rispettivo id utente alla tabella in questione. (Ad ogni utente corrisponde un ID univoco).
Es.:
1) Laura
2) Carlitos
3) Gigio78Così la tabella diventerà
1 | 2 | 8 | 1 | 2009-04-17 04:31:05
1 | 3 | 8 | 1 | 2009-04-17 04:30:01
3 | 1 | 7 | 1 | 2009-04-10 04:34:01
e sei assolutamente sicuro che non possono esserci repliche di utenti e votazioniPoi non vedo quale sia il problema perchè la tabella parla chiaro.
L'esempio pratico può essere su [...] nel link Tutti i SONDAGGI. E' programmato in modo che i cookie provvedono a controllare se l'utente abbia già votato o meno. Per cui se hai a che fare con un utente loggato il controllo è più semplice.
[..]
Ciao a presto