Sistema di votazione

ciao
$id=trim(strip_tags($_GET['id']);
no, mi sono dimenticato una parentesi

PHP:
$id=trim(strip_tags($_GET['id']));

@alex
anche per quello dicevo se il gioco vale la candela, cioè se uno deve proteggere dei dati sensibili è un conto, se di poca importanza è un altro
 
ciao, ho trovato un minuto (così eviti di lavorare manina manina - se funzia :)).
ti faccio la pag per inserire le canzoni, per ora accessibile senza password, poi vedremo l'accesso con pass e le limitazioni di accesso.
ti consiglio di farti una cartella in cui metterai tutti gli scripts per l'amministratore.
poi una piccola cosa che mi ero dimenticato:
quando fai delle pagine che poi includerai in altre NON mettere (come in registra_voto.php) i tag html
<!--<!DOCTYPE HTML PUBLIC ....... <html> <head> <body>..... -->
questo per evitare che, se li hai nella pagina includente, vengano duplicati ho diano fastidio a eventuali header.

inserisci_canzoni.php
PHP:
<?php
//in questa parte metterememo la verifica dei permessi di accesso
?>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<!-- tutto quello che ti serve, css, tag meta... -->
</head>
<body>
<?php
//prepariamo l'inserimento
if(isset($_POST['invio'])){//premuto tasto invio
	$ok_ko="";//preparo il solito messaggio di avviso per eventuali errori o tutto bene
	//leggo gli altri post
	$titolo=trim($_POST['titolo']);
	$autore=trim($_POST['autore']);
	if($titolo==""){$ok_ko.="<br>non hai inserito il titolo";}
	if($autore==""){$ok_ko.="<br>non hai inserito l'autore";}
	if($ok_ko==""){//i dati sono stati inseriti
		//tratti i dati in modo che vengano inseriti in un modo standard
		//questo può esserti utile per verifiche o ricerche
		//e metto adslshes per eventuali '
		$titolo=addslashes(ucwords(strtolower($titolo)));
		$autore=addslashes(ucwords(strtolower($autore)));
		/*
		esempio:
		se inserisci o' SOLE mIo il titolo diventa
		O\' Sole Mio
		*/
		//non so se ti serve una verifica che non ci siano due titoli uguali?
		//mi connetto al db ATTENTO ai percorsi
		require_once("../connessione.php");
		$data_ins=time();//leggo il tempo di inserimento
		//e preparo la querystringa
		$query="INSERT INTO canzoni(titolo,autore,voti,data) VALUES('$titolo','$autore',0,$data_ins)";
		//verifico l'inserimento (cosa che potresti verificare anche nei precedenti)
		if(mysql_query($query)){
			$ok_ko="la canzone $titolo di $autore è stata inserita";
		}elase{
			$ok_ko="si è verificato un errore";
		}
	}
	//visualizzo il messaggio
	echo $ok_ko;
	//e torno al form pulito dopo 4 secondi
	echo "<meta http-equiv='Refresh' content='4; URL=".htmlspecialchars($_SERVER['PHP_SELF'])."'>"//$_SERVER... come per l'action del form;
}
?>

<!-- qui poi includeremo il menu di navigazione tra gli scripts dell'admin, faremo una pag menu_amm.php -->
<form action="<?php echo htmlspecialchars($_SERVER['PHP_SELF'])?>" method="post" name="inserisci">
<!-- l'istruzione php $_SERVER... ti serve per non dover riscrive l'action se cambi nome alla pagina -->
titolo canzone: <input name="titolo" type="text"><br>
autore canzone: <input name="autore" type="text"><br>
<input name="invia" type="submit" id="invia" value="invia">
</form>
</body>
</html>
<?php
//termine della partre verifica permessi
?>

come al solito testala e sappimi dire
 
Grazie, ma gli errori restano :-(
Parse error: syntax error, unexpected T_VARIABLE in /membri/USER/vot/registra_voto.php on line 52
PHP:
$result_v_ut=mysql_query($query_v_ut);

Parse error: syntax error, unexpected '{' in /membri/USER/vot/inserisci_canzoni.php on line 30
...e questo è un piccolo errore: c'era elase invece di else.
Ho aggiustato

Ma...
Ho aggiustato qualcosa nell'amministrazione e adesso vedo il contenuto.
Ma non aggiunge la canzone al db...

Ciao!
 
Ultima modifica:
ciao
intanto nel file inserisci_canzoni.php correggi
if(isset($_POST['invio'])){//premuto tasto invio
con
if(isset($_POST['invia'])){//premuto tasto invio
per sbaglio ho scritto invio al posto di invia, il name del pulsante di submit è "invia".
poi verifica che i nomi della query e dei campi della tabella siano uguali anche come maiscole/minuscole.

poi cerco di vedere quello di registra_voto.php.
 
ciao
ecco alcuni errori in registra_voto.php

correggi la riga
$id=trim(strip_tags($_GET['id']);
in
$id=trim(strip_tags($_GET['id']));
manacava una parentesi

alla riga
$query_v_ut="SELECT * FROM utenti WHERE id_c=$id AND ip='$ip'"
manca un ; aggiungilo
$query_v_ut="SELECT * FROM utenti WHERE id_c=$id AND ip='$ip'";

lo stesso alla riga
echo $ok_ko
correggi con
echo $ok_ko;

p.s.
dovrebbero sparire gli errori, non so se tutti in quanto sto operando senza aver fatto il db quindi alcuni errori mi possono sfuggire.
 
Nel file inserisci_canzoni.php ho modificato e adesso funziona.
Il problema è che il numero dei voti rimane sempre 0 sia nella pagina che nel db, anche se quando io riprovo a votare mi dice che ho già votato...
Altro problema: provo ad aggiungere un voto manualmente, ma mi mette prima quelli con meno voti e poi quelli che ne hanno di più...
 
ciao
in vota.php
metti nella query
$query_str="SELECT * FROM canzoni ORDER BY voti,data";
la clausola DESC
$query_str="SELECT * FROM canzoni ORDER BY voti,data DESC";

(se al posto di DESC - discendente - metti ASC ottieni l'ordinamento contrario)

altra (mia) dimenticanza nella query di uppaggio di registra_voto.php
$query_up_c="UPDATE canzoni voti=voti+1 WHERE id=$id";
mi sono dimenticato SET, correggi in
$query_up_c="UPDATE canzoni SET voti=voti+1 WHERE id=$id";

p.s.
porta pazienza, anche gli DEI sbagliano:crying:
 
Non ti preoccupare ASSOLUTAMENTE: mi stai facendo un favore!!!

Adesso tutto funziona alla perfezione, tranne la messa in ordine...
Comunque mettendo DISC o ASC non cambia nulla... secondo me le canzoni vengono ordinate per data (boh?).
Un'altra cosa: se uno ha già votato, non posso cambiare la scritta VOTA in NON PUOI VOTARE senza collegamento? Sarebbe molto meglio.
Se è complicato lasciamo stare: l'importante è che l'utente non possa votare più volte una canzone :-).
Ciao!
 
Ultima modifica:
ciao
la query
$query_str="SELECT * FROM canzoni ORDER BY voti,data";
ordina in modo decresente prima per il valore di voti e poi se necessario di data.
(non ti scrivo le date in timestamp ma in formato umano per capirci meglio(considerando però che il formato umano non è,salvo casi particolari, adatto all'ordinamento).
esempio nel db hai (id, titolo, autore, voti, data)
1 Volare Modugno 3 10.12.2009
37 Bella Ciao Pinco 7 01.01.1900
127 Marina Pallo 7 01.12.2005
153 Ho Ho Cin Ciao 0 12.12.1941
189 Ha Ha Cin Ciao 0 14.12.1941
ecc...
ti visualizza (almeno dovrebbe)
1 Marina Pallo 7
2 Bella Ciao Pinco 7 //stessi voti della precedente, ma data precedente
3 Volare Modugno 3
4 Ha Ha Cin Ciao 0
5 Ho Ho Cin Ciao 0 // c.s.
ecc...

se tutte le canzoni hanno lo stesso voto in pratica ordina solo per data
tieni presente che durante l'inserimento la data viene inserita in automatico e in timestamp, il timestamp considera anche il secondo
quindi tra un inserimento e l'altro può passare almeno un secondo, quindi quando inserisci la seconda canzone in questa viene registrato un timesamp maggiore della prima e quindi (avendo entrambe voti ==0) la seconda verrà visualizzata per prima

p.s.
buona pasqua
penso che ci risentiremo verso fine settimana dopo pasqua (salvo non trovi un pc disponibile)

p.s. al p.s.
ora votando ti aggiorna il voto?
 
Grazie per la spiegazione.
Funziona tutto, adesso funge.
L'unica cosa è l'ordinamento: il voto maggiore è l'ultimo e come primo c'è il minore!
DISC o ASC è la stessa cosa.

Allora buonissima Pasqua se non ci risentiamo.
Ciao ciao! :-)
 
Tutto risolto, ordino soltanto per voti.
Ti chiedo l'ultima cosa (a te o a chiunque nel forum): invece di mandarlo alla pagina e da lì registrare il voto, posso mettere al posto del bottone il testo "Hai già votato" direttamente nella pagina vota.php? Grazie.
 

Discussioni simili